Part I
The Essential Bottleneck & The Illusion of "Vibe Coding"
Generative AI has made writing code almost free, and that is exactly why so many AI-built applications fail. This part starts with an honest account of my first attempt at “vibe coding.” I wrote a multi-page prompt and got back an application that compiled, rendered and passed all its tests, yet saved nothing to the database and skipped most of what I had asked for. Chapter 1 explains why. Brooks’s forty-year-old distinction between accidental and essential complexity still holds. AI has nearly eliminated the accidental part, typing the code, and left the essential part untouched: deciding precisely what to build. A rough token calculation shows how expensive it is to discover your requirements in the code rather than in the specification. And an AI with none of a team’s unwritten knowledge fills every gap with the average of the internet.
The next two chapters turn the diagnosis into a method. Chapter 2 looks at the safety net that has quietly protected human teams for decades: acceptance criteria, design reviews, tribal knowledge, code reviews and independent QA. It shows how AI removes every layer of that net, down to tests that faithfully confirm the AI’s own guesses. The answer is two behavioral rules, strictly follow the SDLC with three hard gates, and ask, don’t assume with a decision log. Together they turn the eager intern into the grumpy senior developer who asks a dozen awkward questions before writing a line of code. Chapter 3 puts that grumpy senior to work. It structures requirements around Domain-Driven Design and audits them with a ten-point adversarial checklist covering lifecycles, boundary values, formulas, time zones, concurrency and the requirements that aren’t there. Nothing reaches design until every gap is closed.