The Naive Notion that Agile Mitigates Risk
Top 5 Ways Agile Mitigates Risk is one of those posts that's correct in what it says at the detail level - more or less, but not right in principle.
Agile Mitigates Risk - is not correct. Agile provides rapid identification of risk. That's all.
First, let's start with risk, risk management, and risk management frameworks.
First, all risk comes from uncertainty,
Uncertainties are thing we cannot be certain about. Uncertainty is created by our incomplete knowledge - not by our ignorance
What is risk management?
Risk management is an endeavor that begins with requirements formulation and assessment, includes the planning and conducting of a technical risk reduction phase if needed, and strongly influences the structure of the development and test activities.
Two types of uncertainty create risks to an Agile Project. Aleatory (irreducible) uncertainty creates risk from the naturally occurring random behaviors of the projects. Things like defects, productivity of the development staff, estimates of effort, and random performance issues. Epistemic (reducible) uncertainties from event-based occurrences. These are probability-based. We probably needed to order more SAN for our first 3 months of operations, and we'll run out of fast-access storage. The probability that there will be 5 times the number of users logging in will crater our current server configuration. Remember the Affordable Care Act site's first months of operation. Or the probability that our test coverage is not sufficient for the needed reliability of our offering. Remember the Affordable Care Act's first months of operation? These risks are risks to the success of the project. The blog's risks are mostly process failure risks.
When we say uncertainty, we speak about the future state of an external system that is not fixed or determined
Uncertainty is related to three aspects of our program management domain:
There are several sources of risk from both Aleatory and Epistemic uncertainties.
The relationship between Uncertainty and Risk is:
Recommended by LinkedIn
This distinction is important for modeling a program's future performance of cost, schedule, and technical outcomes. Both Aleatory and Epistemic uncertainty create risks.
These unavoidable uncertainties create risks for software projects.
The processes needed to Manage the risks created by these uncertainties include:
So, Let's look at the suggestion from the Blog that Agile Mitigates risk.
The notion that most risks can be avoided is naive at best, along with Agile preventing risks from occurring. Both are not true.
Agile provides a good means of identifying risk. Agile is NOT a risk management process. Agile does not prevent risk. Only margin or explicit risk reduction activities can mitigate risks. Risks can not be prevented. They can only be mitigated, avoided, transferred, or ignored.
Posts like this are common. It's because the source of information needed to identify, manage, and reduce risk on software projects is not being read by developers applying Agile. It's one of those repeated occurrences of using a word whose meaning is unknown.
And, of course, one final thought
In order to handle risks - reducible and irreducible - through mitigation, transferring, ignoring, or accepting the risk - we MUST be able to estimate several things about the risk:
This is Risk Management, and Agile is NOT risk management. Agile is one part of risk management - Identification, potentially tracking, a contributor to control, and a contributor to communicating the risks.