How to Manage Software Development Risks in an Agile Environment
Every software project involves elements of risk. Depending on the nature of the project, these risks can vary, but they can typically be grouped into five categories.
5 Types of Software Development Risk
- Budget Risk: the risk of projects going over budget. Perhaps the most common risk in software development and often tied to other risks.
- Personnel Risk: the risk of losing or absence of project team members. Even if for a short period, this can result in delays and errors.
- Knowledge Risk: when there are knowledge silos or the transfer of information is poor. The process of relearning results in additional labor, time, and resources.
- Productivity Risk: this risk is common in long projects, particularly when deadlines and goals are long-term. This environment creates a lack of immediacy which results in a lack of urgency of work.
- Time Risk: product delays are all-too-common in software development, typically the results of poor planning, unrealistic timelines, and the inability to adapt to changing product requirements.
Managing These Risks in Agile Development
The agile methodology inherently addresses many of these risks. That said, they are still prevalent in many agile environments, often because of project team mistakes, planning errors, failures in process, and unexpected changes as products evolve. Below we will address each software development risk and how it can be managed to mitigate delays, mistakes, and other barriers to shipping a successful product.
Risk – Budget
Solution – Rolling Wave Planning
In product development, you necessarily make assumptions that cannot be proven or disproven until more information becomes available. As development progresses, objectives or goals may shift, or the product may need to pivot to be viable.
Rolling wave planning is designed to account for this. Teams make product decisions when they are in the best position to make them, rather than presenting very detailed plans at the beginning of the project. Therefore, you make actionable decisions that are informed by new knowledge and the progression of the product. This mitigates budget risk because you do not have to waste time and resources for re-planning.
Risks – Personnel, Knowledge
Solution – Squad-based development
Squads are 10-12 person, co-located teams that plan together, share knowledge, complete code reviews and work together on a given project from beginning to end. They have a known maximum capacity and open flow of knowledge, which helps address both personnel and knowledge risk, as it eliminates knowledge silos and gives team members the ability to seamlessly take on tasks if somebody is absent or leaves the team.
Risk – Productivity
Solution – Sprint-based Development
Sprints are iterative development phases with the purpose of accomplishing a demo version of the product within the given timeframe (in our case, every two weeks). They serve to provide actionable goals and objectives to product teams and add a sense of immediacy and short-term accomplishment. This helps to mitigate complacency and maintain velocity by dividing work into smaller, manageable tasks.
Risk – Time
Solution – Process
Time risk can emerge from scope creep, gold-plating or the “perfection complex”, improper capacity planning, and rigid development processes. A replicable, flexible process is the most effective way of dealing with common causes of time risk.
In an agile environment, your process should encourage flexibility so you can adapt quickly to changing product needs; promote rapid and frequent delivery; contain change management controls, and have formalized capacity planning so you can accurately predict project velocity. The practices mentioned above – sprints, squad-based development, and rolling wave planning – help teams better manage time and expectations to mitigate product delays and minimize risk.