Projects fail for many reasons. Sometimes it seems that the team can do everything right, or at least to the best of their ability, and failure occurs anyway. There is simply no way to guarantee success but there are some key indicators that can alert you to impending failure.
1. Lack of Sponsorship
Executive sponsorship is critical to the success of every major project. Without it, the team won’t be adequately funded or staffed. If your management team is not solidly behind you, drop the project and find something else to do.
2. Poor or Optimistic Planning
“Poor planning” — how many times have you heard that? Is it more or less than “overly optimistic”? The most frustrating part of this problem is that companies make these mistakes over and over again. If you recognize poor or optimistic planning, speak up but don’t criticize. Explain where the plan is lacking and recommend ways to improve it.
3. Failing to Prioritize Requirements
I’ve found that many stakeholders are reluctant to prioritize requirements. I think they fear that if a feature doesn’t make the final target release, it will never be seen or heard from again. Fixing this problem demands that we instill confidence in the stakeholders. They must believe that we will say what we do and do what we say. Solve the credibility problem and this issue will go away.
4. Weak or Wrong Personnel
Companies often assign whoever is available to a project. Of course, that person is usually working on a few other projects already. Big mistake. A good developer assigned to the wrong situation will slow everyone down. If this must be done, be sure to plan accordingly — leave extra time and invest in training or coaching.
5. Getting Off to a Slow Start
I’ve seen many projects get the green light only to meander aimlessly for a few weeks, or even months — under staffed, under funded, and under prioritized. Eventually, someone decides that the project is important. Great! But now the team is so far behind schedule that failure is assured. Don’t commit to a project until everyone is ready to focus on it.
6. Inadequate Design
This can stem from poor planning or weak personnel. Either way, the team gets far along in the project only to discover that the software design cannot handle some aspect of the solution. Code needs to be tossed out and re-implemented. (This isn’t re-factoring. This is re-designing.) It’s another problem that can’t be completely avoided but it’s always a good idea to tackle the tough implementation issues in early iterations.
7. Cutting QA Time and Effort
When time is tight, and it always is, quality assurance testing and other quality-driven activities are the first to get cut. It’s far better to deliver less, high-quality functionality than more of the low-quality variety. Think about it. Less is more.
8. Creeping Scope
During any project, items will arise that weren’t built into the schedule. Because we all want to be helpful (and liked), we often agree to “see what we can do”. It’s a good idea to build some extra time into the schedule to handle ad-hoc requests. However, if a request is more than a few hours of work, it belongs as a line item on the schedule or backlog.
9. Cutting Corners Under Pressure
When a project runs into trouble, there is a strong tendency to cut corners so as to get back on track. Those shortcuts result in technical debt that will need to be repaid, if you’re lucky. If you’re not so lucky, the shortcuts will cause even more problems and the project will cascade into chaos. Do what you have to do in meeting commitments. Just be smart and keep it visible.
10. Insufficient Risk Management
Too many projects ignore risk management. Ignorance is bliss, right? Why tempt fate? If something goes wrong, you’ll deal with it when it happens. While you can’t plan for every possible contingency, you have to plan for some disruption. If your plan assumes that the planets will align perfectly, you’re already late and over-budget.