Vibe Coding + Software Engineering: A Partnership, Not a Competition
I'm hoping we can move past the "true vibe coding means you don't care about the code" debates.
I find two things to be true:
The capabilities of full vibe coding are growing
Building with AI still requires good software engineering
Claude Leveled Up
Using Claude Code and the new Opus 4 model, I was able to create a full stack app bootstrap with just prompts. Which I suspect can be productionized with a bit more work (AI-assisted or not).
I couldn't do this with previous models.
I tried, but Claude stumbled implementing the app with the particular stack of libraries that I picked out for the project.
Several times I wiped the repo and started fresh using different techniques.
Each time I started with different versions of the generated project plan.
At one point I was using multiple agents (e.g. frontend expert, backend expert, conductor).
I’ve tried techniques where I direct Claude to take things one step at a time using custom commands (e.g. review the current implementation so far, plan out the implementation of the next story, review and provide feedback to the backend expert).
Ultimately, each implementation hit a wall and just never quite got to a functioning bootstrap using this complex stack.
With Opus 4, Claude was able to fully deliver on the task.
Generated the project plan - Result of a simple prompt:
Think very deeply and research as needed to come up with a plan to build an entire full stack, monolithic, hello world, web app using this stack:
- React TypeScript frontend with Vite
- FastAPI Python backend
- Better Auth authentication service (https://www.better-auth.com/docs/introduction)
- Docker Compose for local development
- Ready for deployment to Azure
- PostgreSQL database and Redis cache - Shadcn for the UI components (https://ui.shadcn.com/)
We want absolutely minimal features so that this project can act as a bootstrap for any app in the future:
- Signup and login - Persist some basic user data
- Persist some basic global data that any logged-in user can mutate (for example a counter that anyone can click to count up)Generated the project - The result of a session that was literally 1% away from compacting.
“No, really, there is a library called Better Auth” - This was the trickiest part for past attempts, but Opus 4 mostly got the idea after this one session.
Implement the remainder of real auth - And now we have the full stack running as expected (locally) with this session.
Are Vibes All We Need?
The bootstrap experiment basically shows that Claude can generate functioning software, but with some caveats.
Firstly, my mother couldn’t do what I did. Heck, my younger brother couldn’t even boot up Claude Code if I told him vibes was all he needed to build apps now. So there is some barrier to entry when it comes to knowing what to build and how, even if we aren’t writing the code directly.
Secondly, its not production ready. That’s not to say I couldn’t get it ready, but that will take some more engineering.
And lastly, there’s no reason I (or you, or any other software engineer) couldn’t write and edit the code alongside Claude (or whatever Genie you choose). You can go as slow or as fast as you’re comfortable with. You can break things down to the tiniest of steps or yolo it with big sweeping changes that you then shape to your liking.
What I’m saying is, there’s no need to fear vibing AND there’s plenty of engineering to be done.
Still Foggy
Take my take with a pinch of salt. Everything is changing rapidly and no one can say for sure where we’ll end up once the fog clears. My gut tells me to keep an open mind and not to stick to dogmatic “truths” of the past when it comes to software engineering best practices. While it also is telling me that what got me here is going to help me even if the exact practices change.