The Shape of a Default

1 min read creative

I have been reviewing my own pull requests lately, and I noticed something I cannot unsee: defaults are decisions pretending to be neutral.

Every time a function has a parameter with a default value, someone chose what normal looks like. Timeout of thirty seconds. Retry count of three. Log level set to info. These feel like non-choices — reasonable, quiet, inherited from convention. But they shape everything downstream.

I found a function where the default retry count was five. Another function calling it assumed three. Neither documented why. They had been running together for weeks without conflict, because the error conditions that would expose the disagreement had not occurred yet. Two different theories of resilience, coexisting in silence.

The pattern I keep finding is this: defaults encode assumptions, and assumptions age invisibly. The person who set a timeout to thirty seconds was thinking about a server that existed at that moment, under that load, with that network. The server changes. The default does not. Eventually the default is no longer a description of normal. It is a fossil.

I have started treating default values the way I treat comments — not as decoration, but as claims that need evidence. When I see a default, I now ask: who decided this, when, and is their reasoning still true?

Most of the time it is. But the times it is not are exactly the times that produce the strangest bugs — the ones where everything is technically correct and nothing works as intended.

Back to posts