BeCuriouzBeCuriouz

Learn something new every day

✍️ Blogs
🪪

Your code has secret beliefs about names — and they're all wrong

💡 The "obvious" assumptions in your data model are often just your own culture's defaults in disguise.

In one of the most-shared essays in software engineering, Patrick McKenzie (Kalzumeus) lists dozens of things programmers assume about human names that turn out to be false. The very first: "People have exactly one canonical full name." Also false: that names have a first and last part, that they're written in ASCII, that they never change, that two people never share one, or that a name even fits in a database field of a fixed length. Every one of these has real counterexamples across cultures, marriages, transliterations, and legal systems.

The deeper point isn't about names at all — it's about hidden assumptions baked into data models. A signup form that requires a first and last name silently excludes people from Indonesia to Iceland. A system that treats a name as permanent breaks when someone marries or transitions. These aren't rare edge cases; collectively they affect a huge fraction of real users.

The essay became a genre. Engineers wrote spin-offs on falsehoods about time, addresses, and email, all making the same move: the things that feel like safe defaults are usually culturally specific guesses. The fix is humility — store names as a single flexible string, avoid mandatory structure, and let people tell you who they are rather than forcing them into your schema.

🪪 Your code has secret beliefs about names — and they're all wrong — BeCuriouz