What's in a name?

Author: Kostas Minaidis | Blog

In his now classic blog post titled 'Falsehoods Programmers Believe About Names', Patrick McKenzie writes "I have never seen a computer system which handles names properly and doubt one exists, anywhere." and goes on to list 40 wrong assumptions our computer systems make about names.

It is an extraordinarily important reminder about aspects of our software programs that we -more than often- neglect to consider carefully and study in detail.

Let's see some examples of what we might take for granted when considering names in our computer systems:

  • People’s names do not contain numbers.

  • People’s names are case insensitive.

  • People’s names do not change.

  • I can safely assume that this dictionary of bad words contains no people’s names in it.

These are some of the examples mentioned in McKenzie's list of falsehoods about names. There's a lot of value in thinking about each and every one of them but the most important key takeaway, in my humble opinion, is to never take anything for granted when designing software and always include uncertainty as a principal ingredient of the real world we are constantly trying to model through our software engineering tools.

The story, of course, does not end at McKenzie's article. It just sparks the prairie fire that leads to a plethora of posts concerning all sorts of falsehoods programmers believe in: phone numbers, prices, emails, maps, floating point numbers and of course the dreaded date and time diabolic duo.

  • Phone numbers contain only digits.

  • Places have only one official name.

  • Buildings do not move.

"The first principle is that you must not fool yourself and you are the easiest person to fool". I am not sure whether Richard Feynman had the computer programmer in mind when coming up with that quote, but I am pretty sure that you have more than once felt this way when your last stroke on the computer keyboard resulted in an unhandled exception exploding in your face.

So, take the time to go through McKenzie's blog post and the rest of the resources found here to combat some of your long-standing assumptions and become a better software engineer and, above all, embrace uncertainty and the beautiful complexity of our world!

Resources:

Falsehoods Programmers Believe About Names

Falsehoods Programmers Believe About Phone Numbers

Falsehoods programmers believe about geography

Falsehoods Programmers Believe in

Falsehoods Programmers Believe About Time


(Image was created using GenerativeAI on the Google Gemini platform)