Day 128

Software is buggy because customers don't care

Share

I was listening to Wolf Tivy's discussion with game developer Jonathan Blow on The Students podcast on the drive home from Macau this evening. In it, they lament the perceived poor quality of engineering that goes into software compared to that of something like a bridge and discuss some potential reasons for it. They discuss several possible explanations for this such as a lack of liability for bugs, layers of complexity in software or the lack of experienced software developers in a rapidly growing industry. They miss the real reason, though, which is that there is no economically-rational reason to create software that has no bugs because customers don't really care enough about the bugs in software.

We know it's possible to create software that has very few or even no bugs, because this is done in situations that are mission or life-critical such as in the aerospace, medical or nuclear industries. The way to do that is to massively increase time and effort spent testing while massively reducing feature set, scope and complexity to the point where the software you're building is absolutely no more complex than it needs to be. But customers don't want this. They want bleeding-edge software that ships faster, costs less money, has a better user experience, looks nicer and has more of the latest features. They don't want to pay orders of magnitude more for software that fixes every long-tail, low-occurrence bug that could possibly happen in a piece of software.

The majority of the software market is fundamentally different than the market for something like a bridge or an airplane because of the cost of failure and people's expectations. People expect a bridge to never fail even in the most extreme of conditions. Because of this expectation, bridges are designed and priced to reflect that. It would be unacceptable for a bridge to randomly destroy every 100,000th car that drove over it, because this would kill the occupants of the car and likely cause a political uprising in the community. A bridge that functioned like this has a very expensive bug indeed. In contrast, it's perfectly acceptable and even reasonable for most pieces of consumer or business software to, for example, freeze up every 100,000th time a user starts it because the cost of this bug isn't very much. This is just a mild inconvenience to the user who needs to force quit it and start it again.