“If builders built buildings the way programmers wrote programs, then the first woodpecker that came along would destroy civilization.”
Gerald Weinberg.
Interesting perspective. It’s not just pointing a finger at programmers either. It’s effectively giving everyone in the software development industry a whack including business analysts, testers, etc.
Some would say that software is first-of-its-kind, with everything being invented as the application develops and because of complexity. But Murali Chemuturi rightly points out that, “The Empire State Building of New York City was the first of its kind when it was built. It is the first building in the world to go up 80 floors high above ground…. The issues, there would have been many, were solved in the specifications and design stage. The construction would scrupulously adhere to the design. It was a success.”
He then goes on to say, “Why do software projects fail at such a high rate even when there were similar projects executed earlier? Two major causes are attributed for this phenomenon. The first is the poor understanding and definition of product requirements. This leads to technical failure. The second is the poor project management of developing the software product to the specified requirements resulting in unsustainable overruns of cost and schedule. Both the reasons lead to project failure.”
Similarly, why are OSS implementation projects also prone to failures? Is it for the reasons that Murali suggests? Do we not dedicate enough time to requirement definition?
The construction industry has evolved over thousands of years, whereas software development has only been around for decades. The early attempts at making pyramids in Egypt proved unsuccessful. Have we simply not had long enough to refine our approaches to make them highly robust?
I’d love to hear your thoughts on how we can make our approach more robust.