Vibe Coding Works Until You Have to Read the Code
Vibe coding is fine for code you’re going to throw away, and most of the fighting about it is really people disagreeing about which code that is.
Last month I needed a script to pull a CSV off a shared drive, reshape three columns, and push the rows into an API. I described it, ran what came back, fixed one wrong column name, and never read the rest. It worked. It ran twice and I deleted it. Reading that code line by line would have cost me an afternoon and bought me nothing.
Now the other case. Something breaks at 2am and you open a file you technically wrote and have never read. There’s a retry with a three second backoff. Why three? No idea. Something in the training data thought three was a sensible number. Maybe it’s load-bearing. Maybe it’s decoration. You can’t tell by staring at it, because telling requires a model of how the system behaves under load, and you don’t have one. Building that model was the work you skipped.
So the trade isn’t about quality. The generated code is usually fine, better than what a tired person writes at the end of a Thursday. What’s missing is the map.
You used to get the map for free. You’d write something clumsy, break it, fix it, rewrite half of it, and by the end you knew where everything lived and which parts were fragile. Most of that felt like wasted motion at the time. It wasn’t. The knowing was a byproduct of the fumbling, and it arrived whether you wanted it or not.
The other thing nobody mentions is that the bottleneck just moves. It used to be typing. Now it’s reading. And reading 400 lines somebody else wrote is genuinely harder than writing 400 lines yourself, which is why code review has always been the chore everyone does badly. Expecting people to review more code, more carefully, when the volume just went up ten times, is a plan that assumes humans are different than they are. They run it, it passes, they ship.
None of this makes the tool bad. It makes it a tool with a specific shape. Good for the thing you’ll delete: the spike, the one-off report, the glue between two systems that will both be replaced anyway. Worse for anything you’ll be paged about.
The rule I use now: if I’d be annoyed to read it in six months, I read it today.