Configurability as deferred decision-making: a cost model for marketplace operations
The arithmetic behind configurability as deferred decision-making, with the assumptions written out so you can disagree honestly.
The question is never whether something is worth doing in the abstract. It's whether it's worth doing at your volume, with your failure rate, valuing your team's time properly. So let's do the sum.
Every setting is a decision someone refused to make, handed to a user who has less context than you do. Some of those handoffs are right. Most are a way of avoiding an uncomfortable conversation, and they're paid for later by whoever has to support all the combinations.
WHAT A SETTING REALLY COSTS
A boolean flag doubles the number of systems you support. Two flags give you four. Nobody plans for this, because each flag arrives on its own, attached to a reasonable request, and the cost only appears in aggregate when a bug report says "it doesn't work" and you need six questions to find out which product they're describing.
The support cost is the obvious one. The subtler cost is that configuration is where domain knowledge goes to die. Once behaviour is a setting, the reason behind it stops being written down anywhere, and in two years nobody can tell you why the value is what it is or whether it's safe to change.
WHEN IT IS THE RIGHT CALL
Sometimes the variation is real and permanent: tax rules that genuinely differ by jurisdiction, thresholds a regulator sets, anything a client can be legitimately audited on. Those belong in configuration, ideally with the reason attached and a name that says which law it serves.
The distinction we use is whether the variation is in the world or in the argument. Variation in the world deserves a setting. Variation in the meeting deserves a decision.
At close to 80,000 listings a month with a two percent exception rate, trust and safety reviewers were absorbing about nine hours of manual reconciliation a week. That's the number the build had to beat, and it's a lower bar than anyone in the room expected.
DECIDING IN PUBLIC
The alternative to a flag is a decision with a name on it. Write down what you chose, who chose it, and what you'd need to see to change it. That's three sentences and it does more for the next team than a settings page ever will.
It also makes the reversal cheap in the way that matters. Nobody's afraid to change a documented decision. Everyone's afraid to change an undocumented default that eleven clients might depend on.
The interesting term wasn't engineering time. It was the cost of a suspended seller kept transacting through a second account landing once in the wrong quarter, which the client could size to the pound and we couldn't size at all.
WHERE IT GOES WRONG
- Shipping a flag to end a design argument, then discovering both branches are now in production.
- A settings page that nobody can explain, where three values are load-bearing and the rest are noise.
- Bug reports that can't be reproduced until you've established which of sixty-four variants the reporter is running.
- Config that encodes a decision but not the reason, so nobody dares touch it after the author leaves.
Variation in the world gets a setting. Variation in the meeting gets a decision.
WHERE THE MODEL BREAKS
Do the numbers before the meeting, not during it. A decision that survives arithmetic tends to survive the next reorg too, because the reasoning outlives the people who made it.