Skip to main content

Stop Vibe Coding and Start Vibe Engineering

·816 words·4 mins
Anthony Scott, PhD
Author
Anthony Scott, PhD
A little bit about you
Post Image

Stop Vibe Coding. Start Vibe Engineering.
#

I’ve been building with AI coding models for a while now. Long enough to make every mistake, watch the hype cycle spin up, and land on what actually works.

Most people are using these tools wrong. And I don’t mean wrong in a “you’ll get an error” way. I mean wrong in a “you’ll get something that runs and still want to throw your laptop out a window six weeks from now” way.

The Vibe Coding Trap
#

You know how it goes. You have an idea. You open a chat and start typing.

“Build me an app that does X.”

It builds it. You’re amazed. Then:

“Actually, add this feature.”
“Oh wait, also do this.”
“Hmm, this part’s broken, fix it by doing that instead.”
“New idea, can it also do this other thing?”

Two hours later you have a working app. And under the hood? Spaghetti. State scattered everywhere. No clear architecture. Inconsistent patterns across files that got written in five different sessions with zero shared context.

The app works until it doesn’t. And when it doesn’t, good luck.

This is vibe coding. You’re iterating by feel, trusting the AI to hold it together. Sometimes it does. For anything beyond a weekend toy, it usually doesn’t.

What Engineering Actually Looks Like
#

Before AI, nobody sat down to build a real application and just started typing code. You thought it through first. Wrote some things down. Made architecture decisions before they got expensive to undo.

AI doesn’t change that. It just makes it easy to skip, because the AI will happily write code without a plan and it’ll look good right up until it doesn’t.

So here’s what I do now.

Step 1: Think before you build.

Start a fresh conversation with the model. No code yet. Ask it to think through the project with you. Describe what you’re building, what it needs to do, who uses it. Let the conversation surface edge cases, constraints, and questions you hadn’t thought of. By the end you want a real requirements document, a clear statement of what success looks like, not just a list of features.

Step 2: Get the architecture on paper.

Same session. Work through the high-level design. What are the major components? How do they talk to each other? What are the key tech decisions and why? Have the model write this up as a proper document. Read it. Push back where something feels off. Approve it when it’s solid.

That document becomes your north star. Every code decision that follows should trace back to it.

Step 3: Break it into stories.

Yes, user stories. I know. Bear with me.

Have the model take your approved plan and break the implementation into discrete, workable stories. The key move is also having it build a dependency graph, which stories need to be done before others can start. That gives you a sequenced build order that actually makes sense instead of a random pile of tasks.

Step 4: Give every story its full context.

This is the part most people skip, and it makes the biggest difference.

At the top of each story, include a summary of the full application context. What you’re building, the architecture decisions, the patterns in use, how this story fits into the whole. When you hand that story to the AI to implement, it doesn’t need to guess. It knows exactly what kind of code to write and why.

Without this, every coding session starts cold. The model has no memory of the decisions you made or the direction you’re heading. So it improvises. That’s how you end up with inconsistent, incoherent codebases even when every individual feature works fine in isolation.

Why Bother
#

For quick experiments and throwaway scripts, vibe coding is great. Fast, fun, low stakes.

But once you’re building something you want to maintain, scale, or hand off, you need structure. Not a lot of it. Just enough discipline to keep things coherent across sessions.

Here’s a side benefit nobody talks about: this approach actually burns fewer tokens. Fixing spaghetti code and re-explaining context in every session is expensive. Starting with a solid plan means the AI writes better code the first time, you iterate less, and you spend fewer cycles on cleanup.

Better output. Fewer tokens. A codebase you’re not ashamed of.

The Actual Shift
#

An AI coding model is an incredibly fast, capable engineer with no memory and no ego. Give them a clear spec and they do great work. Say “just make it work” and react to whatever comes back, and you get chaos at speed.

Vibe coding gives you speed. Vibe engineering gives you speed and something you’re proud of six weeks later.

The tools are good enough. The process is what’s missing. Build like an engineer and let the AI handle the implementation.