Successful Software Management:
Why Do Projects Fail?

Open any software management text, and you'll see long analyses of why software projects fail.  However, every cause of failure has something in common: They are all risks.  Every project failed because something went wrong -- after all, very few projects actually plan to fail.

The risks that caused a project to fail were either known in advance (and were not controlled) or they were unexpected.  In the previous article, we discussed tools you can use to identify hidden project risks.  Today, we'll discuss the areas of your project where those risks are likely to be hiding.  Apply the tools you've learned to these risk categories, and you'll be on your way to a comprehensive assessment of the risk in your project.

This list may appear at first to be overwhelming.  Remember that the goal of risk identification is to understand where your project's greatest risk exposures lie.  Yes, you should examine each risk category when looking for project risks, and you will probably identify several potential risks in each category.  But once you've identified your list, you need to understand the probability and impact of each, and focus your efforts on the risks with the highest exposure.

Quantitative versus Qualitative Risks

The first three groups of risks (Cost / Schedule, Scope, and Quality Risks) are the ones which immediately come to mind for most project managers, when analyzing risk.  These are the risks directly associated with the objectives of the project.  They're also the risks that can be assessed quantitatively, as you can directly measure whether or not the objective is being met.  Quantitative risks also involve more considerations for mitigation and tracking than qualitative risks (for example, by including a risk allocation in the schedule and using formal trigger points), but this is a topic for a future article.

However, quantitative risks have an important characteristic.  That is, quantitative risks are often symptoms of more fundamental, qualitative root causes.  An example could be a negative company culture, which could cause demotivated employees to drag their feet in completing tasks on time.  When analyzing quantitative risks, be sure to perform some level of root cause analysis (as we discussed last time).  Your chances of success will be much improved if you mitigate the risk's cause, rather than its symptom.

Here follows, in no particular order, the main categories of risks that you could encounter.

Cost and Schedule Risks

Cost and schedule risks could be considered separately, of course.  I've chosen to combine them here because of the close (albeit non-linear) relationship between the cost and schedule of a feature.  The core problem behind cost is whether a task will take more effort than expected to complete.  The core problem behind schedule is whether the necessary resources will be available at the right time to execute the task.

Some cost and schedule risks seem obvious.  Poor estimates of cost, time, and resources can lead to cost and schedule slips, as can unrealistic expectations (which are often influenced by the legitimate business need to cut costs and deliver early).  But for each of these risks, work to understand and target the root cause.  After all, you may be able to alleviate unrealistic expectations by improving the relationship with your customer, or improve your estimates by bringing in historical data from other projects.

Here are some other sources of cost and schedule risks that you should consider:

  • Correct task sequencing: Do have a good understanding of the required task sequencing,  so that tasks can start on time?
  • Unknown dependencies: Are there any internal or external dependencies that you have not yet identified, which may cause a task to start late?
  • Critical path: Is your critical path understood and controlled?  Some tasks can slip with minimal impact, but slips along the critical path will affect your schedule.
  • Resource dependency: It's very possible that a resource may not be available to start a task on time, as other tasks (possibly unrelated to the project) may slip.  Are you controlling this risk?
  • Consider all resource types: Software managers often use the term "resources" when referring to people.  But there are a lot of pieces to delivering a successful project.  Make sure you have sufficient machines for builds, testing, and integration, sufficient software licenses, and adequate test data.
  • Integration: Integrating and stabilizing external deliverables can be time consuming.  Are these adequately scheduled?  What are your plans if integration goes awry?
  • Listen to your instinct: Does your intuition and experience tell you that something doesn't look right?  If so, dig deeper.

Scope Risks

Scope risks are indeed quantitative risks, as a project's requirements can be identified, counted, and the status of each can be independently reported (for example, how many features have been implemented, tested, and accepted by the customer so far?).  Viewing scope in a quantitative way also helps mitigate scope creep, as the binary nature of accepted versus not accepted avoids the trap of the feature stalling at "95% complete".

Scope risks generally involve how well the required features are understood and specified, and how prone they are to change.  It is important to remember that this includes implied requirements.  These are requirements that are unarticulated, but are assumed (by the customer) to be included in the project.  Be sure to recognize that implied requirements do exist, even if they are not obvious at first.  Work to identify these -- they could come back to haunt you in the future.

Every new change request is a change to the baselined scope of the project.  Understand how well managed your scope change control process is.  What change requests are you required to integrate?  Are these likely to appear?  Also, remember that the customer and the development team will often have different opinions of what is an enhancement and what is a bug.  A feature may be "working as designed", but if it doesn't meet the customer's (possibly implied) expectations, then they may expect it to be handled as a bug.  These large-scope defects can derail a project, so it is important that you identify and mitigate unplanned enhancements early.

Quality Risks

Quality risks are perhaps the most often quantified in a project.  Metrics such has the number of high severity defects in the product are common measures in a project.  However, quality risks are also the most likely to have underlying root causes that need to be mitigated.  After all, it is not simply a matter of telling people to add fewer defects.  The process, the culture, the individual, the technology, the project's dependencies, and many other factors all come together to cause potential quality problems.

The first question you need to ask is what is the required reliability of the product.  We all want perfect code, but quality also has a price.  The higher the quality and reliability requirements, the greater the associated risk, so scale the level of quality risk management appropriately to the requirements of the project.

The next question to ask here is when are problems found.  Are they found early in the project or are they found later?  Are you testing throughout or do you test at the end?  Remember that the earlier in the schedule that you find and fix a defect, the cheaper it is to find and fix.  At the extreme, the least expensive approach is to figure out how to avoid introducing the defect in the first place, which requires proactive mitigation of your quality risks.

Business Risks

The risk categories that follow are qualitative in nature.  This has a few implications.  The first is that they are the risks that are most likely to be ignored in your risk planning (perhaps, with the exception of technical risks and dependency risks).  The second is that they are the risks that are most likely to be the root causes of the quantitative risks you identified earlier.  This makes identifying and mitigating your highest exposure qualitative risks absolutely critical to avoid project failure.

The business risk category is quite broad, and of course, depends heavily on your market.  If your market is heavily regulated, is there a risk that a regulation may change, suddenly restricting where you can sell your product?  (I encountered this myself, in one project.)  As well, what are your competitors doing?  Is there a chance that they can beat you to market, or introduce similar functionality, so that you suddenly need to differentiate your product in another way?

Business risks require project managers to look beyond the confines of their project.  The project may have delivered within all its stated objectives, but if a change in the business environment has made that project obsolete, then the team should not be celebrating a victory.  To be successful, businesses need to stay in business, and projects which don't achieve their business goals will not help the company stay afloat.

Process and Environment Risks

Most groups recognize that their processes and other aspects of their environment (such as tools) impact their ability to successfully deliver a project.  Note that success does not directly correlate with the level of process.  You need to have the level and type of processes that are appropriate to your team and your project.

As an example, most agile development gurus will acknowledge that the agile approach is an ideal fit for new product, R&D-oriented projects.  Agile approaches integrate learning and uncertainty into the development process.  But at the other extreme, some projects are well defined, well understood contract engineering activities.  In these projects, a more traditional methodology may be a better match.  The point here is that one approach is not inherently better than the other -- they are best suited to different projects.  If your process is not a match for the needs of your project, then you have a risk that you need to track.

As well, regardless of the methodology you use, where are its weak points?  Do you spend too little time (or too much) doing documentation and reviews?  Is your tracking process sufficient, so that you identify project slips early?  Is your integration process appropriate to your supplier / dependency risks?

This also applies to the maturity of your tools.  Do you have a memory-intensive application?  If so, do you have good tools to profile your memory use and identify if you've introduced memory leaks?  Alternately, does your process dictate that you use these tools, even though they are not risk areas for your project?  If your development environment does not match the needs of your project, then your facing more potential risks.

The most important process risk that you need to be aware of is: Do you have a process in place to manage and mitigate your risks on an ongoing basis?  If your risk management process is still immature, then you need to spend extra personal effort to make sure it gets done.  Too often, risk planning is done at the start of the project (if it is done at all), and then it is ignored.  But when the project fails, it fails because of a risk that should have been identified and should have been mitigated.  Yes, the possibility that you don't follow up on your risks is probably the biggest risk you face.  Remember this, and act on it. 

Technical Risks

Fortunately, most project teams are fairly comfortable identifying technical risks.  I won't go into too much depth here, except to identify some possible candidates to help kick-start the conversation with your team.  These include:

  • Size and complexity of the algorithms
  • Size and complexity of the interfaces
  • Size and complexity of the databases
  • Performance requirements versus resource constraints
  • Testing requirements versus testability of the product
  • Product requirements versus capabilities of the technology
  • Behaviours or limitations of any virtual machines versus physical machines

The challenge for technical risks is not in identifying the risks.  The challenge is following through on the mitigations you identify.  Once you've identified your highest exposure technical risks, make sure you allocate and track the tasks necessary to mitigate them. 

Human and Cultural Risks

I was speaking with Sandeep Naik at Varian about risk management, and he also observed that when teams identify their risks, the risks are often limited to objectives risks and technical risks.  However, as we've seen, the root causes of project failure are often qualitative risks.  And in software development, which is, first and foremost, an intellectual activity, those qualitative risks ultimately come down to human issues.  In spite of this, the only human risk that appears on many risk registers is "Attrition", and even then, it is only included as a checklist item, with no real follow-up.

Sandeep suggested a good list of human risks that you need to consider, and I've added some others as well:

The match between the individual team members' skills and their tasks: This is not only the match for their technical skills, but the match for their soft skills as well.  If the project requires a lot of collaboration and brainstorming, is the individual comfortable with that, or would they prefer to go off and work by themselves?  Are they able to remain focused on their tasks, or do they tend to go off on uncontrolled tangents?  Is this the kind of work that they enjoy doing?  If the project is a poor fit for the interests of the individual, then you need to be more aware of the risk that they may not perform as well as others.

The capabilities of the team leadership: This could require some self-awareness, if you are they key team leader.  Your management style is critical here.  Is it appropriate to the needs of the project and the individuals on the team?  A pace-setting management style can be appropriate for short bursts for aggressive targets, but it may cause team members to burn out.  Alternately, a more collaborative approach can be ideal for research-oriented projects, but may not be sufficient when deadlines get close.  Be honest with yourself about the strengths and risks of your leadership style, and mitigate the risks by adapting to the situation.

The experience that the team has had in working together: How much experience does the team have in working together?  Has the team had a chance to bond yet?  The dynamics of each team are different, and it takes time for a group of people to evolve from independent individuals to a smoothly operating, high performance team.  During this initial stage of "getting used to each other", personality conflicts may arise, or individuals may be scared to ask questions.  Activities like team-building exercises or engaging people at a personal level can go a long way to mitigating these risks.

The culture of the team: Once a team has bonded, there is still the risk that the team's culture may not be very positive.  Do they get along well?  Is the team solution-oriented or do they tend to seek blame (inside or outside the team).  Do they question each other or do they simply focus on their own work?  Can they speak openly and constructively to each other, without fear of looking bad?  If team members are not able to work comfortably together, then you have a problem which will probably interfere with your deliveries.

Co-location versus distributed teams: If the project team is distributed across multiple sites, do the individual teams work well together?  Are lines of communication in place and functioning well?  If the teams are in different cultures, this can also be a source of conflict, especially if this leads to communication problems.  Do the teams trust each other?  It is very easy to lose trust when you don't see people on a daily basis.  In fact, Human Resource Executive Online found that remote working relationships are almost 3.5 times more likely to encounter problems than relationships in the same location.  This applies even more strongly to remote suppliers, collaborators, and customers, as the team members have not had the opportunity to build close relationships and trust.  Be aware of this and mitigate it.

Cross-functional teams: Teams with members from different business functions can be very powerful, because it exposes the teams to different perspectives and challenges traditional assumptions.  However, it introduces additional risks, because the individuals now have different motivators, ways of thinking, and communication styles.  This can cause personality conflicts, especially if the individuals have not worked closely together before.  They may also have already formed their own preconceptions about team members from other departments ("Those salespeople only care about signing the deal, not about whether we can actually deliver!").  As with all human and cultural risks, keep your eyes open and mitigate early.

The level of communication required within and outside the team: Communication issues can arise any time, with any number of stakeholders.  A stakeholder is anyone who is affected by or who can influence the outcome of the project.  Stakeholders can be internal or external to the team and the organization.  They include senior management, the customers, the users, the team members, and often the public as well.  Good communication and mitigation of stakeholder risks go hand-in-hand.  Project stakeholders are often overlooked in project and risk planning, but they can often derail your project, especially in public, high profile activities.  But even in lower profile projects, if there are people in your organization whose buy-in throughout the project is critical, this is a risk you must mitigate.  Understand who your stakeholders are, and communicate with them effectively.

Dependency Risks

Dependency risks are analogous to supplier management risks, for those familiar with PMI's PMBOK terminology.  Project dependencies can be either internal or external to your organization, and could involve software (e.g. toolkits and libraries), hardware, and other forms of intellectual property (e.g. algorithms).  This also includes deliverables from non-development groups, such as marketing, sales, quality and regulatory, and documentation teams.  Any deliverable from another team which affects the successful delivery of your project is a potential dependency risk.

You also have to look beyond the release date(s) for deliverables you depend on.  Potential risks include the turnaround time for required changes, and the quality and scope of the deliverables.  Is the development model you are using appropriate for your project?  For example, is the interface very complex, possibly requiring a continuous integration approach, or is the interface and behaviour very straightforward, which would tolerate less frequent releases?  Also ask yourself if better suppliers are available.  Even if you are not able to change suppliers, knowing where your supplier's weaknesses are allows you to mitigate them.  For example, if you know your supplier typically delivers on time but sometimes has quality problems, then you know where you should focus your mitigation efforts.

Culture plays a large role for dependency risks as well.  How good is your relationship with your supplier?  Are you working to a common goal, or will the focus be on the letter of the contract?  Also, what type of contract do you have?  Fixed price contracts, time-and-materials contracts, and profit and risk sharing contracts all lead to very different project dynamics and behaviours.

Lastly, each of the risk categories above (cost and schedule, scope, quality, business, etc.) applies to your suppliers as well, so make sure you ask these questions.  For example, a business concern for your supplier may be the demands of another customer, threatening to pull resources off your deliverable.  Dependency risks can be critical to your project, and must be understood.

What Next?

This list can certainly appear overwhelming.  That's understandable -- you can't effectively mitigate every risk!  There simply is not enough time in the day.  Identify your risks, analyze their probability, impact, and exposure, and use the exposure to evaluate the priority of each risk.  Plan your mitigations can contingencies for your top priority risks, and simply monitor the others to make sure their exposure doesn't suddenly increase.

Risk mitigation is critically important for successful project delivery.  Despite this, teams routinely ignore their risks, or at best, fail to follow through on their list of mitigations.  Be honest in identifying risks, solution-focused in developing mitigations and contingencies, and follow through on managing your risks.  If you are prepared for the risks that materialize, then nothing stands to prevent you from a successful delivery.

Lastly

What types of risks do you typically encounter?  How do you mitigate them?  Let me know!  Of course, if you have any questions, or if you would like more information on how to implement these or other software development processes in your organization, please feel free to contact me at Charles@CharlesConway.com.

If you know of someone who may find this article of interest, please forward it on!

Good luck!
Charles

Home Charles Conway: Home
Some Past Articles
The 10 Things You Must Do Differently to Innovate
Disruptive Innovation - How To Make It Work
Do You Track the Right Objectives?
Does Your Risk Register Look Like This?
Find Hidden Project Risks
How Do You Manage Uncertainty in Your Estimates?
How to Improve Your Decision Making - Sunk Costs
When Should Executives Drive Innovation?
When Should Intrapreneurs Take The Lead?
Why Do Projects Fail?
 
Home Charles Conway: Innovation and Software Process Improvement Privacy Policy

Email me at Charles@CharlesConway.com

© Charles Conway