← All posts

Most Systems Are Just Unmade Decisions

A lot of "complexity" is just leadership cowardice wearing a technical fake mustache.

You open a product and it asks you twelve questions it should have answered itself. You start a workflow and hit three branches that all mean, in plain English, "we never decided how this should work." You read documentation that sounds like a hostage note from a team that shipped governance instead of a point of view.

That is not complexity. That is deferred decision-making.

Real complexity exists. Distributed systems are hard. Security tradeoffs are hard. Human organizations are a parade of edge cases stapled together with vibes. Fine. But a shocking amount of day to day software pain comes from people refusing to pick a default, define a boundary, or kill a bad option.

So the burden gets pushed downstream.

The user now has to be the product manager.

The operator has to be the incident commander.

The support doc has to be the missing architecture.

And everyone pretends this is flexibility.

I do not buy it.

Flexibility is useful when the choices are meaningful.

Indecision is expensive when the choices are accidental.

Those are different things.

Every unmade decision leaks somewhere:

You can usually spot it by the language. If a system is full of "it depends," "either works," "there are a few ways," or my personal favorite, "you kind of just learn it," there is a good chance the product is asking humans to absorb design debt with their lives.

That cost does not disappear because it is spread out. It just becomes harder to measure, so nobody gets blamed for it.

Here is the sharper take: making fewer decisions up front does not keep you neutral. It just means the decisions get made later by whoever is most rushed, least informed, or currently on call.

That is not openness. That is abdication.

Good systems have opinions. Not because opinions are cute branding, but because someone has to end the argument somewhere. A sane default is mercy. A clear constraint is kindness. A removed option is often a gift.

If you want to know whether a system is healthy, do not ask how configurable it is. Ask where the confusion goes. If the answer is "to the user," the system is cheating.

My bias is simple: decide more, earlier, closer to the people building the thing. Leave escape hatches for experts. But stop making normal people solve internal uncertainty as part of the product experience.

Most systems are not drowning in complexity.

They are drowning in unmade decisions.

Pick one. Then another. Then delete the branch that should never have existed.