Ruminations on the causes of bad software

posted: October 31, 2020

tl;dr: Bad software has been with us forever and will continue to be with us, but why?...

Part One of a two part series on the causes of bad software

Part Two: Bad software will always be with us

Hardly a day goes by where I don’t stumble across a glaring bug in the software that I use as I conduct my life. It could be an application, an app, a webapp, a website, or a device with embedded software. I joke with my wife that there is so much bad software out there in the world that I will always have a job, since there will always be bad software that needs fixing. As a consumer, the most frustrating software bugs are when I am unable to complete a purchase via a website or app. I’m trying to give a company money, and they are refusing to accept it. It’s 2020, e-commerce has been around for more than two decades, and every company knows the importance of debugging the checkout process, yet this still happens.

One of this week’s bugs was nearly as frustrating. Game 6 of the 2020 World Series was being played, which ended up being the clinching game for the Los Angeles Dodgers to win their first World Series in 32 years. I was doing something else but wanted to be able to keep tabs on the game, so I pulled out my iPhone XR, fired up the YouTubeTV iOS app, and selected the Fox broadcast of the game. I did this while holding my phone in portrait mode. The video stream appeared in the app, at the very top of the screen in a small box. I then selected fullscreen mode and rotated the phone to landscape orientation, which in the past has caused the video image to take over the entire screen so that it is as large as it can possibly be. However the app instead decided to continue displaying the video image in a small box in the upper left side of the screen, with lots of black nothingness on the right. Here’s what it looked like:

Google's latest YouTubeTV iOS app has troubles displaying fullscreen landscape mode

I’ve actually written about YouTubeTV’s poor software quality before, so I guess I shouldn’t have been surprised. I repeatedly shut down the app, started it up again, and selected the channel, and eventually it did the right thing and went into fullscreen mode with the video image. I had never seen this problem before, so this is an example of a software update that broke an existing feature, and which escaped YouTubeTV’s testing process.

As is the case with Google’s YouTubeTV iOS app, often the bad software I encounter is produced by the most valuable, most profitable technology companies in the world, who have huge staffs of the supposed “best and brightest” software engineers, and plenty of cash to hire more if needed. These companies have Ph.D.s on staff who write research papers which advance the state of the art of the field of computer science, yet the software produced by these companies still has faults. Lack of money and lack of talent can’t account for the lack of software quality; it must be something else

The complexity of software, and the systems on which the software runs, might appear to be an issue. Modern software systems have many components and layers, which create many opportunities for problems to occur, a topic I explored in my series of posts on What can possibly go wrong? There is no doubt that present day software systems have much more complexity, and many more lines of code, than systems from decades ago.

Yet it’s not true that software back in the 1980s and 1990s was nearly perfect, and software now is incredibly buggy. Microsoft Windows in the 1990s was infamous for its blue screen of death. I used to say back then that no one will ever again get as rich as Bill Gates did by selling bad software; in retrospect, I was probably wrong. Windows may actually be more reliable now, although my overall sense is that commercial software as a whole is about as buggy as it was decades ago. Consumers are more apt to encounter software problems today because they interact with more software than they did years ago. So complexity doesn’t appear to be the root cause of lack of software quality.

The root cause, I believe, is economics. The primary goal of commercial software is to make money, and the richest rewards go to those vendors who release software that is “good enough”, rather than perfect. I discuss this in further detail in my post: Bad software will always be with us.

Assuming software remains a competitive industry, then economic pressures are likely to continue to exert their influence on companies developing software systems. Thus, imperfect software is not going to go away. Even though I’ve had multiple software quality issues with YouTubeTV, I remain a paying customer.

Part Two: Bad software will always be with us