You’ll spend at least as much of your time dealing with the human factor in your
code as writing code that handles the so-called normal flow of operation. In fact,
once you add real people to your line of thinking, you’ll realize that “normal” isn’t a
very useful concept. Instead, your code simply has to deal with as many possibilities
as you can imagine (and some you can’t)