From back-Seat to driver-Seat in vibe Coding

I’ve been experimenting with what people call “vibe coding” lately. Before that I relied on aider.chat to tweak snippets of code—it was terminal based, uses API keys and is really really cheap. comparing to the Windsurf pro plan which gives about 500 credits I came to realize that the vibe coding experience sold by cursor,windsurf and others is really really expensive.

Adjusting Tailwind styles, checking the result, rolling back and rephrasing … the credits vanish in no time. Yet most vibe-coded apps look the same because thats the common design LLMs tend to generate. Maybe vibe coders don’t care about the design too much, they just want something that works.

Yesterday I saw a tweet from DHH explaining that to him, vibe coding is different: he writes the code, and the AI explains the concepts. That struck me as the right way to vibe code. Because if the AI is teaching you programming, you wouldn’t really need to spend that many credits on simple things at one point. You would just know. But this is a conflict of interest to the people selling vibe coding tools, because they earn more profits if you just dont know and rely fully on their tools.

This brought me to the phrase of “back-seat driving”. You tell the taxi driver every turn to take. You’re on the back seat, explaining every move. Or you sit back, trust the driver, and let them navigate. Vibe coding as it’s usually sold is the former: you’re in the back seat, barking instructions, paying for each minor detail with credits. and it doesnt matter if its a small or big addition, they would still take 1 credit from you.

But it should be noted that this is different in aider.chat and some other tools (which I wouldnt categorize as vibe coding) because its API based and you spend only what you consume.

The better approach in vibe coding is to flip the roles. Take the wheel yourself. Use the AI from the back seat, asking for explanations, ideas and more. You steer and the AI assists you, tells you whats wrong and right and why something should be the way it is.

When your codebase grows, it’s impossible for an LLM to grasp every context from all the functions in the code base. If you let it fully drive your codebase, you are so lost about whats in your own codebase and if the LLM cant figure it out you are basically stuck.

But if you drive, you’ll know why each function exists and how the modules fit. But most importantly you accumulate so much programming knowledge.

I also think that AI is the best project based learning tool. Learning through projects is a great idea that everyone recommends and vibe coding this way is exactly that.