I Tried Vibe Coding for Three Months. Here Is What Actually Works.
The viral videos make vibe coding look effortless. That is not what happened when I tried it. Three months of productive frustration taught me the real pattern.
I Tried Vibe Coding for Three Months. Here Is What Actually Works.
I want to push back on something.
The vibe coding content online — the viral videos, the threads, the "I built an app in 20 minutes" posts — all makes it look effortless. Open Cursor, describe your app, watch it appear.
That is not what happened when I tried it.
I spent three months in what I would describe as productive frustration. Things worked sometimes. Not consistently. Not reliably. The difference between a session that shipped something and a session that produced three hours of nothing seemed random.
It was not random. I just did not understand the pattern yet.
Here is what I eventually figured out.
The sessions that worked were the ones where I knew, before I typed anything, exactly what one specific thing I was asking for. Not a feature. Not an area. One thing, described precisely enough that I could have hired a junior developer with those exact instructions and gotten what I wanted.
The sessions that failed were the ones where I had a vague idea and asked the AI to figure out the rest.
Vibe coding is real. It works. But it is not effortless — it is skill-ful. The skill is not prompting. The skill is knowing what you want well enough to describe it.
Five questions I now answer before every vibe coding session:
What exactly am I building? "A feature" is not an answer. "A form at /settings that lets users update their display name and email, connected to the users table in Supabase with RLS enabled" is an answer.
What is my stack? Cursor can see my files, but it cannot read my mind about which tools I want it to use. Telling it "I am using Next.js 14 App Router, Supabase, Tailwind CSS" takes five seconds and prevents it from picking alternatives.
What do I already have? If I have already built auth, I do not want Cursor to rebuild auth. I tell it: "Auth is already set up using Supabase Auth. The session is available via useSession hook from lib/auth.ts."
What should it not do? My two rules: "do not install any packages without telling me first" and "only change the files I mentioned." Without these, Cursor will helpfully improve adjacent code in ways that break things.
What does success look like? "I can update my display name, click save, and see the new name when I refresh." Specific and testable.
When I answer these before I type, the session usually produces something usable. When I skip them and go vibes-only, I get three hours of almost-right.
Briefli is the shortcut — it asks these questions as an interview and writes the prompt for you. But even without Briefli, writing down the answers before you start will change your results. Try it on your next session and see.
briefli.io → First prompt free.
Stop re-writing prompts. Let Briefli build them for you.
Two-minute interview → precise, first-attempt prompt. Free to start.
Try It Free →