Software Engineering: Code Is Read Far More Than It Is Written
Most engineering time goes on code that already exists. Once you accept that, the practices that look like fussiness turn out to be straightforward economics.
Most engineering time goes on code that already exists. Once you accept that, the practices that look like fussiness turn out to be straightforward economics.
Every complex system that works turns out to have grown from a simple one that worked. Designing the finished version from scratch doesn't just take longer — it has a startlingly poor success rate.
A lily pad covering a pond on day thirty covered half of it on day twenty-nine. Nothing about its growth changed — only the base it grew from. Human intuition fails at this reliably and expensively.
A factory running at 98% capacity can still fail to deliver. Optimising everything except the bottleneck is not progress — it is an expensive illusion.
Assign four teams to build a compiler and you get a four-pass compiler. The seams in any system fall exactly where the seams between its builders already were — and rewrites that ignore this get undone.
A bicycle left in a field rusts; a rusted bicycle never un-rusts. That asymmetry governs warehouses, codebases, and institutions just as strictly as it governs steel.
A two-page report takes a week if you have a week and a month if you have a month, and comes out about the same. Where the extra time goes is more interesting than the fact that it vanishes.
Cunningham's metaphor was never about bad code. It was about a rational trade — ship now, pay interest later — and the interest is levied on every future change you make.