Skip to content

Back to Articles

4 min read ·

Vibes don't carry a pager

Vibe coding is a fine way to build software that nobody depends on. Once a program has users, you own every line of it, typed or accepted, and code you cannot explain is a liability with a timer on it.

Andrej Karpathy named the practice on February 2. He described talking to Cursor Composer by voice, accepting every change it offered and pasting the error messages straight back in, and he called it a mode where you "fully give in to the vibes, embrace exponentials, and forget that the code even exists." He was clear that this was for throwaway weekend projects. Five weeks later, people use the phrase for code that has users, and the weekend part has dropped off.

On the weekend, he is right. If a script runs once and goes in the trash, reading it line by line is a hobby. I use Copilot-style autocomplete and a chat model. But at my university IT job I still type the code I ship, and I can tell you why each line is there.

Users end the weekend.

I wrote the glue between two student scheduling systems, Starfish and iAdvise, and more than 1,000 student appointments a day depend on it. If that code drops a booking, a student shows up for an appointment that does not exist.

What a vibe session produces is weekend code. It runs. Nobody can explain it, including the person who shipped it. Putting it in front of users is like signing a lease because the apartment had good light.

Forgetting the code does not delete the work of understanding it. It reschedules it. You will read every one of those lines eventually, on the night something breaks, with a user waiting and no memory of why any of them is there, because you never had one.

We already forget code, and we are right to. I do not review the assembly my C++ compiler emits, and in November I argued that the compiler is the only code generator I trust. Decades of tests stand behind it, and a team of people who are not me carries the pager for its bugs. A language model has neither. In January, three engineers at Answer.AI wrote up a month with Devin, Cognition's coding agent. Of 20 tasks it completed 3 and failed 14, and they could not predict which tasks would work.

You cannot refactor code you have never read, and the numbers already point that way. GitClear analyzed 211 million changed lines from 2020 to 2024. In 2024, for the first time, copy/pasted lines outnumbered moved lines, the ones people shift around when they refactor, and duplicated blocks of five or more lines became about 8 times more frequent. GitClear sells code-analysis tools, and its report shows a correlation with AI assistants, not a cause. It is still the shape I would expect.

Yesterday, at a Council on Foreign Relations event, Dario Amodei said he expects AI to write 90% of code in 3 to 6 months, and "essentially all of the code" in 12. He may be right about the typing. He added a sentence, though.

The programmer still needs to specify what are the conditions of what you're doing, what is the overall app you're trying to make, what's the overall design decision.

That caveat is what I get paid for.

Two weeks ago Anthropic released a research preview of Claude Code, an agent that works in your terminal and runs your tests. If an agent belongs anywhere, it belongs there, next to tests that a human wrote and understands. Karpathy's loop had one check, the error message, and he pasted it straight back in.

Shipping weekend code to people who depend on it is a small dishonesty. You are telling them the thing works, when all you know is that it did not crash while you were watching.

Keep weekend code on the weekend.