Everything I Added Was Reasonable. Together They Buried Me.

Almost everything I ever added to this project was, in the moment I added it, a perfectly reasonable thing to add. Every feature had a real justification. Every extra case I handled was a case that genuinely came up. Every small improvement improved something. And the sum of all those individually sensible additions was a system so heavy, so tangled, and so wide that it could barely move at all.

The unsettling part is that nobody ever decided to make it that way. There was no moment of bad judgment to point to. It simply accreted, one entirely defensible decision at a time, into something no one would ever have chosen on purpose.

Every addition is locally justified

This is the heart of why scope creep is so hard to resist: it never arrives as a single bad decision. It arrives as a long, unbroken series of good ones. Each new feature is useful. Each additional edge case is real. Each “while I’m in here, I might as well also” improvement makes genuine sense in the moment you make it. You are never, at any single step, doing something you can recognize as wrong.

That is precisely what makes it so insidious. If scope creep felt like a mistake while you were doing it, you would stop. It does not. It feels like diligence, like thoroughness, like responsiveness, like building. Every individual yes is easy to defend, and the damage is done not by any one of them but by the fact that you kept saying yes, reasonably, for a very long time.

The cost you cannot see at the moment of adding

The accounting is rigged, and it is rigged in a specific way. When you add something, its benefit is vivid and immediate — you can see exactly what it gives you. Its cost, meanwhile, is nearly invisible at the moment of decision, because most of the cost has not happened yet.

Because every addition carries ongoing costs that arrive later and quietly. More surface area. More interactions between parts. More things that can break. More that has to be understood by anyone who touches the system, including future you. More to maintain, forever. The benefit is a one-time, visible gain. The cost is a permanent, invisible tax, paid in small installments long after the decision is forgotten. So at the instant you choose, the visible benefit almost always outweighs the visible cost — not because the trade is good, but because half of the cost is hidden from the moment you are making the choice.

Locally reasonable, globally a mess

The end state of all this is a system in which every individual part is justified and the whole is a disaster. This is the unmistakable signature of accretion, and it has a cruel property: there is no single thing you can point to as the mistake. The mistake is the accumulation itself, smeared across a hundred separate decisions that were each, taken alone, completely fine.

This is genuinely disorienting to confront, because every instinct you have for fixing problems is built around finding the bad part and repairing it. Here there is no bad part. You go looking for the component that ruined everything, and you cannot find it, because no component ruined everything — they all did, a little, together. You cannot debug your way out of a problem whose cause is distributed evenly across everything that looks individually reasonable.

The drift always points toward more

Underneath this is a kind of gravity that, in any project, points steadily in one direction: toward addition. Adding things feels like progress. It is visible, it is satisfying, it produces artifacts you can see and point to. Building more feels like working, because it is.

Subtraction feels like the opposite of all that. Removing something feels like loss, like undoing effort, like going backwards. And critically, it never feels urgent — because nothing breaks at the moment you fail to remove something. The cost of not subtracting is invisible and deferred, exactly like the cost of adding, which means there is never a forcing function. So in the absence of deliberate resistance, a system only ever accumulates. The drift is one-directional, and the default outcome of letting it run is the buried, unmovable mess.

Subtraction is a deliberate and uncomfortable fight

Removing things turns out to be much harder than adding them, and mostly for reasons that have nothing to do with difficulty and everything to do with psychology. When you remove something, you are destroying work that someone did, often you. You are tacitly admitting it should not have been there. There is no satisfying sense of creation in it, no new artifact to admire, none of the small reward that adding provides. It is pure, unglamorous, slightly painful undoing.

But the willingness to do it anyway — to cut features, to kill components that no longer earn their place, to delete things that work fine but are not worth their weight — is one of the only forces capable of counteracting the relentless drift toward unmanageability. Subtraction does not happen by default, ever. It happens only when someone decides, against every comfortable instinct, to fight for it.

Saying no is itself a feature

The reframe that helped most was realizing that some of the most valuable design decisions I ever made were the things I decided not to do. Every reasonable addition you decline is weight you will never have to carry, surface you will never have to defend, complexity you will never pay for across all the months that follow.

A clear sense of what a project is not turned out to be just as important as a sense of what it is — and far harder to hold onto, because maintaining it means repeatedly declining things that sound genuinely good. Every exclusion is a small, ongoing act of resistance against a perfectly sensible-seeming idea, and you have to perform that resistance over and over, forever, with no reward for it except the absence of a problem you will never get to see you avoided. Saying no leaves no artifact. That is exactly why it is so undervalued, and so essential.

The deeper lesson: protect the whole from the parts

What it all comes down to is that I had been optimizing every decision locally — is this particular addition good? — when the question that actually determined the project’s fate was global: what does this do to the whole? Those are different questions, and they have different answers far more often than I had assumed.

A system is not simply the sum of its locally-good parts. It has its own health, its own weight, its own coherence — properties that belong to the whole and that no single decision is responsible for, yet every single decision affects. Guarding that whole, against a steady and genuinely reasonable stream of requests to add just one more thing, turned out to be most of the actual job. I had thought my work was making good individual decisions. It was really protecting the system from the accumulated weight of a hundred of them.

— No signals, no returns, not investment advice.