I’ve tried vibe coding for fun mostly. But I realized that when done right, it can make some quality software products, especially if you’re a vibe coder with programming knowledge. That’s why I’ve been testing different techniques and found some that work really well.
Plan first, then implement
The planning phase is where you can discuss the requirements
One of the most common mistakes I used to make when vibe coding was to jump right into the implementation from the beginning. In other words, start coding the project right away. The idea was to get it done as quickly as I could. The result? A half-baked product with broken features. That’s because not creating a plan before caused quite a few issues in the long run.
First, I didn’t know how the AI would approach a particular feature implementation. It could go the wrong way. For example, using N+1 queries instead of SQL JOIN (yes, I’ve faced this quite a lot.) In the planning phase, you could tell the model up front the most efficient way to handle these.
Second, I can discuss any changes you want in the planning phase. After reading the plan on how the AI will tackle the request, I can ask it to change anything before implementing it. This saves quite some time because changing something after it has already written the code is quite a hassle.
Thirdly, and this might be the most important, is that, in my experience, if you ask the AI to give a detailed plan for a feature, and then ask it to follow that thorough plan to write the code, the output is significantly better. This might be because the AI has something to follow and guide its decisions. On the other hand, going to direct implementation keeps things a bit blurry.
GitHub Copilot has a Plan mode for this. But in my case, I mostly use the Ask mode for planning and refining that plan.
Choose your models depending on what you want to do
Best models also cost the most tokens
You may feel tempted to always use heavy, thinking models such as Claude Opus. But remember that heavy models will also drain your tokens faster than you can even finish writing the next prompt. That’s why I’ve grouped different AI models depending on the task at hand.
For simple discussions and questions, I use something like Claude Haiku. For planning and architecting, Claude Opus does a great job, just like a senior engineer. For implementing small to medium features, Claude Sonnet or OpenAI Codex is enough. For UI work, I sometimes use Gemini.
Through much trial and error, I’ve found the best use cases for each model. This allows me to save and plan my token usage so that I don’t overuse any for small tasks and don’t end up using a less powerful model for a heavy task.
The good thing about GitHub Copilot is that it has an Auto mode. By selecting it, you let the IDE decide which model to use based on the nature of your request. For heavy tasks, it will automatically switch to a more powerful model.
The vibe coding bubble is going to leave a lot of broken apps behind
Weekend app challenges will leave the App Store full of abandonware.
Add images, documents, and other supplementary resources
One image can literally describe a feature without writing anything
Writing detailed prompts is fine. However, sometimes, it’s difficult to explain all the nitty-gritty details of the feature you’d like to add to your app. This is especially true for vibe coding the UI and the frontend. That’s where adding attachments, such as images, comes in handy.
If you have a Figma or UI design for your product, you can simply take a screenshot and add it with your prompt. In case you don’t have a design, you can use an existing product’s screenshot as a baseline and adjust your prompt to tell the AI model what will differ. For example, if you want to vibe code a productivity app, you can check out other productivity apps for inspiration.
Images aren’t the only things you can add. If you have documentation as PDF files or web links to documentation, you can add them as well. This is useful when you start a new project or create a new chat window. Repeating the same explanation is cumbersome. Having an explanation or requirement document allows you to attach it to the initial prompts so that the AI gets a rough idea of your project.
I Tried Using Vibe Coding to Create My Own Productivity App
Is it possible to create a working app without writing a single line of code?
One thing I do often is ask the AI to create documentation files for every feature I implement. In the long run, this helps quite a lot to keep track of what’s done, how it works, and what’s left. The AI also updates its context and knowledge accordingly.
You do have to keep your token management in mind, though, since adding large files can cost a lot of tokens. Do some trial and error to find the sweet spot between attaching files and writing detailed prompts so you can get the best of both.
A little change in strategy can make a big difference
The latest AI tools, such as Claude and Gemini, have made software development extremely accessible to non-coders. With a few changes in how you give prompts and instructions, you can turn toy projects into more real-world apps.
