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.
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.
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.
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.
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.
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.