This blog is the third in a series about agile and risk management. The other blogs are:
- “Three Key Agile Risk Management Activities"
- “Agile and Risk Management: The Mental Model of Uncertainty”
What is Antifragility?
In this blog I introduce the concept of antifragility and begin the discussion of how this concept applies in dealing with risks during agile development. I will leverage this concept in future blogs as well.
Antifragility is a term coined by Nassim Taleb in Antifragile: Things That Gain From Disorder.
To understand antifragile, let’s first define its opposite, fragile; things that are fragile are harmed by disorder. For example, a crystal glass is fragile. If you set one on a table and the kids get playful and bump the table or there is an earthquake, and the glass falls to the floor, it will likely break. To protect such a fragile thing you might keep it in the china cabinet and only take it out on rare, very special occasions.
If you ask most people: “What is the opposite of fragile?” they would probably say robust or resilient. If you put a metal can on the same table and the kids or an earthquake knock it to the floor, the metal can likely won’t be harmed. It is therefore robust (within a certain range—drop it from an airplane and it will likely be harmed) to the uncertainties or vagaries of our environment.
However, being impervious to or unaffected by disorder (robust) is really not the opposite of being harmed by disorder. Since no single word exists that means “the opposite of fragile,” Taleb created the term antifragile, which is defined as things that benefit from disorder. So things that are antifragile actually get better, or thrive, in the presence of disorder.
Using a humorous example, Taleb compares fragile and antifragile by the sticker we might put on the outside of a box used to ship either a fragile or an antifragile item.
A good example of something that is antifragile is the body’s immune system. When exposed to a low dose of a pathogen, the body’s immune system starts to develop an ability (immunity) to fight the pathogen. So, if at a later time the same body is exposed to a higher dose of the same pathogen, it is better able to defend itself. In this respect, the body’s immune system is antifragile. Up to a certain threshold (e.g., too high an initial dose might kill you), the body benefits by being exposed to a variety of pathogens. Which is why parents who try to prevent their children from ever being exposed to any germs are only succeeding in making their children more fragile to the real world in which they must live.
Agile Development is Robust and Antifragile
Using the triad of fragile, robust, and antifragile we can better understand how risks are addressed in agile product development. Let me begin by positioning waterfall and agile along this triad (as shown in the following picture).
The phased-based, sequential, predictive, plan-driven approach to product development (often referred to as waterfall) is very fragile. Such an approach assumes we can get things right up front and that change will be minimal or of little consequence. These assumptions are almost always wrong in the context of product development, and thus a development approach based on them is fragile to the uncertainty, randomness, and disorder of the actual environment in which we must operate. To see more characteristics of waterfall that make it a fragile approach to product development, see my blog "Scrum & Waterfall: An At-a-Glance Comparison of Their Underlying Principles."
I believe that agile product development partially spans the domains of robust and antifragile. In many ways agile development makes us robust to uncertainty. For example, if a vendor fails to deliver a component when promised (a project risk), we wouldn’t necessarily benefit from this. However, by keeping our options open to the use of the component or to the source of that component, we can be resilient or robust to such uncertainty. So we may not be harmed by the uncertainty, but we also don’t really benefit from it.
There are other times, however, when properly applying agile development does allow us to benefit from the uncertainty in our environment. For example, getting fast feedback on the product we are building makes us antifragile. Learning quickly that we are heading down the wrong path helps us prune a bad path fast and possibly exploit emergent opportunities sooner, both of which lead to a better outcome (building a product that actually delights customers). As a result, by applying core agile principles, we would benefit from the uncertainty (surrounding actual customer needs) associated with developing a product.
I will be providing more detailed examples of how agile development can be antifragile in future blog postings in this series.
Antifragility and the Mental Model of Risk
In the previous blog (“Agile & Risk Management: The Mental Model of Uncertainty”), I introduced a model for how to think about uncertain events. How does antifragility relate to that model?
In a situation where you have the opportunity to exploit uncertainty, the goal is not to eliminate uncertainty. Instead you want to exploit the uncertainty that increases your economic value and protect yourself against the uncertainty that could decrease your value.
In this model the Expected Monetary Value can be affected by either changing the probability that an uncertain event might take place, or the consequences if it does. Estimating the probability of uncertain events (especially uncommon events) is particularly error prone. In addition, it might be difficult to take actions that would actually affect the probability.
On the other hand, calculating the consequence of an uncertain event can typically be done is a reasonably accurate way. Meaning, it is often far easier to determine if something is fragile or not (through its payoff function) than to predict the occurrence of an event that may harm it. Also, we often can take actions that would change the consequence(s) of an uncertain event.
So, the idea is to focus on where our development process is fragile (were randomness and uncertainty can harm us), rather than predicting and calculating the future probability of uncertain events and then trying to alter their likelihood.
Determining if Something IS Fragile or Antifragile
We detect the degree to which something is fragile or antifragile using a simple test of asymmetry: anything that has more upside than downside from random events (or certain shocks) is antifragile; the reverse is fragile. In this respect, fragility and antifragility come on a spectrum of varying degrees. Let’s illustrate this idea.
The left side of this picture illustrates antifragility. If X is a variable whose value is uncertain (i.e., it can vary along a range of values), then if X moves say 5 units in a favorable direction, we would gain more than if X moves 5 units in an unfavorable direction. In other words, if the area under the “gain” side of the curve is greater than the area under the “pain” side of the curve (we have a positive asymmetric payoff function); we are antifragile. This corresponds to the earlier comment of when you have more to gain than to lose in an uncertain environment you are antifragile.
The fragile situation is shown on the right side of this picture. In this case, the pain area is greater than the gain area (a negative asymmetric payoff function). So, in this situation we have more to lose than to gain in the presence of uncertainty, so we are fragile.
My goal for this blog was to introduce the concept of antifragility and its relation to fragile and robust. I pointed out that a waterfall approach is typically very fragile whereas an agile development approach is at times robust and other times antifragile. I demonstrated why antifragility is generally a very desirable characteristic, and how you can determine if you are antifragile (positive asymmetric payoff).
In subsequent blogs I will discuss how proper application of agile principles allows us to have asymmetric payoffs and thus frequently makes us antifragile in the presence of uncertainty during product development. In other words, if we apply agile principles correctly, we create situations where we have positive asymmetry and therefore are in a good position to exploit the uncertainty in our environment to our advantage!