Falsehoods Programmers Believe About Phone Numbers

Inspiried by this post and also some design decisions taken with Telegram.

  1. People have exactly one canonical phone number.
  2. People have exactly one phone number which they use.
  3. People have, at this point in time, exactly one canonical phone number.
  4. People have, at this point in time, one phone number which they use.
  5. People's phone numbers always have a fixed number of digits.
  6. Two phone numbers in the same country code will have the same number of digits.
  7. People's phone numbers do not change.
  8. People's phone numbers change, but only at a certain enumerated set of events.
  9. People's phone numbers use a fixed set of punctuation marks that can be safely stripped.
  10. Phone numbers do not contain letters.
  11. Phone numbers do not contain repeating digits.
  12. All country codes are the same length.
  13. All phone numbers have a country code.
  14. Phone number formats within a country code do not change.
  15. People's phone numbers are globally unique.
  16. Phone numbers are not reused.
  17. My system will never have to deal with phone numbers outside the NANP.
  18. Two different systems containing data about the same person will use the same phone number for that person.
  19. Two different data entry operators, given a person's phone number, will by necessity enter bitwise equivalent strings on any single system, if the system is well-designed.
  20. People have phone numbers.