Why Would a Software Project Fail?
By Yahya Alsemaiyen on Sunday, April 19 2009, 17:27 - Business and Software - Permalink

The study started by comparing bridge building to software development and explained the major reason behind the delay and the instability in software projects. While building a bridge is a result of 3000 years of knowledge and experience, software development is too early to be mature. Bridges have clear and defined requirements, while the customers keep changing software requirements.
The report mentioned three major items required to support any project and are essential to its success: user involvement, executive management support and a clear statement of requirements. It, then, mentioned many statistics about the success and failures of many projects belonging to different companies of different sizes. For the purpose of study, the projects were classified into three types:
- Project success: on time, on budget, all features and functions included.
- Project challenged: completed and operational, but over budget, over time, fewer features and functions included.
- Project impaired: cancelled at some point during the development.
After that, the report went into further analysis of the failures explaining why a project is labeled challenged or impaired. Cost overrun and time overrun were dominant reasons. Both of them might come as a direct result of project restarts. On the other hand, content deficiencies are the driving factors of challenged projects.
All studies and numbers imply that any problem or issue grow big with the size of the company. This might be explained with the increase number of executive and stakeholders who are supposed to drive the projects in the relatively big companies.
The paper mentioned a several examples of real life projects that succeeded or failed and pointed out ten factors that affect them. Two pieces of advice were given at the end of the paper:
- Growing rather than developing software: Divide any project to small segments with shorter life frames. It results in an iterative process of design, development, testing, and deploying small elements.
- Know before you go: Define clear and precise statement and set of objectives for each component. This makes software components and projects tend to be less complex, and hence, easier to be managed.
