Falsehoods Programmers Believe

Falsehoods Programmers Believe

I'm in love with these lists of "Falsehoods Programmers Believe About X." In case you haven't had pleasure, I've collected all the ones I know of here. If I missed any, let me know!

Falsehoods programmers believe about names

  • People's names do not change
  • People’s names have an order to them
  • My system will never have to deal with names from China
  • I can safely assume that this dictionary of bad words contains no people’s names in it
  • People have names

Falsehoods programmers believe about time

  • The time zone in which a program has to run will never change
  • The system clock will never be set to a time that is in the distant past or the far future
  • One minute on the system clock has exactly the same duration as one minute on any other clock
  • A time stamp of sufficient precision can safely be considered unique
  • The duration of one minute on the system clock would never be more than an hour

More falsehoods programmers believe about time

  • The local time offset (from UTC) will not change during office hours.
  • My software is only used internally/locally, so I don’t have to worry about timezones
  • I can easily maintain a timezone list myself
  • Time passes at the same speed on top of a mountain and at the bottom of a valley

Falsehoods programmers believe about time zones

  • Every day without DST changes is 86400 (60 * 60 * 24) seconds long
  • If you have two UTC timestamps it is possible to calculate how many seconds will be between them even if one of the timestamps are a year into the future
  • The time 23:59:60 is always invalid

Falsehoods programmers believe about geography

  • Places have only one official name
  • Place names follow the character rules of the language
  • Place names can be written with the exhaustive character set of a country
  • Places have only one official address
  • Street addresses contain street names

Falsehoods programmers believe about addresses

  • No buildings are numbered zero
  • A road will have a name
  • A single postcode will be larger than a single building
  • OK, but you don't get multiple postcodes per building
  • Addresses will have a reasonable number of characters — less than 100, say

Falsehoods programmers believe about maps

  • All coordinates are in “Latitude/Longitude”
  • The shortest path between two points is a straight line
  • All programmers agree on the ordering of latitude and longitude pairs
Extra Credit:

Kevin Deldycke has made an even better version of this list, and hosted it on GitHub, where you can make pull requests to add new lists when you find them!