Introduction

There’s no doubt that computers are running our world, having the final say on everything from the price of your morning cup of coffee to global foreign exchange rates. Governments around the world are quickly becoming digital. Jobs are getting replaced with algorithms. Ubiquitous automation, along with some clever marketing, tricks us into believing that phones, TV sets and even cars are somehow smart. Yet all those computer systems were created by people – people who are well-meaning but fallible and biased, clever but forgetful, and who have grand plans but are pressed for time. Digitising a piece of work doesn’t mean there will be no mistakes, but instead guarantees that when mistakes happen, they’ll run at a massive scale.

This book is about ordinary people caught between bad assumptions and binary logic. You’ll read about humans who are invisible to computers, how a default password once caused a zombie apocalypse and why airlines sometimes give away free tickets. This is also a book on how to prevent, avoid and reduce the impact of such problems.

As a professional software developer, I’m much more guilty than the average person of driving civilisation towards a digital apocalypse. At the same time, I’ve been on the wrong end of a computer bug frequently enough to appreciate the pain that such a thing can create. This book is my attempt to raise awareness about some common and dangerous, but perfectly preventable, types of software blunders. I also want to help ordinary people fight back against digital monsters.

Knowing how software developers think, and what kind of mistakes they’re likely to make, helped me open a bank account against the better judgement of a robotic workflow, resolve extortionate utility bills and even recover my debit card after it was kidnapped by an angry ATM. The next time you bang your head against a digital wall, the stories in this book will help you understand better what’s going on and show you where to look for problems. If nothing else, when it seems as if you’re under a black-magic spell, these stories will at least allow you to see the lighter side of the binary chaos.

For my colleagues involved in software delivery, I hope this book helps you find more empathy for people suffering from our mistakes, as it’s always people who pay the price in the end. My intention with this book is to illustrate some typical, common mistakes with memorable stories, not to create a comprehensive guide for software quality. However, the final part of the book contains some nice tips and tricks, combined from all the stories, that you can use to make your software less error prone.

For the impatient

The Inverse Monkey Rule part contains checklists and heuristics that you can use during analysis, development or testing.