Why I don't vibe code, normally

Vibe (agent) coding is fine when you don’t care about the details. But for most of the software I develop, I care about the details. The details matter, especially over long horizons (to use a term agent coders like to use.)

There are several broad ways that details matter. The mental model of the code in my head needs to be detailed for me to know how to guide the code generator. The shape of the code down to the names of the variables and the composition of data structures and the control flow matter. Entropy creeps in if care in such things is not taken.

LLM based agents are fundamentally ill suited for the kind of work that master programmers have always done–the creative work of building abstractions in their heads and translating those abstractions into code that captures those abstractions with fidelity.

Vibe coding relegates this work to a machine that is fundamentally ill suited for such creative work. LLMs only know what they have already seen. They are extremely good at producing work that is based on what exists, which is why I use them every day to turn my ideas into code. They are much better at the mechanics of reading and writing code than I am. I am a much better at conceiving of new software designs than they are.

The software world is split into tortoises and hares. The hares are the programmers who fire up a dozen agents to do their bidding. They run fast in a myriad directions with the hope that they will reach their intended destination quickly. The tortoises are the programmers who request and review a change at a time and often end up making corrections before moving on to the next task. I am a tortoise.