According to a number of different studies somewhere between 30 % and 70 % of embedded software projects are unsuccessful. Success can, of course, be measured in a number of different ways, which is probably where the large range in the statistics comes from. However, no business really wants even the lowest measurement, 30 %, of its projects to be unsuccessful.
When is a project successful?
The most important thing for a project is that it is perceived as a success by the stakeholders. The project might be a success from a technical perspective (i.e. it solves the initial problem expressed in the requirements), but if it's late, over budget, under performance, difficult to use, or not used, then various stakeholders will perceive the project as being unsuccessful.
A project is generally perceived to be a success if the expectations of the project have met by the time the end of the project arrives. Bearing in mind, of course, that the date of the end of the project is itself one of the expectations. Unrealistic expectations in a software project are a big contributor to low moral and potential perceived failure of the project. It is often the case that many stakeholder expectations are not explicitly captured as project requirements, and sometimes the project team may not even be aware of the existence of some of the stakeholders.
The importance of expectations
Given that the expectations of a project are so vital to its perceived success, it is highly important that one of the project management tasks be to manage those expectations throughout the lifetime of the project. No one can predict the future and as a project progresses unforeseen problems and unexpected solutions will arise, each of which will impact the project and will require an adjustment in the stakeholders expectations of the project.
Communication is key
The most valuable mechanism for managing unrealistic expectations is communication. Regular communication with stakeholders regarding the status of the project will help keep their expectations in line with a realistic picture of what can be expected by the end of the project. Most people know that due to unforeseen elements the initial expectations of a project may have to be adjusted, but if the adjustments and reasons for those adjustments are not communicated, then stakeholders tend to mentally cling to their initial expectations and are subsequently surprised when they are not met. It may even be a good idea to explicitly state this at the start of the project, i.e. make one of the initial expectations be that other expectations will need to be adjusted as the project progresses.
More about managing expectations can be found in this blog post.
Agile project management – a possible answer
Management of unrealistic expectations is most likely one of the reasons that agile projects are often perceived to be more successful than non-agile ones. An agile project development plans for – and provides – frequent small increment deliveries, thus providing an ongoing and realistic status of the project. Stakeholders are easily able to adjust their expectations as they see the results of the project incrementally evolve. Agile frameworks like Scrum define a dedicated role – the Product Owner – being responsible for expectation management. He is the one managing the overall set of requirements in the product backlog, prioritizing them for the iterative development in sprints and involving all necessary stakeholders for it.