Why do some software development projects fail?
Sometimes we hear about a failing software development project and occasionally we're asked to help get one of those projects back on track. The projects are always different but most seem to go wrong for similar reasons:
- Poorly understood requirements. Hidden complexity in a project is a killer. Almost every failing project that we hear about seemed to have a problem with poor up front business requirements analysis and/or complex requirements that only emerge after the development starts. Customers are as guilty as suppliers - requirements change when nobody has really worked out the business case.
- Not enough depth in technical expertise. Experienced software developers really can be five to ten times more productive than inexperienced developers. It's totally reasonable to say that a team of two experienced developers will deliver a project on time while the same project with five inexperienced developers will hit the rocks. An inexperienced team will cost more in the long run and they will take much longer to deliver the software.
- Underestimating the size of the job. Probably a consequence of the first two reasons. It's impossible to come up with reasonable estimates if you've not understood the requirements and your development team is inexperienced. And sometimes there's another thing at work - plenty of people on the project suspect that estimates are unrealistic but there's pressure from the sales team/business owners to keep the price down.
- Over complicating the solution. This is another one that seems to flow out of poorly understood requirements and an inexperienced team. Super configurable solutions that are designed to meet lots of different requirements can take forever to develop; huge amounts of efforts goes into creating functionality that will never be used. Often it is better to start with a 'minimum viable product'.
- Poor management of a big team. Projects that need big teams do seem to become disproportionately more complex. There are more inter-dependencies and you can end up in a situation where no one person really understands the solution - that is a recipe for disaster. Projects that go over 5 developers need a step up in the quality/organisation of project management.
- Clients who struggle to manage their own stakeholders. This is another one that we've seen - complex development projects with big budgets that have to satisfy multiple stakeholder groups/organisations. Good project management becomes even more important; the software development company has to be really good at working with the client to manage expectations across the wider stakeholder group.
You can't skip the up-front planning. Successful projects are built on a foundation of good business requirements analysis, strong technical skills and realistic estimating. Planning the project doesn't necessarily mean doing a full 'waterfall' development with detailed specifications and long development work packages, but it does mean taking the time to ask the right question at the start of the project.