The article is concise and makes some excellent points:
- Any software project can be make to be late, over-budget, and technically unsound by simply not providing the requisite time, resources or specifications. There is no complicated trick involved - one out of the three will suffice.
- Virtually all large software projects are unprecedented - meaning they have never been done before. They are in fact existence proofs, with high likelihoods of failure. Successful projects are always aware of this.
- ...software is a means to an end, and not the end itself...software is being used because there is no other way to accomplish a project's objectives at a reasonable cost, in a reasonable period, with acceptable performance and reliability, and the flexibility to grow...software is in effect the choice of last resort
- In failed efforts, developing the software is frequently regarded by key decision-makers as not particularly difficult, from either a technical or managerial perspective.
- Not admitting what you don't know, as well as not being able to reverse decisions in the face of refuting information, are the call signs of imminent project failure.
- Projects that collapse fail to recognize that a plan is nothing more than a hypothesis, a (hopefully) educated guess about what is expected to occur over the future , if the assumptions at each point in time do not change.
- Successful projects understand that decision uncertainty is not a risk, but a problem that must be worked everyday.