There are endless reasons for why projects fail. Some are correct, some are bogus, some are down right nonsense. Into this list I'd like at add my opinion, informed by hands on experience on software intensives programs in defense, energy, bio-pharma, commercial products, and enterprise IT.
It starts and ends, with the
Failure to know what DONE looks like in units of measure meaningful to the decision makers
The starting point for the description of DONE is the clear and concise statement of the Needed Capabilities for the resulting project that produce value for the stakeholders. These capabilities are stated in Measures of Effectiveness.
These capabilities state what the results from the project will do for the business or mission when they are available. The planned availability date is part of their capability. Only then come the requirements, then planning for the delivery of the technical and operational components that enable these requirements. Then several more enablers of projects success are needed.
All these activities, outcomes, processes, methods are encapsulated in the paradigm of Systems Engineering. The picture below are the notional elements of Systems Engineering. This picture is from the FAA Systems Engineering Handbook. This handbook is for the National Airspace System (NAS), a software intensive program to upgrade the exiting software, hardware, and processes. Other agencies and business have similar pictures.
- Synthesis - Transforms requirements into physical solutions.
- Functional Analyses - describes the functional characteristics that are used to derive the products or services of the system resulting from the project
- Requirements Management - identifies and manages the requirements that describe the desires capabilities of the project
- Interface Management - identifies and manages the interactions between components of the system or interactions with external systems
- Integrated Technical Planning - Plans the projects efforts and products
- Speciality Engineering - Analyzes the system, requirements, functions, solutions, and/or interfaces using specialized skills and tools. Assists in the derivation of requirements, synthesis of solutions, selection of alternatives, and validation and verification of requirements.
- Integrity of Analyses - Ensures that the analyses provide the required level of fidelity and accuracy.
- Lifecycle Engineering - Identifies and manages requirements for system lifecycle attributes, including real estate management, deployment and transition, integrated logistics support, sustainment / technology evolution, and disposal.
- Risk Management - Identifies, analyzes, and manages the uncertainties of achieving program requirements by developing strategies to reduce the severity or likelihood of those uncertainties.
- Trade Studies - assists decision making by analyuzing selecting the best-balanced solutions to match requirements that enable the capabilities
- Configuration Management - Establishes and maintains consistency and manages change in the system performance, functional, and physical attributes.
- Verification and Validation - Determines if system requirements are correct. Determines that the solution meets the validated requirements.
What Does All This Mean?
When we hear our customers don't know what they want. Or, our customers don't know the target budget for the work they are asking us to do for them. What they are saying is I don't know what DONE looks like in an tangible way that can be used to measure the performance of the project.
So one of two things has to happen when this is the case...
- The customer has to spend money to find out what they actually want. This is done all the time on our larger enterprise, defense, and space programs. It's paying to explore. It's establishing the credibility of the capabilities by spending money to do so
- Prepare for project failure.
So when we here that famous - infamous actually - phrase let's explore. Ask a serious question, and demand a serious answer ...
Who's pay for us to explore to discover what we should have already know?
Don't get an answer? Run away from that project, it's going to be a failed project.