Vibe coding proved AI could write software fast. It also proved that fast, unspecified software is a liability — churn, duplication, and endless "almost right" rework. This guide lays out the operating model on the other side of the hangover: keep the speed, put the discipline back.
The vibe-coding way: talk to the model, accept the suggestions, and "forget the code even exists" — great for a prototype, quietly disastrous for a system you have to run, secure, and maintain, because nobody ever decided what it should actually do.
The spec-driven way: make the decisions first and write them down, then let AI do the fast part — so the spec becomes the acceptance criteria, the review checklist, and the source of truth, and the rework stops.
AI made generating code fast and near-free. The scarce, expensive work is deciding what to build — which still needs human judgment about what the business actually needs.
The optimal split inverts: people spend their attention on the spec — the decisions, constraints, and definition of done — and let AI spend its abundant capacity on implementation.
A clear, agreed spec is the highest-leverage artifact a team produces. It's what tells you exactly how an "almost right" output is wrong — and it's what GitHub's Spec Kit and AWS's Kiro now encode in tooling.
Before generation, write down what the feature must do, the constraints it must respect, and how you'll know it's done. Short and clear beats long and vague this is human judgment, not a delegation to the model.
Turn the spec into an approach: architecture, interfaces, sequence. This is where you catch the design problems that would otherwise surface as churn after the code exists.
Decompose the plan into small, verifiable units — each small enough to review honestly and test independently. Small-batch discipline, applied to AI-generated work.
Let AI generate the code, and hold every output accountable to the spec. Measure the payoff in rework and change-failure rates, not in paperwork.
Software isn't the code; it's the decisions the code encodes. Vibe coding let teams generate code without making the decisions — and the churn and rework are the bill. Spec-driven development keeps the speed, the low friction, and AI doing the typing, and restores the one thing that was missing: thinking clearly about the problem before solving it.
It started as one — Andrej Karpathy's February 2025 post — and became widespread enough to be named Word of the Year. The underlying practice of generating code without reading or specifying it is real, common, and, for production systems, genuinely costly.
No. Specs here are lightweight, living, and matched to risk, and implementation is fast and iterative — small-batch, spec-first agile, not big-upfront-design waterfall.
VPs of Engineering, Heads of Platform, and engineering directors keeping AI-speed delivery from turning into an unspecified codebase they no longer understand.
Done wrong, yes. Done right they speed you up by cutting the "almost right" rework that 66% of developers say costs them extra time. Aim for the shortest spec that removes ambiguity.
GitHub's open-source Spec Kit structures a Specify → Plan → Tasks → Implement workflow, and AWS's Kiro is an agentic IDE built around spec → design → tasks → implementation. You can also run the practice with no special tooling.