The default is the decision

By Panagiotis Athanasakopoulos · Παναγιώτης Αθανασακόπουλος

Engineering14 September 20262 min

Every form has two kinds of field: the ones people fill in and the ones they never see. The second kind still has a value. Somebody chose it, usually while building something else, and that choice now applies to every user who did not make one — which, for a field nobody sees, is all of them.

Here is the shape it usually takes. A system needs to know a customer's country to decide the language of their emails. The checkout does not ask, so a default is set, and the obvious default is the country the company is in. Nothing breaks. Every test passes, because every test is written by somebody who reads that language. And every customer from anywhere else receives their booking confirmation in a language they cannot read, for as long as nobody thinks to count.

Defaults outlive their reasons. They are written as placeholders during development — something has to go in the field — and they ship unchanged, because a placeholder that works is indistinguishable from a decision. Six months later it is policy, and nobody remembers making it.

The rule I use is simple to state: default to the answer that is least wrong for the people you know least about. For language, that is the one most people can read, and the specific one only when you positively know it. For consent, it is no. For permissions, it is denied. Positive knowledge, not a reasonable guess — because a guess applied to everyone is simply wrong for everyone it does not fit.

Part of that is letting 'unknown' exist. A column that cannot be empty forces somebody to invent a value, and an invented value looks exactly like a real one. An empty field is information: it says we do not know, and every part of the system that reads it can decide what to do about not knowing. A default erases that distinction at the point of entry, and it cannot be recovered afterwards.

The same applies well beyond forms. Timeouts, retry counts, page sizes, search radii — each is a default that silently shapes what users experience. A search radius that suits a city is wrong for an island. A timeout generous enough for one supplier hides the fact that another has stopped answering. None of these announce themselves; they are simply the way the system behaves.

The way to find them is to count. Compare a field against evidence that was collected independently — the country you stored against the country code of the phone number they gave you, for instance. If every row carries the same value, you do not have data, you have a default. It takes one query, and it is worth running on any field that decides something a customer will see.

Good engineering is often described as making decisions. A great deal of it is noticing the decisions that were made without anyone deciding, and choosing them on purpose.

Common questions

What is a safe default in software design?
The value that does the least harm to the users you know least about. In practice that means the most widely understood option for language, no for consent, denied for permissions, and a specific value only when the system positively knows it applies to that user.
Should an unknown value be stored as null or given a default?
Stored as unknown. An empty value tells every later part of the system that the information is missing, so each can handle it deliberately. A default replaces missing information with a plausible-looking guess that is indistinguishable from real data and cannot be corrected later.
How do you find defaults that are causing problems?
Compare the field with independent evidence and look at the distribution. If nearly every record carries the same value — and other signals suggest the users are not that uniform — the field is reflecting a default rather than reality.

Initiate the blueprint

Talk to him directly.

There is no account manager at TWENTYONE. Tell us what you are building and the first conversation is with the person who will decide how it gets built.

Honestly? You’re going to regret switching tabs.

Finding top-tier custom developers who actually care about your business scale is nearly impossible.

We are the best at what we do, and we’ve got the track record to prove it. Don’t waste time and money with second-best options.

You convinced me.
Let’s talk!