Vibe Coding
It seems everyone's talking about “vibe coding” and how anyone can write Space Invaders in an afternoon. That's great, if you want Space Invaders, but what if you want to create something that's never been done, at least not in the way you envision it? No AI agent is going to write that for you, precisely because it's never been done.
Software developers, or any other knowledge workers, are in no danger of losing their jobs yet. Unless you're already an expert in your field, an LLM is of no use to you, because you won't know what questions to ask it or what prompts to give it. You won't even know what you're asking for!
Agentic coding is not a hands-off process. I've leaned into coding agents for my last few personal projects, and I have the most success when I engage the agent at four levels:
- Strategic: I'm the CTO of my project and understand the overall mission.
- Tactical: I'm also the product manager and define the requirements.
- Operational: I'm the architect and set the tech stack.
- Execution: I'm the development lead and drive the implementation.
I engage the AI agent at each of these levels, but at no time do I leave these tasks solely to the agent. I have to keep them in my mind AND in the agent's “mind” at all times, or else I won't get the product I set out to create.
It's not just a new way to code. It's a new way to lead projects.
My approach so far is this:
First, I switch the agent into “ask” mode, since every agent I've tried is dying to write code immediately. I bounce the idea off of the agent until it becomes clearer in my own mind. In other words, I'm rubber-ducking with the agent.
Next, I switch the agent back into edit mode. I have it begin writing specifications in a “docs” folder, in the form of Markdown files. There's an overall requirements document, a design document, and then many documents covering various aspects of the system. At any inflection point, when I understand the system better or I make a significant change, I have the agent update all of the docs. That way, when I want to create a new chat, I have the agent go and read all of the docs so that it has a full understanding of what we're doing.
Even with that understanding, the agent will eventually get stupid. I never just tell the agent to implement something, then go watch a YouTube video. I watch the agent's thought output like a hawk. If I detect that it's going off the rails, I hit the stop button and put it back on track. Otherwise, the code will go so far out of spec that I'll have to delete it and start over.
I also can't ignore the code. I step through it and read it and understand it at each level. The agent often tells me it's doing one thing when in fact it's doing something else entirely. I've caught it hard-coding output to fake what I want instead of actually writing the code to do what I want.
I think we have a LONG way to go, and we're just beginning to see the potential of this technology.
Note: This article first appeared as a post on LinkedIn.