It is no wonder to me why our software industry is in serious trouble. FBI officials said they hope to award a contract by the year's end for a complex new software program to replace a failed project that was canceled this year at a cost of more than $100 million to taxpayers.
Closer to home, the Canadian government has spent over $2 billion (yes, $2 billion!) on a gun registry that is nothing more than a giant database for storing information about legal owners of guns who have volunteered to register their weapons. But $2 billion dollars? To coin a Dave Barry phrase, I am not making this stuff up. It really happened.
The software that controls the baggage handling at the Denver airport where, due to a bug in the software, it was costing the airport $1.1 million dollars of lost operational cost per day! At the time this was occurring, there was no predicted end in sight.
Finally, have a look at The CHAOS Study which reveals mind boggling statistics on software development failures. The report summarizes that in 1995, the U.S. spends $250 billion per year on information technology for 175,000 software projects. 31% of those projects were canceled before completion. 53% of those projects cost 189% of original estimates. $81 billion was spent on canceled projects. Only 16% of software projects were complete on-time and on-budget. 16% wow!
Some of you may point out that this report is 10 years old. I can tell from my own experience, and others, not much has changed since then. In fact, an updated report verifies this.
For the experienced software developer, this does not come as a surprise. Disheartening yes, surprising, not really we live it - everyday. The CHAOS Report states that the top three causes for these failures are the lack of user input, incomplete requirements and changing requirements. No surprise here either, however, I would like to offer up what I would call the root cause of these failures, that is not categorized in the report, which is totally underestimating the size and complexity of any software development effort.
Software development is an incredibly complex, highly skilled, maximally labor intensive process, probably more so then any other professional human endeavor. Software design and programming is so complex and error prone that it is totally underestimated by everyone, including the majority of software programmers who are closest to truly understanding this size and complexity issue. Further, the people that we are trying to develop the software for have no idea about size or complexity or how software is designed, built or even how it works. It is a complete mystery to almost everyone.
Tomorrow we are going to delve deep into this size and complexity issue.