When your child takes that first step, wild excitement ensues. The phone lines light up. You spread the news to the grandparents, aunts, and uncles. It makes no difference that they fall after the second step, the milestone is noteworthy. A similar phenomenon occurs the first time many people succeed in doing something with a computer.
Whatever was accomplished takes on magical properties and many feel an irresistible urge to spread the good word; they proselytize others to join their cult of their newly embraced computer/software belief system. Neither the computer nor the hardware can do any wrong. It can crash, freeze, loose work, consume hours of you time as you apply updates, and reboot and reboot yet again. All is forgiven. Your willingness to glory in a stumbling child or and unreliable computer system does not alter the fact that the child is not ready to walk on their own or that the computer is not ready for mission-critical applications.
Why worry about this? Two reasons come to mind. First, the country has a lot riding on the expectation that today's computer systems are more reliable and capable than they really are. Second, I believe that it is possible to do better. If it were not, then our only option would be to continue business as usual — live with the interruptions, lost work, errors and outages, and institute manual fail-safe procedures that attempt to detect critical errors, omissions, and failures and correct them.
Am I the only one that holds this view of current technology? The short answer is no. Jason Gorman says in "Back To Basics - Hype-free Principles for Software Developers": "As I read more… It seemed to me as if what we’d mostly been doing these last 40 years or more was coming up with new names for software development principles and practices that those in the know were already doing."
In other words, the names of the common development techniques have been changed, but not their substance. Those techniques produced unreliable systems in the past and they continue to do so. Researchers are constantly exploring new techniques but there is no national IT policy to incentivize or promote the widespread adoption of improvements.
Companies that manufacture computer hardware and software know enough not to trust their own products. This was made plain to me in 1991 when we bought a computer from Sun Microsystems to run an interface. The Terms and Conditions attached to the system contained a warning that it was not to be used for any life-critical or mission-critical application such as controlling a nuclear power plant or flying an aircraft. Consider that only a few years before, our facility installed a critical care system. It was connected to all the monitors, IV pumps, and ventilators — granted, the individual devices still had their own alarms and I do not remember whether those were left enabled or whether the task of generating alarms was delegated to the critical care system but that system used the very same Sun computers — the one with the warning that they not be used in life-critical applications.
And a personal example: I use a lot of computer hardware and software — probably more than you do. As I explore new software, more than 20 percent of the time I discover a crash, flaw, or other problem that renders software unusable. One or another of my Macs and PCs freezes or crashes at least once a month as well. Every week an average of two hours to three hours is consumed downloading and applying software updates. And finally, in the past 35 years on more than 2,000 occasions I have had the experience of reporting a problem or failure of software or hardware only to be told, "You're the first person that has ever reported this." I may have been the first to recognize or report problems but certainly not the first to experience them.
Every failure can be rationalized or excused. That's true whether it's a medical failure or a computer failure. Physicians believe that the incidence of medical failures can be reduced and have some ideas about how to go about it. I'm sure that the folks that produce computer systems have similar ideas but, if their development techniques are 40 years old then those techniques are the equivalent of "baby steps." If your child was not walking by age 40, most would call that developmental delay. Would you still be as excited when your 40-year-old fell after a single step as you were when your infant was taking that first step?
The only reasonable conclusion is that computers and software are exhibiting developmental delay. It's time to cool our unbridled enthusiasm and pay more attention to providing remedial help and preventing birth defects.
Find out more about Daniel Essin and our other Practice Notes bloggers.