Vibe coding delivers enormous productivity , and it feels great. But what makes it most maddening is not that AI cannot write, or writes badly.
It is that you personally fixed a fiendish bug last Friday night. On Monday morning, in a good mood, you ask AI to casually add a button—and it “helpfully” wipes out your handwritten code wholesale, as if it were an obsolete draft.
That feeling of being stabbed in the back by a teammate is not unique to AI.
Engineers experienced it thirty years ago.
In the 1980s and 1990s, the giants of “computer-aided software engineering (CASE),” led by KnowledgeWare , sold the exact same beautiful dream to the world: analysts would only need to draw diagrams on a screen, and the system would automatically generate code. At the time, everyone thought programmers were genuinely about to lose their jobs.
That billion-dollar bubble ultimately died from an unsolvable problem: round-trip engineering .
Machine-generated code looked beautiful, but as soon as a human engineer entered the real world and manually changed a few lines of boundary conditions or business requirements in the source code, problems began to emerge. There is a difficult-to-handle “loss of semantics” between natural language (or an architectural diagram) and the underlying implementation code. AI has no idea why you manually changed those two lines; from its probabilistic perspective, your hard-won work may be nothing more than disposable noise.
When manual intervention destroys the perfect automated loop, we are forced into a devil’s bargain: do you spend three times the effort fighting AI for control? Or do you simply stop resisting and hand everything over to the black box?
So more and more people choose compromise, and even learn to console themselves:
“It’s okay if I don’t understand the underlying code. It works now.”
But every engineer who has lived through a P0 knows in their heart: