The 8th Light University Archives Series features engaging, innovative talks featuring 8th Light designers and developers sharing their insights and knowledge. Join as we cultivate a culture of continuous learning.
Every software project worth doing comes with risks. Your ability to respond to those risks depends on how prepared you are. Different risks warrant different strategies, and while teams can avoid or evade risks that are not core to the project, other risks require teams to contain or mitigate them.
The containing strategy requires having the resources to handle the risk when it materializes — including new team members, new server capacity, or new tools. Not all risks can be solved by increasing scale, some require more thoughtful mitigation strategies.
So, how can teams approach project risks and mitigation strategies in a systematic way? In this 8th Light University talk, I discuss how to find risks, what to do about them, and how Agile development practices help us manage risks.
Risks Inherent to All Software Projects
Missed deadlines are risks dependent on planning and estimation of work. All that happens before any code is written. Teams notoriously engage in wishful thinking and make overly optimistic estimates. This makes it important to follow a project plan that adds a buffer, to accommodate inevitable delays.
Plans should also allow for easily overlooked tasks such as spikes, cleanup, andtech debt, which is a risk that starts small, then grows larger the longer it waits.
Agile helps mitigate these risks with regular planning meetings and retros. These intervals allow the team to check their assumptions and change estimates as they learn. They also accommodate regular backlog grooming, helping the team keep eyes on technical debt.
As a project moves along and the system comes to life, teams can lose focus on specific project goals. Project stakeholders will say things like, “But we also need this and that,” or “This looks great, but I meant …” This kind of scope creep is a natural byproduct as a product evolves, but the team must be aware of the tradeoffs that come with adding to requirements.
Agile helps reduce inflation by specifying requirements up front with acceptance criteria and acceptance tests. By holding regular check ins and demos with stakeholders, teams can take control of the system’s evolutions and velocity.
Employee turnover is inevitable. People on your team will get pulled onto other teams, other projects, or even other companies. Even much-deserved vacations can disrupt a product’s timeline.
Agile practices like pair programming and frequent release cycles can help developers maximize shared knowledge so progress doesn’t stop when one team member is away. By keeping a “ship anytime” mentality and breaking large features into smaller chunks of work, agile also makes it easier for a new team member to contribute while getting up to speed.
Productivity depends on more than motivation. Does your team have the tools, access, and skills needed to do the job? Do you have a subject matter expert who can help remove technical blockers? Is the customer available for questions?
Productivity can change throughout the course of a project, especially if tech debt accumulates. Yesterday’s problem is today’s risk, and poor code quality can derail progress quickly.
Agile practices such as post-mortems (on the project level), and retros (at the iteration level), can help create a culture of knowledge sharing, continual learning, and collaboration, to keep morale, motivation, and code quality high.
How To Prepare For When Risks Become Reality
For each risk your team discovers, write down:
- Indicators of risk materializing
- Estimated impact of the materialized risk and probability of it materializing
- Mitigation actions and contingency actions (both in advance)
These write-ups will help your team think through risks and possible solutions, giving you options in the event of a crisis. They cannot be left to stagnate over time though, and must be continually reviewed and updated throughout the project lifecycle. A project manager can help monitor risks and iterate on risk discovery to catch late-apparent risks.
Even the best plans will run into roadblocks and unexpected delays, so it remains important to follow agile practices that generate quick feedback.
And finally, it is important to stay curious. Ask your peers in other projects, colleagues, and the community at large for their experiences and insights, and use short iterations to fold this wisdom into your product.
Resources for Additional Learning
- Waltzing with Bears: Managing Risk on Software Projects
- Written by Tom DeMarco and Tim Lister before Agile, this book is older but still introduces general concepts that were part of this presentation.
- What Are the 10 Biggest Risks in Software Development? (Codebots)
- Risk Management in an Agile Lifecycle (Agile Alliance)
- Managing Risk with Scrum
About Robert Wenner
Robert Wenner is a principal software crafter at 8th Light. He fully embraces the Perl virtues of laziness (let the computer do the grunt work), hubris (write high-quality code so that people don't complain), and impatience (can't this be automated?).
About 8th Light University
8th Light University (8LU) is a semi-regular virtual event that is managed by 8th Light Inc, a global software consultancy. Topics focus on improving the craft of software development. Developers of all skill levels are welcome! Watch past event videos on YouTube or join the 8LU group to find out about upcoming events.