Gemini 3.8 Flash can help you get from an idea to a working prototype quickly. Getting reliable results, though, depends on how you define the task, manage revisions, and test the output.
This guide covers a practical workflow for using it: where to start, how to write useful prompts, and what to do when a debugging conversation stops making progress.
The observations come from a session building three small games in Google AI Studio. The prompt templates below are reusable examples based on those lessons.
The quick version
- Start with a small feature you can test.
- Try medium thinking first; evaluate whether higher thinking improves your particular task.
- Include expected behavior and constraints in the prompt.
- Describe visual choices explicitly.
- When a fix fails repeatedly, ask for a diagnosis before another patch.
- Check functionality separately from appearance.
The video walkthrough shows the builds and the issues that came up:
1. Start with a task you can verify
Gemini 3.8 Flash is available through Google’s developer tools, including Google AI Studio. For current capabilities and availability, see the official model documentation.
During my session, I could build using free AI Studio access without entering a credit card. Treat that as an account of the session: access limits and API billing are separate things to check before relying on it for ongoing work.
For an initial project, choose something with a clear finish line:
- A form that validates a few inputs.
- A searchable list using sample data.
- A single interactive page.
- One feature in an existing application.
“Build a project management app” leaves many decisions unresolved. “Build a task list with add, complete, and filter actions” gives you something you can inspect.
You can add complexity after the basic behavior works.
2. Use medium thinking as a starting point
Higher thinking sounds like the obvious choice for coding. My debugging session gave me a reason to question that default.
A racing prototype registered a collision when there was no other car on the road. On high thinking, the model repeatedly attempted a similar unsuccessful fix. After I switched to medium, it changed approach and resolved the issue.
That is one observation, not proof that medium is universally better. It also doesn’t establish a fixed percentage of token savings.
My practical recommendation is to start with medium for small, well-defined tasks and inspect the result. Try higher thinking when a task needs more analysis, then compare whether it produces a better outcome.
Watch for repeated failure as well as usage. A long response doesn’t tell you whether the diagnosis is improving.
3. Give the model acceptance criteria
A useful coding prompt explains how you will decide whether the result works.
Here’s an example:
Build a task list using HTML, CSS, and JavaScript.
Features:
- Add a task.
- Mark a task complete.
- Filter by all, active, or completed.
- Save tasks in localStorage.
Acceptance criteria:
- Reject empty or whitespace-only tasks.
- Preserve tasks after a page refresh.
- Keep each task's completion state when switching filters.
- Show an empty state when a filter has no matching tasks.
Constraints:
- No external dependencies.
- Support keyboard interaction.
- Make the layout usable on mobile.
Explain how to run it and how to check each acceptance criterion.
This makes several otherwise hidden decisions explicit.
It also improves follow-up requests. If filtering breaks, you can point to a specific requirement instead of asking the model to “make it work.”
Keep the first request focused. A small feature with clear checks is easier to evaluate than a large application with loosely defined behavior.
4. Specify the design instead of asking for “modern”
AI-generated interfaces can look convincing while feeling surprisingly similar.
My three game prototypes shared visual tendencies despite being different genres. Describing the palette, viewing angle, and mood more precisely helped create variety.
For a web interface, try instructions like:
Visual direction:
- Warm white background and dark gray text.
- Muted blue for primary actions.
- Compact layout with readable spacing.
- Clear borders around inputs.
- Minimal decoration.
- Visible keyboard focus states.
You can also describe the intended user experience:
This is an internal tool used repeatedly throughout the day.
Prioritize scanning, readable tables, and quick access to actions.
That gives the model a reason for the design choices.
Use an actual screenshot when you have a specific visual target. When you don’t, a few concrete constraints are more useful than several broad adjectives.
5. When debugging stalls, ask for evidence
Repeatedly asking “try again” can keep a conversation circling around the same assumption.
A better follow-up includes:
- The steps that reproduce the issue.
- What you expected.
- What happened instead.
- What the previous fix failed to change.
For example:
The previous patch did not resolve the issue.
Steps to reproduce:
1. Add two tasks.
2. Mark the first task complete.
3. Switch to the active filter.
4. Switch back to all tasks.
Expected:
The first task remains complete.
Actual:
Both tasks appear active.
Before editing:
- Trace where completion state is stored and updated.
- Identify the likely cause and the code supporting that diagnosis.
- Explain why the previous patch did not address it.
Then propose the smallest relevant fix.
The purpose is to get a diagnosis you can assess.
If the model claims a fix works, ask what it actually checked. A suggested test and an executed test are different pieces of evidence.
6. Keep the current project state clear
As you revise a project, the conversation accumulates obsolete instructions, failed patches, and decisions you have changed.
When the model starts repeating earlier work or losing track of requirements, summarize the current state:
Current goal:
Add filtering to the existing task list.
Already working:
- Creating tasks.
- Toggling completion.
- Saving and loading tasks.
Current issue:
Switching filters changes completion state.
Preserve:
- Existing storage format.
- Existing keyboard interactions.
Relevant files:
- app.js: state and event handlers.
- index.html: filter controls.
A short summary helps make the next request unambiguous.
If you start a fresh chat, include the relevant current code too. The summary explains the task; the code lets the model investigate the implementation.
7. Test behavior separately from appearance
The collision bug in my racer was a useful reminder: a polished screen can still contain incorrect logic.
For a small web application, check a few categories:
| Area | Useful checks |
|---|---|
| Main flow | Can the user complete the intended task? |
| Input | What happens with empty, invalid, or unusually long values? |
| State | Does behavior remain correct after filtering, editing, or refreshing? |
| Errors | Does the interface handle a failed request or missing data? |
| Interaction | Can you use the main controls with a keyboard and on a small screen? |
Choose checks that fit the feature. You don’t need an elaborate test suite for every prototype, but you do need evidence that its important behavior works.
If a bug returns after a later change, a focused regression test can help catch that specific failure.
Where Flash and Pro fit
For my workflow, Flash is useful when the task is concrete and I can inspect the result quickly. I still prefer Pro for longer planning discussions and explanations.
That led to a simple personal rule: plan with Pro, build with Flash.
It isn’t a universal model ranking. Choose based on the next task and the quality of the results you’re getting.
For a small build, the most useful loop is:
- Define one behavior.
- Generate an implementation.
- Run it.
- Report a specific failure.
- Verify the fix before expanding the scope.
Gemini 3.8 Flash made the first implementation easy to reach in my session. Clear requirements and careful feedback made that implementation more useful.
What has helped your AI coding sessions most: better initial prompts, smaller tasks, or more specific debugging feedback?
Top comments (1)
Some comments may only be visible to logged-in visitors. Sign in to view all comments.