The software industry historically has been plagued with an inability to release products that are adequately tested. Examples of poor quality in the software consumer market abound. From applications that can only be considered fully functional after a half-dozen "upgrades," to the frequent reports of damaging software viruses that reflect poorly on software security and stability, the software industry is consistently indicted for quality lapses. Put bluntly, much of the software in the consumer market isn't worth the cost of shrink-wrapping. This article serves as a rallying cry to bridge the gap between software quality efforts and other industry quality efforts.
What is interesting about our industry's cavalier approach to quality is the astounding level of consumer tolerance for "bugs" within software applications. Such errors simply would not be tolerated in products created in other industries. This willingness of the software consumer to overlook imperfection is due, in large part, to the extraordinary level of innovation traditionally energizing the software market. Recent efforts to bring a new level of quality assurance to software manufacturing have resulted in legislative junkets that have, not surprisingly, been killed by strong opposition from industry giants. These same abandoned attempts at quality legislation have also failed to rouse the ire of the average software consumer. Bugs are accepted, even expected, when they exist in products that become obsolete just as soon as further innovations are discovered. Even popular software products with a wide public acceptance go through many iterations within a short time.
A New Industry
The software business is still so new that it has not yet come to maturity as an industry. Consumer computing is only two decades old—a span similar to that which separated World War I aviation from the Wright Brothers' first flight—and it changes at a rate rarely seen in industrial sectors. Consumers willing to forgive imperfections in exchange for innovative products fuel the change, and keep the industry stalled in a creative cycle that is both flawed and nonproductive. As a result, the software industry has failed to establish a production process that converts human intelligence into computer instructions with the same efficiency as electronics companies produce televisions or appliance companies produce refrigerators.
Many parallels can be drawn between early twentieth-century industry and today's software industry. Only now is the software industry undergoing the preconsumer attention to quality that the automotive industry underwent before World War I, or that the consumer electronics industry (televisions and automated consumer appliances such as refrigerators and washing machines) struggled through just after World War II. Before, the hapless buyer of a Model T could expect any number of breakdowns, from the engine to the upholstery. Consumers accepted the situation due to the lack of choice presented them. They accepted lower quality because industrial manufacturing techniques, while flawed, produced goods that they could afford and that improved their lives, and that were still new and innovative. The same was true following World War II, as enthusiastic consumers lacking market choice purchased inefficient refrigerators and snowy televisions—not because these products worked well, but because they were readily available, relatively new technology, and affordable.
Today, the same situation burdens the software sector. The imperfect software that provides computers with intelligence and functionality is purchased because it is affordable and readily available, and has enjoyed the "forgiveness" that comes with being a relatively new technology. However, while other industries mastered the production process—bringing to it automatic error prevention techniques as a means of creating higher quality products with more affordability and greater abundance—there are those who doubt that the same methods can be applied to the software industry. To them, the necessary rapid evolution of software suggests that a stable production process, an assembly line model, is unattainable within the software industry. Where is the production line when you produce one thing only one time? How do you ensure quality when one product is as different from the next as a television is different from a refrigerator?