3.6 KiB

title date draft showSummary summary
Lies Programmers Believe About Names 2024-02-09T12:30:00+11:00 false true Programmers tend to believe a lot of lies. Let's talk about some name-based ones.


(Ashe) You ever read that classic list about Falsehoods Programmers Believe About Time?

(Tammy) Oh yeah, I remember that one!

(Ashe) Well that itself is based on Falsehoods Programmers Believe About Names.

(Tess) Soooo, where's that leave us?

(Ashe) Well it's been a little while since that post, and we've had our own fun experiences regarding names and IT systems, so we thought it might be fun to try extending that list.

(Ashe) On that note, you may notice us restating some of the items in the above list. When we do so, we will try to provide slightly more precision or add some information that might not be obvious from that list's phrasing.

(Octavia) With that all said, let's begin!

The Lies

  • No two users have the same name.
  • If two users do have the same name, they are the same user.
  • If two users do not have the same name, they are not the same user.
  • A user's name will never change.
  • Only a user's surname will ever change.
  • A user's surname/family name will only change if their marital status does.
  • A user's surname/family name will change if their marital status does.
  • Only one part of a user's name will change at a time.
  • If a user's name changes, you will be able to access documentation that confirms this.
  • All users have a middle name.
  • No user has a middle name.
  • Surnames contain no non-alphabetic characters.
  • First names contain no non-alphabetic characters.
  • Users have a surname, family name, or other second name.
  • Users will have a consistent, canonical name ordering.
  • The first letter/character of any name section should be capitalised1.
  • Users have a legal name.
  • Legal names can be easily verified.
  • Legal names are consistent across all records.
  • A user only has one legal name.
  • A user's preferred name is their first name.
  • A user's preferred name is their last name.
  • A user's preferred name does not differ from one or more of their legal names.
  • Legal name is a term that has a concrete meaning.
  • Users have a canonical name that is consistent across services.
  • Any two names will be bit-identical and visually identical if the same Unicode codepoints in the same order are used by the data entry system as by the accessing system.
  • A user's title is always prefixed to the name.
  • A user's title will never change.
  • A user's title will change if their marital status does.
  • A user's title will change if their marital status, education, or clerical status does.
  • There exists a consistent, canonical list of titles that covers all possible users.
  • A user's title is used in addition to their name, not instead of it.
  • Users have a title.
  • A user only has one title.


Now that you've read all that, if you ever find yourself dealing with user's names, there is unfortunately no good name/naming library we can point you at (unlike the date/time problem, which is mostly stable on most operating systems). Instead, try to keep these falsehoods in mind, and link them to people you know who are working with names.

(Tess) As an exercise, see if you can figure out a counter-example to demonstrate each rule. It's good fun! :)

  1. Assuming the character set supports capitalisation ↩︎