Software is flexible. It can be programmed to do so many things. But as The Atlantic put it, “This flexibility is software’s miracle and its curse.”
You've probably heard of Murphy’s Law: If anything can go wrong, it will. Software is one of those things that can go massively wrong. In a piece about the coming “software apocalypse,” The Atlantic shares some critical stories of software failure, such when the entire state of Washington had no 911 service, thanks to a glitch in Colorado. Or the case of a radiation-therapy machine that killed six people due to software problems.
While developers test software, it’s limitless. A mechanical system has a finite number of moving parts. You can test the system so thoroughly that it’s easy to predict if and when errors will occur – and fix them quickly. Software can and does so much that we cannot test all the factors.
Furthermore, half the problem is our imagination. The 911 software worked as it was supposed to. The program counted the number of calls routed to 911 dispatchers, and programmers had set a threshold in the millions for that counter. No one thought about what would happen if the program went past that count, which is what happened to cause Washington’s failure.
Why Software Breaks
The fact that we say software “breaks” is a sign of our limited ways to explain what’s occurring. In some cases, software breaks because it’s too old. We call it “software rot” or “software erosion” or even “decay.” Code itself doesn’t physically decay. What is changing is the world around it. The software is not responsive to the changing environment and soon becomes known as “legacy.” Without upgrades, your program will cease to function.
One simple example of this: computer games used to rely on a CPU’s clock speed as a timer. As CPU clocks became faster, the game speed increased, and the entire program was less usable over time. Some people prefer the term “environment drift” instead of code rot because it more aptly describes what’s happening.
In "Age of Em: Work, Love and Life when Robots Rule the Earth," (Oxford University Press, 2016) Robin Hanson describes software rot like this:
“As software that was designed to match one set of tasks, tools, and situations is slowly changed to deal with a steady stream of new tasks, tools, and situations, such software becomes more complex, fragile, and more difficult to usefully change (Lehman and Belady 1985). Eventually, it is better to start over and write whole new subsystems, and sometimes whole new systems, from scratch.”
One way to understand this rot is to look at the laws of our country. Legislators create laws that may eventually become obsolete due to the changing nature of our preferences and technology. For example, until the car was invented, we did not need laws regarding our driving behavior. Some old laws no longer make sense if they were created for a specific situation that no longer exists.
With that in mind, updates (or lack thereof) are often the culprit in software that “breaks.” For example, consider your website. Servers host your website, and they run on software, too. Both the server and your content management system require regular updates to fix bugs, improve security as hackers figure out new ways in, and maintain the program as its supposed to operate. The same goes for any plugins on your website, which are separate programs.
Cost and Liability
No matter what type of business you operate, you are relying on software. Most companies use dozens of programs every day, from applications to send invoices, project management programs to keep the team organized, email, and more. What happens if one of those programs crashes? Business owners often create backup plans in case of an emergency such as a hurricane or fire. But does your business have a plan in case of a software crash?
This is especially true for businesses that are providing software to others – it’s not yet clear who is responsible when it breaks. Still, a business manager cannot assume it’s “not me” and should expect that a lawsuit will occur eventually.
Whether that applies to your company or not, you are also risking cost. If internal software breaks, it may affect your team’s productivity. If your external software breaks, you will lose customers.
With Murphy’s Law in mind, here are some steps businesses can take to prepare for a disaster:
- Buy insurance. Most businesses, especially large ones, carry some type of E&O policy. Make sure you have something to cover errors in any external software you offer to customers.
- Update all the time. As you can see, a lot of problems are caused by changes. Make sure you have methods in place to update your software – all of it. Your IT team (if you have one) should maintain a list of programs and confirm automatic updates are occurring.
- Review programs you’ve built. Has your code turned to spaghetti? After years of use, software can become a tangled mess. Think about all the little updates and changes, all piling on top of and connecting to the original. At some point, it’s impossible to follow and impossible to test thoroughly. In some cases, it will make sense to rebuild your program from the start using today’s latest practices.
- Monitor application performance. Use Application performance monitoring (APM) programs to alert your team about issues so they can fix them before they become a problem for customers.
- Create a backup plan. Write down what your company will do if X breaks, with X being any program you use or make. This plan should outline a list of steps for every single software you use. It might be a long list. Some of them won’t be critical; you can find a similar program to replace it – as long as you retain the data. Which brings us to:
- Back up your data. Sixty percent of small businesses that lose their data shut down within six months. About that same percentage are not prepared and don’t have a plan for losing their data. Yet 140,000 hard drives fail each week.
- Expect a malware or ransomware attack. Aside from software breaking for the reasons we’ve outlined, businesses are experiencing an increase in cyberattacks.
At some point, software you use will break or not work. That’s as certain as death and taxes. What’s not certain is the fate of your company when it does. That part is up to you.