[/caption]
What goes up must come down. Ask any system administrator. -Anonymous
Why do we place so much faith in our software systems? Is it that we feel that they are without flaw, or that we are comfortable working around the flaws?
To my knowledge there does not exist a significantly sized software system which does not have at least a handful, if not hundreds or thousands, of defects. Software vendors maintain small armies of people dedicated to not only adding new features but as importantly, removing the long list of defects which are incubating inside the software applications. Software vendors are in business to make money and meet market demand. This demand does not wait for all defects to be removed or competition to wait until you are ready to release your product. As often as not, once all the “show stoppers” have been removed, the product is released into the wild and the vendors wait for the market to inform them of the defects which they wish to have removed. In other words, defect free code is not the goal – code which is good enough to get to the next release is the goal. Don’t we as customers deserve better?
Defects arise despite the high degree of training professional software engineers have. They arise despite the large body of knowledge in professional best practices. They arise despite the several methodologies which arise, take hold, and fall away to the next methodology. There is no getting around it, defects seem to always been with us, and always will be with us. We, as users of software applications, have been trained to work around the defects. We understand that the software we have acquired is flawed, and that seems to be okay with us because we are able to get our job done with “work-around’s.” The down side of working with defective software seems to be minimal as all the “critical” defects have been removed – at least to the best of our knowledge.
There is an area of corporate application development which is more concerning than most – end user computing. This area contains software which is embedded in most every significant business process in corporate life (refer to your most recent Sarbanes-Oxley audit); has typically not gone through the rigors typically found in software engineering; and developed by people who are expert in their subject domain, but not typically expert in software engineering. Professional researchers, from both academia and high end audit firms, have found that over 90% of corporate spreadsheets contain defects. These studies have also shown that approximately 5% of all unique formula contain defects. Given the complexity of today’s spreadsheets, and the means of developing spreadsheets this is not surprising.
Yet we trust our spreadsheets and personal database applications implicitly. They seem to work. They have not caused us a problem in the past. Until we have to restate earnings to Wall Street. Until we have to apologize to investors. Until we have to explain to a curious public why you don’t seem to be following your stated policies. Until…
Trust does not extend forever. We do seem to have short memories about issues and the impact of these issues, but trust does erode. Reputations are valuable and a decay in your personal or corporate reputation can be very damaging. Yet, in our systems we trust.