<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:media="http://search.yahoo.com/mrss/" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>Resilience in Software Foundation : News</title>
    <link>https://resilienceinsoftware.org/feeds/fbfef454aa2263e27c3975d1ff28ed2815c5/communication_posts.xml</link>
    <description>Recent news</description>
    <atom:link href="https://resilienceinsoftware.org/feeds/fbfef454aa2263e27c3975d1ff28ed2815c5/communication_posts.xml" rel="self" type="application/rss+xml"/>
    <item>
      <title>Superficial Blamelessness</title>
      <description>&lt;p dir="ltr"&gt;In 2012, John Allspaw (then CTO of Etsy) wrote a &lt;a href="https://www.etsy.com/codeascraft/blameless-postmortems" rel="nofollow noreferrer noopener"&gt;seminal blog post&lt;/a&gt; on the need for what he called Blameless Postmortems. Built off the notion of a “Just Culture” from the research of &lt;a href="https://www.amazon.com/Just-Culture-Sidney-Dekker/dp/147247578X" rel="nofollow noreferrer noopener"&gt;Sidney Dekker&lt;/a&gt;, he summarized Etsy’s approach to balancing accountability in post-incident reviews with a need for avoiding blaming individuals who were involved in the incident:&amp;nbsp;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p dir="ltr"&gt;“Having a "Just Culture" means that you’re making [an] effort to balance safety and accountability. It means that by investigating mistakes in a way that focuses on the situational aspects of a failure’s mechanism and the decision-making process of individuals proximate to the failure, an organization can come out safer than it would normally be if it had simply punished the actors involved as a remediation.”&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p dir="ltr"&gt;He goes on to explain how engineers involved in incidents can be encouraged to give detailed accounts of what happened without fear of punishment or retribution. The word blamelessness took on a life of its own and became slightly disconnected from Dekker’s research and John’s blog post. Further refinements such as &lt;a href="https://dev.to/reinh/beyond-blameless-3oif" rel="nofollow noreferrer noopener"&gt;blame-awareness&lt;/a&gt; came in to add some nuance to the ongoing discourse as well.&lt;/p&gt;
&lt;p dir="ltr"&gt;For many organizations, some form of &lt;em&gt;blamelessness&lt;/em&gt; has become a more standard practice and &lt;em&gt;blame-awareness &lt;/em&gt;has been gaining in popularity. However, there is an anti-pattern I have noticed as well, which I like to call superficial (or shallow) blamelessness that I think is important for people to be on the lookout for.&lt;/p&gt;
&lt;h1 dir="ltr"&gt;Why Try to Be Blameless?&lt;/h1&gt;
&lt;p dir="ltr"&gt;Resilience Engineering, and many of the connected disciplines it borrows from, aims to leverage incidents and the energy put behind them to better understand how a system works. The idea goes, the better you understand the dynamics in play, the less likely you are to make misguided suggestions, to operate on false assumptions, and to create accidental harm (among many other things).&lt;/p&gt;
&lt;p dir="ltr"&gt;Disciplines that look at complex systems prefer to focus on &lt;em&gt;interactions between components&lt;/em&gt; rather than specific parts themselves (what many consider to be the “root cause”): individual units can be working fine—reliably and in accordance with their goals—but still end up behaving surprisingly &lt;em&gt;as an ensemble.&lt;/em&gt;&lt;/p&gt;
&lt;p dir="ltr"&gt;Looking at the parts in isolation may work well enough when your systems are simple: find what broke, replace or fix or tweak it, and move on. But as they scale up and become more connected to other systems, they also necessarily become more complex. As a result, the way we construct explanations about those systems has to change as well. Looking at so-called “faulty” individual components or people that need to be corrected provides diminishing returns and loses its effectiveness.&lt;/p&gt;
&lt;p dir="ltr"&gt;Eventually, this is why blame hurts. Blame fundamentally implies that someone or something misbehaved, that they are &lt;em&gt;responsible&lt;/em&gt; for causing the outcomes. Blame, as a concept, invites retribution. And retribution in turn drives people involved in adverse events to protect themselves, which means it becomes harder to learn from what happened.&lt;/p&gt;
&lt;p dir="ltr"&gt;So not only do we get a focus that is centred on individual units, we make it harder to ever get a better understanding on top of it. This is where concepts such as blamelessness (or &lt;a href="https://dev.to/reinh/beyond-blameless-3oif" rel="nofollow noreferrer noopener"&gt;blame-awareness&lt;/a&gt;) come from: we realize that blame is an expected reaction to surprising negative events, but also know that post-incident responses that lean into these feelings do not tend to be effective in the long run.&lt;/p&gt;
&lt;p dir="ltr"&gt;But being blameless isn’t purely a concept for justice to ensure we don’t punish people for being put in a tough situation by a system that doesn’t even realize it—although it certainly can help—it is also a concept that invites a stance that is systems-oriented.&lt;/p&gt;
&lt;p dir="ltr"&gt;You don’t just &lt;em&gt;avoid&lt;/em&gt; blame. It’s a natural feeling to feel blame, but you have to go past it and shift your perspective towards the system “owning” the situation.&lt;/p&gt;
&lt;h1 dir="ltr"&gt;What Makes Blame Superficial&lt;/h1&gt;
&lt;p dir="ltr"&gt;Superficial blamelessness will be easiest to spot when retribution is still the norm, whether officially or only informally. People will avoid naming employees or even teams, and internal reports will look as non-specific as if they were intended for an external audience. But even if you take away the “name” bit from the cycle of &lt;em&gt;name&lt;/em&gt; → &lt;em&gt;blame&lt;/em&gt; → &lt;em&gt;shame&lt;/em&gt;, the cycle lives on.&lt;/p&gt;
&lt;p dir="ltr"&gt;Organizations where blame is less “ambient” or better harnessed will instead consider it safe to name names, and will invite a conversation with the people involved to get their perspective—one they do not have as a bystander—to get a richer view of how the system works. But even in these places, where it might be safe to give your account of what happened, there’s not yet any guarantee that you’re getting what you should out of it all. Blame is only one of many blockers on the way to a better systems perspective.&lt;/p&gt;
&lt;p dir="ltr"&gt;Be wary of successfully avoiding retribution, yet finding your post-incident process still biased towards an individualistic stance instead of a systemic one. Consider, for example, whether suggestions of what to improve after adverse events mostly focus on what specific people involved need to do better, even without punishment. Common ones are:&lt;/p&gt;
&lt;ul&gt;
&lt;li dir="ltr"&gt;
&lt;p dir="ltr"&gt;Provide more training&lt;/p&gt;
&lt;/li&gt;
&lt;li dir="ltr"&gt;
&lt;p dir="ltr"&gt;Adjust a worker’s behavior&lt;/p&gt;
&lt;/li&gt;
&lt;li dir="ltr"&gt;
&lt;p dir="ltr"&gt;Write a specific patch or test&lt;/p&gt;
&lt;/li&gt;
&lt;li dir="ltr"&gt;
&lt;p dir="ltr"&gt;Be reminded to “pay more attention”&lt;/p&gt;
&lt;/li&gt;
&lt;li dir="ltr"&gt;
&lt;p dir="ltr"&gt;Add more reviewers or supervision to catch mistakes&lt;/p&gt;
&lt;/li&gt;
&lt;li dir="ltr"&gt;
&lt;p dir="ltr"&gt;Tweak the process or procedures &lt;em&gt;directly&lt;/em&gt; related to the incident&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p dir="ltr"&gt;The locus of intervention, in these cases, is oriented towards specific people or components. Some of these might be useful and helpful, but if they’re most of what you get, you can suspect a systemic point of view isn’t strongly developed yet.&lt;/p&gt;
&lt;p dir="ltr"&gt;More systemic interventions are those that would change the conditions that lead to challenging situations. You could, for example, change or clarify broad pressures and goal conflicts. Likewise, the behavior you didn’t like in the context leading up to an incident might be valued in “normal” circumstances. Software development, after all, can have contributing factors that come from other departments too.&lt;/p&gt;
&lt;p dir="ltr"&gt;You might also find items such as tweaking processes or procedures that go beyond the circumstances of the incident. Maybe someone found out that relevant and useful information came up in informal discussion groups: those could perhaps be encouraged more, or the recipe expanded to other areas important to the organization, because they can help foster a culture that can deal with surprises better. If you find other teams have solutions that exist already, it’s worth asking if they could be borrowed and propagated, but also what could make it easier to figure out if there are ideas worth borrowing. And why not go further and find out under what circumstances that other team figured it out to see if there’s something to learn?&lt;/p&gt;
&lt;h1 dir="ltr"&gt;Control-centric vs. Empowerment-centric Approaches&lt;/h1&gt;
&lt;p dir="ltr"&gt;The distinction between systemic and individualistic is usually a good marker, mostly observable once you are looking at a completed review process and its list of actions. It might not be visible yet, because the process isn’t over or continuous, and it might also not be simple: people do what they can given the circumstances.&lt;/p&gt;
&lt;p dir="ltr"&gt;Another angle in which you can frame this comparison between individualistic and systemic elements is going to be based on an opposition between control and empowerment. If you are approaching the problem from a stance where you need to restrict and control what people do to keep it within specific parameters because they are not operating as you expect them to, then you are taking a control-centric approach. Ask yourself whether this isn’t a subtle way to be blaming people for the problems they’ve been asked to solve.&lt;/p&gt;
&lt;p dir="ltr"&gt;An empowerment-centric approach would instead ask how you can make the work simpler,&amp;nbsp; safer, easier, clearer, or more manageable. Involve the people impacted in the process, not because they need to do better, but because the system needs to make sure they’re operating in better conditions.&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &lt;img src="/storage/4753047/download" alt="" width="130" height="130"&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Fred Hebert&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Staff SRE&lt;/p&gt;</description>
      <pubDate>Wed, 15 Apr 2026 22:30:00 +0000</pubDate>
      <guid>https://resilienceinsoftware.org/news/11502437</guid>
      <link>https://resilienceinsoftware.org/news/11502437</link>
      <media:content url="https://d21hwc2yj2s6ok.cloudfront.net/shrine_store/uploads/networks/3057/communication_news/11502437/compressed-56127c6f403a53544754f0e29d3aa87a.webp"/>
    </item>
    <item>
      <title>Saturation</title>
      <description>&lt;h1 dir="ltr"&gt;Saturation&lt;/h1&gt;
&lt;p dir="ltr"&gt;Every system has its limits. If you keep throwing more and more at a system, at some point it will no longer be able to function properly. The term &lt;em&gt;saturation&lt;/em&gt; refers to the state of a system where the demands on the system are high enough that the system is at the limits of its normal performance.&amp;nbsp;&lt;/p&gt;
&lt;p dir="ltr"&gt;Electrical engineering provides a helpful visualization of saturation. Imagine you want to amplify an electrical signal by a factor of four. This is the behavior you want.&amp;nbsp;&lt;/p&gt;
&lt;p dir="ltr"&gt;&lt;img src="https://resilienceinsoftware.org/storage/4452706/download" width="990" height="390"&gt;&lt;/p&gt;
&lt;p dir="ltr"&gt;However, real amplifiers have limits on how much the voltage can swing. With some amplifiers, you get a clipping effect, where the output hits some maximum or minimum voltage. In the graph below, this happens above +3.3V and below -3.3V: the signal goes flat instead of following the shape of the input.&amp;nbsp;&lt;/p&gt;
&lt;p dir="ltr"&gt;&lt;img src="https://resilienceinsoftware.org/storage/4452707/download" width="990" height="390"&gt;&lt;/p&gt;
&lt;p dir="ltr"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p dir="ltr"&gt;We say that the amplifier is in saturation when this happens. When it is in saturation, it no longer behaves like a linear amplifier anymore. Instead, it has undesired, non-linear behavior.&lt;/p&gt;
&lt;h2 dir="ltr"&gt;The Limits of Software Systems&lt;/h2&gt;
&lt;p dir="ltr"&gt;We often think of software as having an ethereal quality to it, “&lt;em&gt;only slightly removed from pure thought-stuff&lt;/em&gt;” as Fred Brooks puts it. But software needs to execute on hardware, and hardware always has physical limits. The primary physical limits of hardware are CPU cycles, memory, disk space, and network bandwidth. Each of these is a finite resource with fixed, limited capacity.&amp;nbsp;&lt;/p&gt;
&lt;p dir="ltr"&gt;Very bad things can happen if you fully deplete these physical resources. For example, if you exhaust the available physical memory on a Linux machine, the dreaded OOM (Out of Memory) Killer will terminate a running process to reclaim some memory, and it may be a process you would prefer to keep running.&lt;/p&gt;
&lt;p dir="ltr"&gt;Since bad things like OOM kills happen when you reach the physical limits of these resources, there are also virtual limits that engineers put in place to fail before running out of physical resources. For example, many applications use &lt;em&gt;resource pools&lt;/em&gt; as a resource management strategy: the two I know best are thread pools and database connection pools.&amp;nbsp; Once all of the resources in a pool are in use, new requests are queued, and the requester must wait for a resource to become free. The effect of queueing is that it increases latency, which changes system behavior.&lt;/p&gt;
&lt;p dir="ltr"&gt;Speaking of queues, there are queues everywhere in the system, and they frequently have their own virtual limits in the form of maximum sizes. For example, if you wanted to know maximum size of the queue for incoming TCP socket connections on the Linux system, you can see it by doing:&lt;/p&gt;
&lt;p dir="ltr"&gt;&lt;span style="font-family: 'Courier new';"&gt;$ sysctl net.core.somaxconn&lt;/span&gt;&lt;/p&gt;
&lt;p dir="ltr"&gt;&lt;span style="font-family: 'Courier new';"&gt;net.core.somaxconn = 4096&lt;/span&gt;&lt;/p&gt;
&lt;p dir="ltr"&gt;You can view various limits by using the &lt;span style="font-family: 'Courier new';"&gt;sysctl -a&lt;/span&gt; and &lt;span style="font-family: 'Courier new';"&gt;ulimit -a&lt;/span&gt; commands, including maximum number of IP ports, maximum number of threads, or and maximum number of open file descriptors.&amp;nbsp;&lt;/p&gt;
&lt;p dir="ltr"&gt;Even &lt;span style="font-family: 'Courier new';"&gt;sysctl&lt;/span&gt; and &lt;span style="font-family: 'Courier new';"&gt;ulimit&lt;/span&gt; won’t tell you about all of the limits on your system. I once saw a very confusing “No space left on device” error on a Linux system, even though there was plenty of free disk space. That was the day I learned that there is also a limit on the total number of files and directories that a given filesystem can support, even if these files aren’t consuming all of the space. In my case, the limit had been exhausted by a script that created many small files each time it was executed, but they never got cleaned.&amp;nbsp;&lt;/p&gt;
&lt;p dir="ltr"&gt;Cloud computing makes it easier for us to provision additional compute, disk, and network resources. We can even automate the process of deploying additional compute resources when we’re running low. Such automated systems are called &lt;em&gt;autoscalers&lt;/em&gt;, because they automatically request or return resources based on a signal that indicates load, such as CPU utilization or request rate. But even though we describe the cloud as being &lt;em&gt;elastic&lt;/em&gt; (that’s the E in Amazon services like EC2 and EKS), cloud providers themselves have a finite amount of resources. For example, you may get an &lt;em&gt;insufficient capacity&lt;/em&gt; error, which means that your cloud provider cannot currently meet your request for additional resources. In practice, autoscalers also have virtual limits, e.g. a configured maximum number of pods or virtual machines that it will scale up to, in order to protect against an expected runaway increase in the number of pods.&amp;nbsp;&lt;/p&gt;
&lt;p dir="ltr"&gt;Sometimes limits are imposed on us by external systems that we interact with. If your system interacts with a third-party system (such as a cloud provider) over an API, there’s a good chance that they enforce rate limits over those APIs.&amp;nbsp;&lt;/p&gt;
&lt;h2 dir="ltr"&gt;System Behavior Changes at the Limit&lt;/h2&gt;
&lt;p dir="ltr"&gt;Virtual limits exist to protect the system from breaching its physical limit. The idea is to reduce the potential damage to the system due to overload by failing earlier in a less harmful way. It’s similar to how a circuit breaker protects your house by opening a circuit to prevent the current from reaching a dangerous level. It’s annoying to have to go to the breaker box and flip the breaker closed again, but it’s better than having your house burn down. However, this may be of little consolation if your application falls over when you’ve breached a virtual limit.&lt;/p&gt;
&lt;p dir="ltr"&gt;In some cases, the system doesn’t behave any differently until the limit is actually breached. For example, a system that is writing data to disk will behave perfectly normally right until the disk is absolutely full, at which time it will return write errors. Unless you have an alert explicitly set up to track when your disk is almost full, you won’t find out until it’s too late.&amp;nbsp;&lt;/p&gt;
&lt;p dir="ltr"&gt;In many cases, though, the system behavior starts to change &lt;em&gt;as it nears saturation&lt;/em&gt;. As mentioned earlier, a common behavior change near saturation is an increase in response latency. For example, Java applications that run low on available memory will spend more time on garbage collection (gc), including stop-the-world phases of garbage collection which are known as &lt;em&gt;gc pauses&lt;/em&gt;. This means that as a service starts to run out of memory, response latency goes up. If the response latency gets too high, this can result in timeout errors. Similarly, high CPU utilization can also increase response latency, because the application threads have to wait to get access to CPU resources in order to service requests.&lt;/p&gt;
&lt;h2 dir="ltr"&gt;Examples of Incidents Involving Saturation&lt;/h2&gt;
&lt;p dir="ltr"&gt;Once you start thinking of saturation explicitly as a failure mode, you’ll start to see it in many incidents, either as part of the failure mode itself, or as a factor that makes response or recovery more difficult.&amp;nbsp;&lt;/p&gt;
&lt;p dir="ltr"&gt;Here are some examples from public incident writeups, my emphasis added.&lt;/p&gt;
&lt;h3 dir="ltr"&gt;Waymo&lt;/h3&gt;
&lt;p dir="ltr"&gt;In December 2025, there was a large power outage in San Francisco. This had the surprising effect of &lt;a href="https://surfingcomplexity.blog/2025/12/23/saturation-waymo-edition/" rel="nofollow noreferrer noopener"&gt;paralyzing Waymos in the city.&lt;/a&gt; It turned out that Waymos are more likely to issue confirmation checks when encountering an intersection when the traffic lights are out. From the &lt;a href="https://waymo.com/blog/2025/12/autonomously-navigating-the-real-world" rel="nofollow noreferrer noopener"&gt;Waymo announcement&lt;/a&gt; (emphasis mine):&lt;/p&gt;
&lt;blockquote&gt;
&lt;p dir="ltr"&gt;While we successfully traversed more than 7,000 dark signals on Saturday, the outage created a &lt;strong&gt;concentrated spike&lt;/strong&gt; in these requests. This created a &lt;strong&gt;backlog&lt;/strong&gt; that, in some cases, led to response delays contributing to congestion on already-overwhelmed streets.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 dir="ltr"&gt;Cloudflare&lt;/h3&gt;
&lt;p dir="ltr"&gt;In November 2025, Cloudflare &lt;a href="https://surfingcomplexity.blog/2025/11/26/brief-thoughts-on-the-recent-cloudflare-outage/" rel="nofollow noreferrer noopener"&gt;experienced an outage&lt;/a&gt; that involved a file being larger than a virtual limit on its size. From the &lt;a href="https://blog.cloudflare.com/18-november-2025-outage/" rel="nofollow noreferrer noopener"&gt;writeup&lt;/a&gt;:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p dir="ltr"&gt;&lt;em&gt;The software&amp;nbsp;&lt;strong&gt;had a limit&lt;/strong&gt; on the size of the feature file that was below its doubled size. That caused the software to fail&lt;/em&gt;.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 dir="ltr"&gt;Google Cloud Platform&lt;/h3&gt;
&lt;p dir="ltr"&gt;In June 2025, Google Cloud Platform &lt;a href="https://surfingcomplexity.blog/2025/06/14/quick-takes-on-the-gcp-public-incident-write-up/" rel="nofollow noreferrer noopener"&gt;experienced an outage&lt;/a&gt; where recovery was made more difficult due to saturation. From the &lt;a href="https://status.cloud.google.com/incidents/ow5i3PPK96RduMcb1SsW" rel="nofollow noreferrer noopener"&gt;writeup&lt;/a&gt;:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p dir="ltr"&gt;&lt;em&gt;Within some of our larger regions, such as us-central-1, as Service Control tasks restarted, it created a herd effect on the underlying infrastructure it depends on (i.e. that Spanner table),&amp;nbsp;&lt;strong&gt;overloading&lt;/strong&gt; the infrastructure.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 dir="ltr"&gt;OpenAI&lt;/h3&gt;
&lt;p dir="ltr"&gt;In December 2024, OpenAI &lt;a href="https://surfingcomplexity.blog/2024/12/14/quick-takes-on-the-recent-openai-public-incident-write-up/" rel="nofollow noreferrer noopener"&gt;experienced an outage&lt;/a&gt; that involved their Kubernetes API servers becoming saturated. From the &lt;a href="https://status.openai.com/incidents/ctrsv3lwd797" rel="nofollow noreferrer noopener"&gt;writeup&lt;/a&gt;:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p dir="ltr"&gt;&lt;em&gt;With thousands of nodes performing these operations simultaneously, the&amp;nbsp;&lt;strong&gt;Kubernetes API servers became overwhelmed&lt;/strong&gt;, taking down the Kubernetes control plane in most of our large clusters.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 dir="ltr"&gt;Canva&lt;/h3&gt;
&lt;p dir="ltr"&gt;Also in December 2024, Canva &lt;a href="https://surfingcomplexity.blog/2024/12/21/the-canva-outage-another-tale-of-saturation-and-resilience/" rel="nofollow noreferrer noopener"&gt;experienced an outage&lt;/a&gt; that was triggered by a deploy. There was no problem with the newly deployed code itself, but clients downloading the new javascript files from the CDN set off a series of events that led to their API gateway getting overloaded. From their &lt;a href="https://www.canva.dev/blog/engineering/canva-incident-report-api-gateway-outage/" rel="nofollow noreferrer noopener"&gt;writeup&lt;/a&gt;:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p dir="ltr"&gt;&lt;em&gt;API Gateway tasks begin failing due to&amp;nbsp;&lt;strong&gt;memory exhaustion&lt;/strong&gt;, leading to a full collapse.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 dir="ltr"&gt;Rogers&lt;/h3&gt;
&lt;p dir="ltr"&gt;In July 2022, Rogers &lt;a href="https://surfingcomplexity.blog/2024/07/06/quick-takes-on-rogers-network-outage-executive-summary/" rel="nofollow noreferrer noopener"&gt;experienced an outage&lt;/a&gt; that involved routers getting overloaded. From the &lt;a href="https://crtc.gc.ca/eng/publications/reports/xona2024.htm" rel="nofollow noreferrer noopener"&gt;writeup&lt;/a&gt;:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p dir="ltr"&gt;The flood of IP routing data from the distribution routers into the core routers &lt;strong&gt;exceeded their capacity&lt;/strong&gt; to process the information.&amp;nbsp;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 dir="ltr"&gt;Slack&lt;/h3&gt;
&lt;p dir="ltr"&gt;In January 2021, Slack &lt;a href="https://surfingcomplexity.blog/2021/02/08/slacks-jan-2021-outage-a-tale-of-saturation/" rel="nofollow noreferrer noopener"&gt;experienced an outage&lt;/a&gt; that involved an internal provisioning system getting overloaded. From their &lt;a href="https://slack.engineering/slacks-outage-on-january-4th-2021/" rel="nofollow noreferrer noopener"&gt;writeup&lt;/a&gt;:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p dir="ltr"&gt;The spike of load from the simultaneous provisioning of so many instances under suboptimal network conditions meant that provision-service hit two separate resource bottlenecks (the most significant one was the &lt;strong&gt;Linux open files limit&lt;/strong&gt;, but we also exceeded an &lt;strong&gt;AWS quota limit&lt;/strong&gt;).&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 dir="ltr"&gt;Resilient Systems Deal Effectively with Saturation&lt;/h2&gt;
&lt;p dir="ltr"&gt;Saturation is a key concern in resilience engineering. In fact, according to the resilience engineering researcher David Woods, &lt;a href="https://www.researchgate.net/publication/327427067_The_Theory_of_Graceful_Extensibility_Basic_rules_that_govern_adaptive_systems" rel="nofollow noreferrer noopener"&gt;the difference&lt;/a&gt; between a brittle system and a resilient one comes down to how well a system is able to deal with saturation.&amp;nbsp;&lt;/p&gt;
&lt;p dir="ltr"&gt;Resilient systems are able to anticipate when saturation might happen soon, and take action before the imminent saturation turns into a real problem. As mentioned earlier, in cases like memory pressure, we can see symptoms that the system is getting close to a limit, but it in other cases like a disk filling up or hitting an autoscaling limit, there won’t be any indications that we’re close to a limit unless we know what signals to look for.&amp;nbsp;&lt;/p&gt;
&lt;p dir="ltr"&gt;Resilient systems are also able to reconfigure themselves to deal with saturation. Incident response is the paradigmatic example of this sort of system reconfiguration activity, which is why resilience engineering is particularly relevant to incident response. When your organization experiences a saturation-related incident,&amp;nbsp; the human responders need to take action. You can think about the actions that they take as literally changing how the system works, in order to bring the system back to health. That’s what resilience is all about.&amp;nbsp;&lt;/p&gt;
&lt;p dir="ltr"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;img src="https://resilienceinsoftware.org/storage/4452714/download" alt="" width="160" height="160"&gt;&lt;strong&gt;Lorin Hochstein&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;</description>
      <pubDate>Mon, 02 Mar 2026 21:14:39 +0000</pubDate>
      <guid>https://resilienceinsoftware.org/news/11475336</guid>
      <link>https://resilienceinsoftware.org/news/11475336</link>
      <media:content url="https://d21hwc2yj2s6ok.cloudfront.net/shrine_store/uploads/networks/3057/communication_news/11475336/compressed-1e52f6cda0da04867c69e862eee9cffa.webp"/>
    </item>
    <item>
      <title>Four Responses to Overload</title>
      <description>&lt;blockquote&gt;
&lt;p dir="ltr"&gt;“A pattern is a way to generalize and transfer findings from one situation to others.” &lt;strong id="docs-internal-guid-5bd126e9-7fff-cee2-33a3-616e122a49c1"&gt;&amp;nbsp;&lt;/strong&gt;&lt;/p&gt;
&lt;p dir="ltr"&gt;&lt;strong&gt;—&lt;/strong&gt;&lt;em&gt;Woods et al.,&lt;/em&gt; &lt;a href="https://www.researchgate.net/publication/351579618_Patterns_in_How_People_Think_and_Work_The_Importance_of_Pattern_Discovery_for_Understanding_Complex_Adaptive_Systems" rel="nofollow noreferrer noopener"&gt;Patterns in How People Think and Work: The Importance of Pattern Discovery for Understanding Complex Adaptive Systems&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p dir="ltr"&gt;Overload is when the demands on a system, including its human operators, exceed their capacity to effectively manage those demands. It is so pervasive that people adapt to it without even noticing. What’s worse, our adaptations also conceal the fact that we are managing overload. All systems have various finite limits in capacity. The real world can and does routinely exceed those limits. As a result, adaptations to overload can be observed in almost all incidents.&amp;nbsp;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p dir="ltr"&gt;“The threat of being trapped in a workload bottleneck leads to four patterns of adaptation.”&lt;/p&gt;
&lt;p dir="ltr"&gt;&lt;strong&gt;—&lt;/strong&gt;Woods et al.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p dir="ltr"&gt;There are four responses to overload, each with its own tradeoffs. Two responses are reactive and urgent: shed load or reduce thoroughness. The other two require anticipation and enough time to take effect: add resources, or time-shift workloads.&lt;/p&gt;
&lt;h3 dir="ltr" style="text-align: center;"&gt;&lt;span style="font-size: 16px;"&gt;&lt;strong&gt;Four Responses to Overload&lt;/strong&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;div dir="ltr"&gt;
&lt;table style="width: 71.3864%; height: 239.852px; border-collapse: collapse; border-width: 1px; margin-left: auto; margin-right: auto;" border="1"&gt;
&lt;colgroup&gt; &lt;col style="width: 58.7709%;" width="486"&gt; &lt;col style="width: 41.2291%;"&gt; &lt;/colgroup&gt;
&lt;tbody&gt;
&lt;tr style="height: 0.5px;"&gt;
&lt;td style="height: 130.383px;" rowspan="2"&gt;
&lt;p dir="ltr"&gt;&lt;span style="font-size: 13px;"&gt;1. Shed load&lt;/span&gt;&lt;/p&gt;
&lt;p dir="ltr"&gt;&lt;span style="font-size: 13px;"&gt;2. Do all task components less thoroughly, consuming fewer resources&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style="height: 130.383px;" rowspan="2"&gt;
&lt;p dir="ltr" style="text-align: left;"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p dir="ltr" style="text-align: left;"&gt;&lt;strong&gt;&lt;span style="font-size: 14px;"&gt;Tactical Responses&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style="height: 129.883px;"&gt;&lt;/tr&gt;
&lt;tr style="height: 0px;"&gt;
&lt;td style="height: 109.469px;" rowspan="2"&gt;
&lt;p dir="ltr"&gt;&lt;span style="font-size: 13px;"&gt;3. Shift work in time to lower workload periods&lt;/span&gt;&lt;/p&gt;
&lt;p dir="ltr"&gt;&lt;span style="font-size: 13px;"&gt;4. Recruit more resources&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style="height: 109.469px;" rowspan="2"&gt;
&lt;p dir="ltr"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p dir="ltr"&gt;&lt;strong&gt;Strategic Responses&lt;/strong&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style="height: 109.469px;"&gt;&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;p dir="ltr"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p dir="ltr"&gt;We&amp;nbsp;&lt;strong&gt;shed load&lt;/strong&gt; by dropping all but the most essential tasks—sometimes at a painful cost for the tasks dropped, or if we misread which is most essential.&amp;nbsp;&lt;/p&gt;
&lt;p dir="ltr"&gt;When we &lt;strong&gt;reduce thoroughness&lt;/strong&gt;, spreading ourselves thin over every task, each task becomes more fragile—we trade off some immediate relief while increasing the likelihood that these points of fragility will break on us later.&lt;/p&gt;
&lt;p dir="ltr"&gt;The latter two responses depend on anticipation of the state of overload. When we &lt;strong&gt;add resources&lt;/strong&gt;, bring in more people for example, it will take time to get them up to speed so they can usefully contribute to managing the workload. But recruiting people and onboarding them is itself additional work that must trade-off against our limited resources. Bringing in new automation also requires investment and training. Adding resources only works when there is enough time to absorb those delays.&amp;nbsp;&lt;/p&gt;
&lt;p dir="ltr"&gt;We can &lt;strong&gt;time-shift&lt;/strong&gt; workloads: prepare some of the work ahead of time, or delay work to later. To do that effectively we need to understand changing tempos in our work. When we anticipate an upcoming rush, we need to act early enough to prepare those things that require extra time or care. Or we can choose to delay other work now if we know when things will slow down enough that we can return to it.&lt;/p&gt;
&lt;p dir="ltr"&gt;Here are a couple of examples of time-shifting in particular:&lt;/p&gt;
&lt;p dir="ltr"&gt;From &lt;a href="https://www.researchgate.net/publication/351579618_Patterns_in_How_People_Think_and_Work_The_Importance_of_Pattern_Discovery_for_Understanding_Complex_Adaptive_Systems" rel="nofollow noreferrer noopener"&gt;Patterns in How People Think and Work: The Importance of Pattern Discovery for Understanding Complex Adaptive Systems&lt;/a&gt;:&amp;nbsp;“Anesthesiology residents performed extra work during the set-up of the operating room before the patient entered, in order to avoid potential workload bottlenecks should certain contingencies arise later. When anesthesiologists needed some type of capacity to respond to acute physiological changes in a patient, they rarely had enough time or attentional resources available to carry out the tasks required to create the needed capability. Hence, expertise in anesthesiology, as in many high performance settings, consists of being able to anticipate potential bottlenecks and high tempo periods and to invest in certain tasks which prepare the practitioner to be highly responsive should the need to intervene arise.”&lt;/p&gt;
&lt;p dir="ltr"&gt;In the software context of scheduled database migrations, we typically prepare rollback plans. If something goes wrong during the migration, we are able to quickly recover. This is time-shifting some of the work of recovery ahead of the migration. There is another tradeoff here. If the database migration goes smoothly, and the prepared rollback proves unnecessary, we may feel in hindsight that those extra preparations were wasted.&lt;/p&gt;
&lt;p&gt;Overload is pervasive. Knowing this model of four responses to overload can help us to recognize its presence, to choose better adaptations when we know there’s overload, and to anticipate ways overload can cascade from one part of the system to another. Through the study of patterns, insights from one specific challenge (such as overload) become pragmatic tools we can apply in otherwise unrelated situations. However, looking at a pattern in isolation from concrete examples can feel too abstract. We recommend you also read &lt;a href="https://resilienceinsoftware.org/news/11453533" rel="nofollow noreferrer noopener"&gt;Expertise &amp;amp; Overload&lt;/a&gt; for a specific case which features real-world examples of all four responses to overload.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size: 12px;"&gt;&lt;img src="https://resilienceinsoftware.org/storage/4400646/download" alt="" width="134" height="134"&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p dir="ltr"&gt;&lt;span style="font-size: 12px;"&gt;&lt;strong&gt;Eric Dobbs&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;</description>
      <pubDate>Sat, 21 Feb 2026 01:16:13 +0000</pubDate>
      <guid>https://resilienceinsoftware.org/news/11469953</guid>
      <link>https://resilienceinsoftware.org/news/11469953</link>
      <media:content url="https://d21hwc2yj2s6ok.cloudfront.net/shrine_store/uploads/networks/3057/communication_news/11469953/compressed-9d42efa11d85a763233ac50db9161340.webp"/>
    </item>
    <item>
      <title>Expertise and Overload</title>
      <description>&lt;p dir="ltr"&gt;Resilience engineering views incidents through a different frame than the conventional approach in the software industry, which tends to treat incidents as an irritating interruption to our work. The unrelenting pressure of the roadmap hangs over retrospectives. The clock is always ticking. We focus on the quickest fixes that might prevent the failure in the future so we can “get back to work.” To apply resilience engineering in the software business we must recognize that &lt;em&gt;incidents are part of everyday work in complex systems&lt;/em&gt;, not merely interruptions. In fact, incidents are a recurring opportunity for learning and discovery.&lt;/p&gt;
&lt;p dir="ltr"&gt;There are two features of (almost) all incidents that usually go unnoticed or ignored: expertise and overload. Both of these are pervasive in incidents, yet also elusive.&lt;/p&gt;
&lt;p dir="ltr"&gt;Expertise by its very nature conceals the difficulty of incident response work. It is deep, well-practiced know-how, judgement, and experience for effective problem-solving and effective coordination under pressure. Similarly, overload is so pervasive that people adapt to it without even noticing. The cognitive capacity of incident responders can be exhausted by the demands on attention and communication, contributing to distraction, impaired decision-making, delayed actions, and increased errors or stress.&lt;/p&gt;
&lt;p dir="ltr"&gt;In order to draw these elusive and important things into the open, I’m going to dig into a short example from a particularly difficult moment in an incident drill in which two experienced incident commanders deftly managed the overload. The high pressure of this moment is a perfect laboratory to examine these subtle and elusive features of both expertise and overload.&lt;/p&gt;
&lt;p dir="ltr"&gt;Consider this section of the video transcript from the incident drill. Let's get a first impression without commentary. (I’m deliberately not expanding the acronyms yet, bear with me.) Sarah is leading the response and Alex is her deputy.&lt;/p&gt;
&lt;p dir="ltr"&gt;&lt;iframe class="embedly-embed" style="aspect-ratio: 640 / 480; max-width: 100%;" title="YouTube embed" src="https://cdn.embedly.com/widgets/media.html?src=https%3A%2F%2Fwww.youtube.com%2Fembed%2FgCL_Hc0GCFU%3Ffeature%3Doembed&amp;amp;display_name=YouTube&amp;amp;url=https%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv%3DgCL_Hc0GCFU&amp;amp;image=https%3A%2F%2Fi.ytimg.com%2Fvi%2FgCL_Hc0GCFU%2Fhqdefault.jpg&amp;amp;type=text%2Fhtml&amp;amp;schema=youtube-nocookie" width="640" height="480" frameborder="0" scrolling="no" allowfullscreen="allowfullscreen"&gt;&lt;/iframe&gt;&lt;/p&gt;
&lt;p dir="ltr"&gt;A few minutes later, Sarah is managing a few other threads of investigation.&lt;/p&gt;
&lt;p dir="ltr"&gt;&amp;nbsp;&lt;iframe class="embedly-embed" style="aspect-ratio: 640 / 480; max-width: 100%;" title="YouTube embed" src="https://cdn.embedly.com/widgets/media.html?src=https%3A%2F%2Fwww.youtube.com%2Fembed%2FjX8maUosprc%3Ffeature%3Doembed%26modestbranding%3D1%26rel%3D0&amp;amp;display_name=YouTube&amp;amp;url=https%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv%3DjX8maUosprc&amp;amp;image=https%3A%2F%2Fi.ytimg.com%2Fvi%2FjX8maUosprc%2Fhqdefault.jpg&amp;amp;type=text%2Fhtml&amp;amp;schema=youtube" width="640" height="480" frameborder="0" scrolling="no" allowfullscreen="allowfullscreen"&gt;&lt;/iframe&gt;&lt;/p&gt;
&lt;p dir="ltr"&gt;These exchanges happen quickly and casually. Why bother pointing to this at all? There is a lot to learn about both expertise and overload hiding between the lines of this dialog. Let's dig in.&lt;/p&gt;
&lt;p dir="ltr"&gt;First off, Sarah's claim during that exchange turns out to be a misunderstanding of Hamed's role. In my interviews with her she reported feeling embarrassed to have gotten this wrong during the drill. It is frequently the case that the expert must make effective decisions even with incomplete and inaccurate understanding. It is also notable that despite her misunderstanding of Hamed’s specific role, she correctly assessed that Tanya has deeper technical understanding than Hamed. This is a signal to me that Sarah also has expertise in quickly recognizing and contrasting the expertise of others.&lt;/p&gt;
&lt;p dir="ltr"&gt;Next up, the acronyms BCP and CAN. They are useful glimpses of how expertise conceals the difficulty of work.&amp;nbsp;Do you know these terms? I didn’t know either of them. Sarah and Alex are fluent in a shared vocabulary. For them, BCP is a &lt;em&gt;business continuity plan&lt;/em&gt; and CAN is a &lt;em&gt;conditions-actions-needs&lt;/em&gt; report. Does the expansion of the acronyms expand your understanding of the underlying complexity? This is the very point of acronyms. They encapsulate complex ideas. Experts use them to communicate efficiently, especially under pressure.&lt;/p&gt;
&lt;p dir="ltr"&gt;Many readers will have at least heard of &lt;a href="https://en.wikipedia.org/wiki/Business_continuity_planning" rel="nofollow noreferrer noopener"&gt;business continuity planning&lt;/a&gt; and related ideas of disaster recovery. Fewer readers will know that conditions-actions-needs reports are a communication framework for reporting progress during an incident. Both of these are deep rabbit holes that don’t add enough to this discussion, so I will avoid them for brevity.&lt;/p&gt;
&lt;p dir="ltr"&gt;As an observer who is unfamiliar with the jargon, these terms are opaque. Sarah and Alex know what they’re talking about, but the underlying complexity of this situation is concealed for the uninformed observer. Their fluency with shared jargon conceals the complexity they are tackling. There’s another subtlety on this point. Imagine someone who fluently understands BCP but has never heard of CAN. They would feel the elevated sense of urgency knowing that whatever else is going on, Sarah thinks they may need to engage the business continuity plan. They might view the delay in Alex’s response as lacking an appropriate level of urgency.&lt;sup&gt;1&lt;/sup&gt;&lt;/p&gt;
&lt;p dir="ltr"&gt;At this point in the incident, Sarah has previously asked four different times in Slack to learn more about the BCP. The only answer has been a link to the document. These are subtle clues of her expertise in recognizing and managing overload.&lt;/p&gt;
&lt;p dir="ltr"&gt;Take note of what she is doing and what she is &lt;em&gt;not&lt;/em&gt; doing. She isn’t reading the document herself. This hints that she is adapting to overload. A less experienced person might adapt differently, trying to still do all the things in front of them but &lt;em&gt;reducing thoroughness&lt;/em&gt; on each. Another option would be to just drop it—she could shed load by ignoring the BCP. I can tell that she hasn’t just dropped the work because she keeps asking for more details. And each request for information is itself an attempt to recruit resources to help cope with the overload. Let’s look at how she recruits Alex to do this work.&lt;/p&gt;
&lt;p dir="ltr"&gt;Sarah's expertise with overload goes beyond understanding her own limits. Even while she delegates the reading to Alex, she demonstrates awareness that he may also be overloaded.&lt;/p&gt;
&lt;p dir="ltr"&gt;Knowing the BCP will demand careful attention, she asks about his capacity (“&lt;em&gt;do you have bandwidth&lt;/em&gt;…”) even before she makes the specific request for help (“...&lt;em&gt;to read it&lt;/em&gt;?”).&lt;/p&gt;
&lt;p dir="ltr"&gt;What's more, we see a moment of investing in &lt;em&gt;common ground &lt;/em&gt;&lt;sup&gt;2&lt;/sup&gt; with Alex, and reducing his cognitive work for this task. She shares her screen to show exactly which document. This gesture is loaded with insight about how expertise tackles overload:&lt;/p&gt;
&lt;p dir="ltr"&gt;I now know that she’s opened the doc even if she hasn’t read it. Moreover, she’s keeping track of it to be able to quickly pull it into view. This is an example of &lt;em&gt;time-shifting&lt;/em&gt; work. She’s got the document close to hand when delegating to Alex. Showing the doc reduces the scope of work for Alex by priming his perception to recognize the document. Alex won't have to spend any extra energy wondering if he is looking at the correct document. It also subtly signals the importance of the request.&lt;/p&gt;
&lt;p dir="ltr"&gt;Sarah's demonstration of her expertise at managing overload and maintaining common ground happens in the space of a single breath.&lt;/p&gt;
&lt;p dir="ltr"&gt;&lt;strong&gt;Expertise hides what makes work difficult.&lt;/strong&gt;&lt;sup&gt;3&lt;/sup&gt;&lt;/p&gt;
&lt;p dir="ltr"&gt;Because overload is pervasive in incidents, experienced responders must develop tacit expertise in managing overload. But because that expertise is tacit, they won't even notice the subtle ways they help everyone around them cope with overload.&lt;/p&gt;
&lt;p dir="ltr"&gt;If you have ever had the experience of relief when one of your best responders shows up, you have felt the tacit knowledge. You don't know why, but somehow incidents just go better when they are in the room. And maybe the main thing you have learned is to call for their help if things get bad.&lt;/p&gt;
&lt;p dir="ltr"&gt;By contrast, this example features two responders who know overload and are explicitly familiar with a pattern of four responses to overload (for more on this, see the companion article on the &lt;a href="https://resilienceinsoftware.org/news/11469953" rel="nofollow noreferrer noopener"&gt;Four Responses to Overload&lt;/a&gt;). When I interviewed them individually about their experience in the drill, each brought up this pattern on their own without any prompting from me. Given that the pattern was that front-of-mind for them, when they participate in incident retros, they almost certainly bring these topics up for discussion and deliberately spread the explicit knowledge in their respective organizations.&lt;/p&gt;
&lt;p dir="ltr"&gt;What’s more, we can see Sarah repeatedly choose the two more strategic adaptations to her own overload: recruiting resources and time-shifting work. Unless the observer knows to look for it, and knows how to recognize it, this expertise in managing overload is invisible.&lt;/p&gt;
&lt;p dir="ltr"&gt;With similar expertise, Alex responds to Sarah’s request by time-shifting work:&amp;nbsp;“&lt;em&gt;Yeah, once I get this CAN out then I'll read it. I'm almost done&lt;/em&gt;.”&lt;/p&gt;
&lt;p dir="ltr"&gt;He responds, signalling he understands the importance of the request. He adapts to his own overload by momentarily deferring this request. He also explicitly states what he has prioritized instead—this is extra energy Alex spends to maintain common ground with Sarah. This provides the briefest update on her previous request for the CAN, and also offers her a chance to override that prioritization decision.&lt;/p&gt;
&lt;p dir="ltr"&gt;Once again, this display of expertise happens in the space of a single breath. Sarah’s short reply (“&lt;em&gt;Awesome. Thank you&lt;/em&gt;.”) serves to close this short conversation—implicitly validating Alex’s decision to finish the CAN first.&lt;/p&gt;
&lt;p dir="ltr"&gt;There are more examples of overload and expertise in the next exchange.&lt;/p&gt;
&lt;p dir="ltr"&gt;...&lt;em&gt;busily typing and voicing a complicated group of questions&lt;/em&gt;...&lt;br&gt;&lt;strong&gt;Sarah&lt;/strong&gt;: Oh man it takes me so long to type.&lt;/p&gt;
&lt;p dir="ltr"&gt;&lt;strong&gt;Alex&lt;/strong&gt;: There are some execution steps for you in the BCP for failing over.&lt;/p&gt;
&lt;p dir="ltr"&gt;&lt;strong&gt;Sarah&lt;/strong&gt;: Hold just a second while I get these... uh...&lt;br&gt;...&lt;em&gt;this train of thought trails off as she switches to voice what she's typing&lt;/em&gt;...&lt;/p&gt;
&lt;p dir="ltr"&gt;In the video recording we can see and hear many ways Sarah tries to phrase the questions. Alex could also see and hear her working. He nevertheless chooses to interrupt, increasing Sarah's cognitive load. But he also gives just enough indication to justify the interruption: this is about the BCP.&lt;/p&gt;
&lt;p dir="ltr"&gt;Sarah, explicitly time-shifts work again (“&lt;em&gt;Hold just a second&lt;/em&gt;.”). She also tacitly sheds load (...&lt;em&gt;this train of thought trails off&lt;/em&gt;...). This moment is the first we’ve seen of Sarah shedding load.&lt;/p&gt;
&lt;p dir="ltr"&gt;This example of shedding load is particularly instructive. We frequently adapt to overload without any conscious decision. Under these overloading demands, Sarah focuses attention on the most important or most urgent work—in this case, typing the questions, voicing them, and explicitly targeting them at specific responders.&lt;/p&gt;
&lt;p dir="ltr"&gt;Notice again how expertise hides the difficulty of the work. Some of the work disappears completely. Sarah normally does extra work to provide context of her thinking. That extra work just drops as her voice tracks exactly what she's typing. The absence of that work is only apparent by contrasting what "normal" sounds like for her under less intense circumstances.&lt;/p&gt;
&lt;p dir="ltr"&gt;Let’s look at one more observation of expertise with managing overload in the complicated group of questions Sarah typed into Slack:&amp;nbsp;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;em&gt;Can we move part of the traffic? Or is it all or nothing&lt;/em&gt;?&lt;/li&gt;
&lt;li&gt;
&lt;em&gt;Are there servers in the area of the DC we can shut down&lt;/em&gt;? &lt;em&gt;Is our UAT there and able to be shut down for instance?&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;em&gt;Can the DC vendor give us an ETA? Is there anything else they can do to cool the room they are not already doing&lt;/em&gt;? &lt;em&gt;Are we the only tenant there&lt;/em&gt;?&lt;/li&gt;
&lt;/ol&gt;
&lt;p dir="ltr"&gt;What we learn here is that the model of four responses to overload applies to machines just as it applies to people. Her first question (“&lt;em&gt;Can we move part of the traffic&lt;/em&gt;?”) is recruiting resources in the form of an alternate data center.&lt;/p&gt;
&lt;p dir="ltr"&gt;Her second question (“&lt;em&gt;Are there servers ... we can shut down&lt;/em&gt;?”) is working the same problem from the opposite direction. It would shed load on the network and also remove heat-generating computation from the data center.&lt;/p&gt;
&lt;p dir="ltr"&gt;Her third question (“&lt;em&gt;Anything else they can do to cool the room&lt;/em&gt;?”) is also recruiting resources.&amp;nbsp;She also explicitly directs those questions to specific responders. Each question is demanding on its own and Sarah is spreading that load across the team.&amp;nbsp;Notice how she is managing overload at many levels simultaneously: her own, the incident response team, and the machines and resources related to the data center.&lt;/p&gt;
&lt;p dir="ltr"&gt;Finally, she is able to turn her attention back to Alex (“&lt;em&gt;Alex, sorry, I put you in a buffer. What was that about the BCP&lt;/em&gt;?”). There is a subtle signalling that Alex had interrupted skillfully. Sarah shows her understanding that he has the details about the BCP and that there is work in that plan that she must execute.&lt;/p&gt;
&lt;p dir="ltr"&gt;It is again notable what we do not see here. Whatever else Alex has been doing, he’s managed his own attention and overload to be able to respond to Sarah at this point. Unlike the earlier exchange when he was working on the CAN and deferred her request, here he immediately engages by reading the six steps aloud.&lt;/p&gt;
&lt;h1 dir="ltr"&gt;Putting Overload &amp;amp; Expertise Insights Into Action&lt;/h1&gt;
&lt;p dir="ltr"&gt;This part of the incident drill illuminates three things that are difficult to even perceive: expertise, overload, and explicit expertise about overload. Instead of observing overload and expertise directly (which is often difficult or impossible), we can infer their presence by looking at what is observable: the adaptations themselves.&lt;/p&gt;
&lt;p dir="ltr"&gt;Overload is pervasive. Knowing this model of four responses to overload can help us to recognize its presence, to anticipate ways overload can cascade from one part of the system to another, and to choose better adaptations when we know there’s overload.&lt;/p&gt;
&lt;p dir="ltr"&gt;If you suspect you have hidden overload, look for any of the four adaptations. If you see time-shifting work or recruiting resources, you can infer that responders are anticipating the risk of overload and may be adequately managing it. Shedding load and reducing thoroughness suggest acute overload that deserves more aggressive intervention. For example, resources that have been recruited to support local overload do not come for free. Ensure whatever tradeoffs that are paying for the additional resources are also under consideration. If there are many tasks that are getting time-shifted, there may be hidden costs of context-switching to mitigate those.&lt;/p&gt;
&lt;p dir="ltr"&gt;If you already know overload is present, then review the four adaptations to weigh your options for managing it. If the overload is an immediate threat, focus on ways to shed load or reduce thoroughness. If you feel some breathing room, look around for resources you could recruit or find ways to time-shift the work.&lt;/p&gt;
&lt;p dir="ltr"&gt;Expertise can be even more elusive than overload. It is certainly much more difficult to categorize. So much expertise develops tacitly that experts themselves have a difficult time explaining how they do what they do. Although I have shown many examples of how subtle and invisible expertise is, I have not offered any specific advice about how to recognize expert performance in the wild. There are learnable skills for discovering this expertise but we will tackle those in a different article.&lt;/p&gt;
&lt;h1 dir="ltr"&gt;Learning in Addition to Fixing&lt;/h1&gt;
&lt;p dir="ltr"&gt;I’ve made another subtle move in this article by featuring an incident drill. Drills by their nature focus attention on how the incident responders do their work, instead of focusing on what needs to be fixed in the code or documentation, or monitoring. Humans develop skills and expertise through practice and experience. Conventional retrospectives focused only on the fixing miss out on all the places we could be sharing expertise across the organization or improving the work of running incidents.&lt;/p&gt;
&lt;p dir="ltr"&gt;Remember our resilience engineering frame: incidents are first-class work. We can gain a competitive advantage by rewarding ongoing professional development in incident response. Through this know-how we can continually earn the trust of our customers.&lt;/p&gt;
&lt;p dir="ltr"&gt;One cool trick you can now apply to all of your future retrospectives is to ask how people adapted to overload in this incident. These patterns of adaptations to overload happen at a wide range of tempos and scales. Your teams and your services have unique expressions of overload and associated adaptations. Incidents provide an opportunity to look closely at those specific adaptations to specific overload and where specific circumstances exceeded the capacity of the system to adapt. The general pattern is useful, but your people need the grungy local details about how overload shows up in your world. When reflecting on incidents after the fact, these observations can reveal improvements to the operational practices of your teams or the operational tooling of the services in question.&lt;/p&gt;
&lt;p dir="ltr"&gt;Sharing the model of four responses to overload across your teams, and regularly discovering how people apply that model in real incidents is a powerful driver to turn incident retros into a community of practice with ongoing transfer of expertise and know-how. In this way, you can create leverage from the pervasive combination of expertise, and overload in incidents and spread the more specific expertise about overload.&lt;/p&gt;
&lt;h1 dir="ltr"&gt;Further Reading&lt;/h1&gt;
&lt;p dir="ltr"&gt;Interested readers can learn a lot more in &lt;a href="https://www.researchgate.net/publication/333091997_Approaching_Overload_Diagnosis_and_Response_to_Anomalies_in_Complex_and_Automated_Production_Software_Systems" rel="nofollow noreferrer noopener"&gt;Approaching Overload: Diagnosis and Response to Anomalies in Complex and Automated Production Software Systems&lt;/a&gt; by Marisa Bigelow. There are four case studies of different software and network incidents with thoughtful attention to overload. You may be surprised to notice that the responses to overload are present equally in the software services and in the people running those services. What’s more, Bigelow traces connections between the overload of the software and the overload among the responders—an example of how overload in one part of a system can cascade to other parts.&lt;/p&gt;
&lt;p dir="ltr"&gt;See also:&amp;nbsp;&lt;a href="https://www.researchgate.net/publication/351579618_Patterns_in_How_People_Think_and_Work_The_Importance_of_Pattern_Discovery_for_Understanding_Complex_Adaptive_Systems" rel="nofollow noreferrer noopener"&gt;Patterns in How People Think and Work: The Importance of Pattern Discovery for Understanding Complex Adaptive Systems&lt;/a&gt;. Woods, David &amp;amp; Licu, Tony &amp;amp; Leonhardt, Jörg &amp;amp; Rayo, Michael &amp;amp; Balkin, E. &amp;amp; Cioponea, Radu. (2021).&lt;/p&gt;
&lt;p dir="ltr"&gt;&lt;em&gt;Thanks to &lt;strong&gt;Fred Hebert&lt;/strong&gt;, &lt;strong&gt;Greg Holecek&lt;/strong&gt;, and &lt;strong&gt;James Boyd &lt;/strong&gt;for reviewing early drafts. &lt;/em&gt;&lt;strong id="docs-internal-guid-0de1ecf1-7fff-3a46-2162-5cbbbdbf999c"&gt;&lt;/strong&gt;&lt;em&gt;Special thanks to &lt;strong&gt;Courtney Nash&lt;/strong&gt;, &lt;strong&gt;Sarah Butt&lt;/strong&gt;, &lt;strong&gt;Alex Elman&lt;/strong&gt;, &lt;strong&gt;Hamed Silatani&lt;/strong&gt; and Uptime Labs. This article has been a long time coming. It started with a thematic analysis of many production incidents when I was a member of Alex’s team at a previous employer. That became a foundation for conference talks on the multi-party dilemma given by Sarah and Alex in 2023. The three of us shared the insights from the multi-party dilemma with Uptime Labs which informed the structure of the drill. Then Courtney had the brilliant idea that I should do an analysis of Sarah and Alex practicing that drill. Beth &lt;strong&gt;Adele Long&lt;/strong&gt;’s workshops on regenerative productivity helped me strongly narrow the focus of this article to something manageable. &lt;strong&gt;John Allspaw&lt;/strong&gt; clarified an important distinction between tacit expertise and the Law of Fluency—tacit expertise is why we need the many tools from Naturalistic Decision Making in order to discover expertise, whereas the Law of Fluency concerns the way experts actively adapting conceal the difficulty of their work to all the people around them. Those are tightly related, but also not the same thing. And I am particularly grateful to &lt;strong&gt;Brian Marick&lt;/strong&gt; for probably the best demonstration of constructive feedback I’ve ever seen—especially the examples of putting specific examples first, then explaining the theory from the concrete.&lt;/em&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;p dir="ltr"&gt;&lt;sup&gt;1&amp;nbsp;&lt;/sup&gt;&lt;span style="font-size: 12px;"&gt;Investigating the jargon in use between experts under pressure helps to reveal the complexity hidden in plain sight in day-to-day work. See &lt;a href="https://www.researchgate.net/publication/335606945_Chapter_3_Being_Bumpable_Consequences_of_Resource_Saturation_and_Near-Saturation_for_Cognitive_Demands_on_ICU_Practitioners" rel="nofollow noreferrer noopener"&gt;Chapter 3 Being Bumpable: Consequences of Resource Saturation and Near-Saturation for Cognitive Demands on ICU Practitioners&lt;/a&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;p dir="ltr"&gt;&lt;sup&gt;2 &lt;/sup&gt;&lt;span style="font-size: 12px;"&gt;A colloquial understanding of common ground will be good enough to let us focus on the subtleties of expertise and overload. That said, there is a deeper understanding of common ground and common grounding that I have not covered in this article but nevertheless fits perfectly in this context. Klein, Gary &amp;amp; Feltovich, Paul J. &amp;amp; Bradshaw, Jeffrey &amp;amp; Woods, David. (2005). &lt;a href="https://www.researchgate.net/publication/227992178_Common_Ground_and_Coordination_in_Joint_Activity" rel="nofollow noreferrer noopener"&gt;Common Ground and Coordination in Joint Activity&lt;/a&gt;. 10.1002/0471739448, ch6.&lt;/span&gt;&lt;/p&gt;
&lt;p dir="ltr"&gt;&lt;sup&gt;3 &lt;/sup&gt;&lt;span style="font-size: 12px;"&gt;This section heading is how Dr. Richard Cook paraphrased The Law of Fluency from Dr. David Woods: “Well”-adapted work occurs with a facility that belies the difficulty of the demands resolved and the dilemmas balanced. Woods, David &amp;amp; Hollnagel, Erik. (2006). &lt;a href="https://www.researchgate.net/publication/329025433_Joint_Cognitive_Systems_Patterns_in_Cognitive_Systems_Engineering" rel="nofollow noreferrer noopener"&gt;Joint Cognitive Systems: Patterns in Cognitive Systems Engineering&lt;/a&gt;. 10.1201/9781420005684. p.20.&lt;/span&gt;&lt;/p&gt;
&lt;p dir="ltr"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size: 12px;"&gt;&lt;img src="https://resilienceinsoftware.org/storage/4400602/download" alt="" width="134" height="134"&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p dir="ltr"&gt;&lt;span style="font-size: 12px;"&gt;&lt;strong&gt;Eric Dobbs&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;</description>
      <pubDate>Sat, 21 Feb 2026 00:52:15 +0000</pubDate>
      <guid>https://resilienceinsoftware.org/news/11453533</guid>
      <link>https://resilienceinsoftware.org/news/11453533</link>
      <media:content url="https://d21hwc2yj2s6ok.cloudfront.net/shrine_store/uploads/networks/3057/communication_news/11453533/compressed-c9ae4f8eeeaa7e95ef18d2a8870dcb44.webp"/>
    </item>
    <item>
      <title>Decompensation and Cascading Failures</title>
      <description>&lt;p dir="ltr"&gt;Consider the following scenario: A set of automated tasks has somehow failed to run to completion. Because a thorough fix will take some time and the tasks you need run are time-sensitive, you complete the work manually to keep things moving forward. If this sounds familiar, then you may have helped provide &lt;em&gt;compensation&lt;/em&gt; for that system. Compensation is a very interesting mechanism in software systems because it can keep complex systems alive, but also because it can be a factor in how they quickly and unexpectedly collapse.&lt;/p&gt;
&lt;p dir="ltr"&gt;There’s a tangling of closely related concepts in describing how complex systems collapse. Many of these lead to cascading failures, where a failure in one part of the system propagates to another one or to many others, which further causes other subsystems to fail.&lt;/p&gt;
&lt;p dir="ltr"&gt;Past figuring out how individual failures happen, there are ways in which the system fragilizes itself, such as increasing coupling between parts by &lt;a href="https://ferd.ca/notes/paper-going-solid.html" rel="nofollow noreferrer noopener"&gt;going solid&lt;/a&gt;. A more subtle way coupling can happen is through compensation, which hides that anything might even be going wrong.&lt;/p&gt;
&lt;p dir="ltr"&gt;In this post, we’ll take a look at what compensation means, and then how decompensation can rapidly happen and lead to a cascade of failures, and why this is relevant to Resilience Engineering.&lt;/p&gt;
&lt;h3 dir="ltr"&gt;Compensation&lt;/h3&gt;
&lt;p dir="ltr"&gt;A basic rule of complex systems is that &lt;a href="https://how.complexsystems.fail/#5" rel="nofollow noreferrer noopener"&gt;they always run in a degraded mode&lt;/a&gt;, but they continue to function because the system has ways to deal with some of these situations. Degradation can take multiple forms. A partial loss of capacity or temporary overload can be handled by tradeoffs between efficiency and thoroughness (see the &lt;a href="https://erikhollnagel.com/ideas/etto-principle/" rel="nofollow noreferrer noopener"&gt;ETTO principle&lt;/a&gt;), or through structural elements like redundancy and building spare capacity, for example. A more subtle coping mechanism relies on adaptive patterns of compensation, a term borrowed from biology that indicates the mechanism through which an organism finds new ways to perform a capacity that has been lost.&lt;/p&gt;
&lt;p dir="ltr"&gt;Compensation is rarely seen in software as we often think of it, e.g. code running without humans, because software tends to be designed such that everything does the job it has been designed to do, and little else. Instead, compensation in this context, as an adaptive mechanism, is most likely to be observed in the human part of a sociotechnical system.&lt;/p&gt;
&lt;p dir="ltr"&gt;Examples of humans compensating for software faults or flaws could include:&lt;/p&gt;
&lt;ul&gt;
&lt;li dir="ltr"&gt;
&lt;p dir="ltr"&gt;In provisioning new enterprise accounts, the system will automatically allocate sufficient resources for the contract. However, because new users tend to do large migration jobs when setting up their environment, the customer success team makes a habit of manually overriding parameters to grant more capacity for the first weeks of use, before returning it to normal once usage is steady.&lt;/p&gt;
&lt;/li&gt;
&lt;li dir="ltr"&gt;
&lt;p dir="ltr"&gt;During an outage where hardware capacity is limited, a team will decide to run their own services hotter by tweaking their config to do more work on fewer devices or on older hardware (possibly slightly hurting their own tail latencies in the process) in order to leave more room for other teams’ more critical services whose lack of resources would have a worse impact on users.&lt;/p&gt;
&lt;/li&gt;
&lt;li dir="ltr"&gt;
&lt;p dir="ltr"&gt;A cache is added in front of a database to speed up responses, and limit the impact of slow queries. As the database becomes reliant on the cache to protect it, teams gradually build utilities and ad-hoc processes to backfill and prewarm the cache in case of issues, rather than spending time on the more challenging task of optimizing queries or re-thinking their product design.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p dir="ltr"&gt;Likewise, people can and will compensate &lt;em&gt;for each other&lt;/em&gt;:&lt;/p&gt;
&lt;ul&gt;
&lt;li dir="ltr"&gt;
&lt;p dir="ltr"&gt;An on-call worker has been on an incident at night, and as they are recovering or exhausted, someone else who is not currently on-call intercepts and fields alerts instead, just to make sure their colleague is not woken up.&lt;/p&gt;
&lt;/li&gt;
&lt;li dir="ltr"&gt;
&lt;p dir="ltr"&gt;Designers are unavailable, but a graphical bug has been ticketed. You decide to fix it to the best of your ability by looking at similar elements in your product despite not having design as a requirement or expectation of your role.&lt;/p&gt;
&lt;/li&gt;
&lt;li dir="ltr"&gt;
&lt;p dir="ltr"&gt;The platform team is swamped with work to support other internal customers. But deadline pressure in the product team cannot wait for the platform team to become available. So the product team spins up cloud services on their own to work around the perceived bottleneck of the platform team.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p dir="ltr"&gt;You’ll note that all these examples of compensation require doing things such as a unit bending and unofficially extending their definition of work, using their own spare capacity to help or cover for another part of the system that is under stress, or doing a mix of both to provide capabilities that are desirable but currently not part of the nominal function. &lt;strong&gt;Compensation can be temporary, or, over time, become a permanent fixture of how the system works.&lt;/strong&gt;&lt;/p&gt;
&lt;h2 dir="ltr"&gt;Decompensation&lt;/h2&gt;
&lt;p dir="ltr"&gt;Compensatory mechanisms are often called on so gradually that your average observer wouldn't even know it's taking place. Systems (or organisms) that appear absolutely healthy one day collapse, and that is how we discover they were overextended for a long while.&amp;nbsp;&lt;/p&gt;
&lt;p dir="ltr"&gt;To understand decompensation, let’s go back to biological systems, with an example of congestive heart failure provided by&amp;nbsp; Dr. Richard I. Cook in a group discussion a few years ago.&lt;/p&gt;
&lt;p dir="ltr"&gt;Effects of heart damage accumulate gradually over the years—partly just by aging—and can be offset by compensatory mechanisms in the human body. As the heart becomes weaker and pumps less blood with each beat, adjustments manage to keep the overall flow constant over time. This can be done by increasing the heart rate using complex neural and hormonal signaling.&lt;/p&gt;
&lt;p dir="ltr"&gt;Other processes can be added to this: kidneys faced with lower blood pressure and flow can reduce how much urine they create to keep more fluid in the circulatory system, which increases cardiac filling pressure, which stretches the heart further before each beat, which adds to the stroke volume. Multiple pathways of this kind exist through the body, and they can maintain or optimize cardiac performance.&lt;/p&gt;
&lt;p dir="ltr"&gt;However, each of these compensatory mechanisms has other, less desirable consequences. The heart remains damaged and they offset it, but the organism remains unable to generate greater cardiac output, such as would be required during exercise. You would therefore see "normal" cardiac performance at rest, with little ability to deal with increased demand. If the damage is gradual enough, the organism will adjust its behavior to maintain compensation: you will walk slower, take breaks while climbing stairs, and will just generally avoid situations that strain your body. This may be done without awareness of the decreased capacity of the system, and you may even resist acknowledging that you ever slowed down.&lt;/p&gt;
&lt;p dir="ltr"&gt;&lt;strong&gt;Decompensation happens when all the compensatory mechanisms no longer prevent a downward spiral&lt;/strong&gt;. If the heart can't maintain its output anymore, other organs (most often the kidneys) start failing. A failing organ can't overextend itself to help the heart; what was a stable negative feedback loop (slowing down some adverse effect) becomes a positive feedback loop (accelerating and amplifying things), which quickly leads to collapse and death.&lt;/p&gt;
&lt;p dir="ltr"&gt;Someone with a compensated congestive heart failure appears externally well and stable. They have gradually adjusted their habits to cope with their limited capacity as their heart weakened through life. However, looking well and healthy can hide how precarious of a position the person is in. Someone in their late sixties skipping their heart medication for a few days or ignoring their low-salt diet could be enough to tip the scales into decompensation.&lt;/p&gt;
&lt;p dir="ltr"&gt;&lt;strong&gt;Decompensation usually doesn’t happen because compensation mechanisms fail, but because their range is exhausted.&lt;/strong&gt; A system that is compensating looks fine until it doesn’t. That's when failures may cascade and major breakdowns occur.&lt;/p&gt;
&lt;h2 dir="ltr"&gt;Decompensation and Resilience in Software&lt;/h2&gt;
&lt;p dir="ltr"&gt;A classic case of decompensation in software systems is introducing queues to handle temporary overload in front of services with fixed capacity. However, as the lulls that are used to catch up become rarer with increased usage, the software system reaches &lt;a href="https://surfingcomplexity.blog/2025/12/23/saturation-waymo-edition/" rel="nofollow noreferrer noopener"&gt;saturation&lt;/a&gt;. People might try to compensate by increasing the queue size or increasing job timeouts, but as delays get worse, tasks get re-enqueued by clients, which further saturates the queue; at this point the ability to delay jobs is no longer effective at controlling load, and the accelerating feedback loop tells us the system is on its way to collapse.&lt;/p&gt;
&lt;p dir="ltr"&gt;From that point on, we may encounter a cascading failure. Some &lt;em&gt;tipping point&lt;/em&gt; is met, and one failure mode grows and propagates throughout the rest of the system. While cascading failures are fascinating and worth studying on their own, they can be caused by a variety of mechanisms. Decompensation is one of them, but so are &lt;a href="https://www.sciencedirect.com/topics/engineering/common-mode-failure" rel="nofollow noreferrer noopener"&gt;common mode failures&lt;/a&gt;—a simultaneous failure of several components due to a single shared dependency&lt;/p&gt;
&lt;p dir="ltr"&gt;Decompensation will tend to be more subtle because compensating behavior hides problems. We could think of auto-scaling reaching its limits and then killing a cluster because it falls behind on its ability to do work as a common mode failure. This could become decompensation if you discovered that whenever your system neared its scaling limits, engineers went in and made optimizations that kept squeezing the lemon further and further, trying to find ways to reduce demand.&lt;/p&gt;
&lt;p dir="ltr"&gt;Common mode failures are worth looking into because they too can cause cascades, and might reveal gaps in how we analyzed or planned our systems. While compensation and decompensation can reveal similar issues, they are of particular interest to Resilience Engineering because they are also signs of &lt;em&gt;adaptive behavior&lt;/em&gt;.&lt;/p&gt;
&lt;h2 dir="ltr"&gt;Adaptive Behavior, Adaptation, and Resilience Engineering&lt;/h2&gt;
&lt;p dir="ltr"&gt;It is worthwhile to make a distinction between compensation, which is a type of adaptive process, and adaptation writ large. See compensation as coping with ongoing pressures or degradations (even if they never end!), whereas successful adaptation could be thought of as reaching new, more optimal operating points. Think of how someone driving a manual car with worn out brakes (or who fears their brakes might overheat) might use &lt;a href="https://en.wikipedia.org/wiki/Engine_braking" rel="nofollow noreferrer noopener"&gt;engine braking&lt;/a&gt; to slow the car down when going downhill; this is very different from &lt;a href="https://en.wikipedia.org/wiki/Regenerative_braking" rel="nofollow noreferrer noopener"&gt;regenerative braking&lt;/a&gt; in electric or hybrid vehicles, which is a designed feature.&lt;/p&gt;
&lt;p dir="ltr"&gt;The reason this distinction is useful is that while compensation has people work outside the design envelope, finding this behavior is often key to &lt;em&gt;redefining&lt;/em&gt; the design envelope. Successful adaptation requires harnessing adaptive behaviors &lt;em&gt;and&lt;/em&gt; reworking the system.&lt;/p&gt;
&lt;p dir="ltr"&gt;This fundamentally requires you to study &lt;a href="https://humanisticsystems.com/2016/12/05/the-varieties-of-human-work/" rel="nofollow noreferrer noopener"&gt;work-as-done&lt;/a&gt; (a topic for another blog post to come) to understand where people act with reciprocity, sacrificing bits of their performance to help the overall system, where they bend rules and definitions to provide success. In places where this is a habit, you will find both strength in how they adapt, and brittleness in the risk of becoming dependent on this hidden work without knowing about it, and exhausting all such capacity in the future.&amp;nbsp;&lt;/p&gt;
&lt;p dir="ltr"&gt;Part of Resilience Engineering in practice is knowing this happens, that it is necessary to deal with the unexpected, and knowing how to both protect, foster, and build on this type of capacity to keep systems successful.&lt;/p&gt;
&lt;h3 dir="ltr"&gt;Further Reading&lt;/h3&gt;
&lt;p dir="ltr"&gt;If you’d like to learn more about decompensation, along with two other contributors to complex system failures, I recommend starting with &lt;a href="https://www.researchgate.net/publication/284324002_Basic_patterns_in_how_adaptive_systems_fail" rel="nofollow noreferrer noopener"&gt;Basic Patterns in How Adaptive Systems Fail&lt;/a&gt;.&lt;/p&gt;
&lt;p dir="ltr"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;img src="https://resilienceinsoftware.org/storage/4239872/download" alt="" width="134" height="134"&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Fred Hebert&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Staff SRE, Honeycomb&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;</description>
      <pubDate>Thu, 22 Jan 2026 05:22:00 +0000</pubDate>
      <guid>https://resilienceinsoftware.org/news/11454232</guid>
      <link>https://resilienceinsoftware.org/news/11454232</link>
      <media:content url="https://d21hwc2yj2s6ok.cloudfront.net/shrine_store/uploads/networks/3057/communication_news/11454232/compressed-4508ac3932b86825e20ec49f73d137d2.webp"/>
    </item>
    <item>
      <title>Negotiating the Paradox We Face in Resilience Engineering—Lessons From an Engineering Leader</title>
      <description>&lt;p dir="ltr"&gt;&lt;em&gt;Author’s note: I need to credit my friend and former colleague Tim Nicholas for his review and contribution to this article and the insights within it. Tim has been pivotal in shaping how I understand failures in complex systems and Resilience Engineering, and how I incorporate this into my overall approach as an engineering leader. (Also, the spelling is New Zealand English.)&lt;/em&gt; &lt;/p&gt;
&lt;p dir="ltr"&gt;So you’re an Engineering Manager or a Director, or perhaps a Staff Engineer. You’ve discovered the world of Resilience Engineering and had some pretty significant "a ha" moments. Now you want to bring Resilience Engineering into your organisation, and set the world to rights. &lt;/p&gt;
&lt;p dir="ltr"&gt;I’ve been exactly where you are right now, and I’m going to suggest you hold your horses, and let me share my insights and recommendations from my experience as an Engineering Leader working to make Resilience Engineering a reality. There’s pitfalls on this journey that I can help you avoid.&lt;/p&gt;
&lt;p dir="ltr"&gt;As an SRE (or adjacent) leader, you will find yourself in a challenging position when it comes to Resilience Engineering. You’re the layer in the middle. You're stuck between the practitioners, who are passionate but may not have good insight into the realities and challenges of leaders, and the executive layers, who have different goals and concerns and don’t have the motivation to deviate from things they think are working. &lt;/p&gt;
&lt;p dir="ltr"&gt;Most people working in tech and IT, no matter the type of company or organisation, will be familiar with various practices around incidents. A lot of these are summed up in regular incident reporting. Often produced monthly or existing in a dashboard, this reporting includes data and metrics such as MTTR, incident counts by severity and root cause type, and compliance with completing post incident review (PIR) action items. &lt;/p&gt;
&lt;p dir="ltr"&gt;These are often non-negotiable—the default standards and expectations that have permeated deeply and widely throughout our industry. In many cases, Boards and Executives expect to see these reports as indicators of risk and operational effectiveness, to ensure they fulfill their corporate governance obligations. Engineering Leaders and Managers simultaneously use them as a purported lens to measure team and engineering system performance. Producing a Root Cause Analysis (RCA) is a deeply embedded expectation of both leadership and customers following a high severity incident, as is tracking completion of PIR action items. You can’t explore a monitoring or incident response tool without  being sold the ability to drive down your MTTR. &lt;/p&gt;
&lt;p dir="ltr"&gt;However, these are all things that those of us in the Resilience in Software community know and accept to be not just misleading and outdated, but also counterproductive and potentially harmful to the actual improvement of safety in an organisation.&lt;/p&gt;
&lt;p dir="ltr"&gt;That leaves those of us in Resilience Engineering with quite the dilemma. Do we speak out against these deeply embedded practices and expectations and seek to explicitly educate our colleagues and leaders, or is it all a necessary evil in making space for resilience work? &lt;/p&gt;
&lt;h2 dir="ltr"&gt;The Paradox&lt;/h2&gt;
&lt;p dir="ltr"&gt;The fact is, we are faced with a paradox. A contradiction that reveals deeper truths and a reality that is difficult to reconcile. &lt;/p&gt;
&lt;p dir="ltr"&gt;For an engineering leader to build trust and credibility—to be perceived as competent—they need to meet or exceed the expectations of leaders and executives by carrying out these default standards and practices. You believe this to be contrary to your goals, however my experience tells me you should do these things anyway in pursuit of bigger picture resilience and adaptive capacity. &lt;/p&gt;
&lt;p dir="ltr"&gt;Before you get upset and stop reading, hear me out. I’ve been the leadership layer in the middle, sandwiched between the practitioners who really understand Resilience Engineering and see the need for it every day, and the executives with different concerns, goals and motivations. &lt;/p&gt;
&lt;p dir="ltr"&gt;My goal when it comes to Resilience Engineering is to legitimise the work, the practices and the concepts. I want to make space for engineers to conduct incident analysis to better understand our systems and the conditions that enable incidents to occur. I also want to build understanding and acknowledgement of complexity and Resilience Engineering in leadership to enable better awareness and decision making. &lt;/p&gt;
&lt;p dir="ltr"&gt;Very specifically, my goals no longer include the death of root cause analysis, incident metrics, MTTR and PIR action tracking. &lt;/p&gt;
&lt;p dir="ltr"&gt;Telling executive leadership that incident counts, MTTR, and root cause analysis are wrong/incorrect/misleading gets you nowhere. I can confidently say that when an executive leader wants to be talking about quality of service for your customers, the last thing they want to hear about is academic papers and Monte Carlo simulations. This narrative is harming our ability to do resilience work, and undermines the credibility of our ideas, our practices and our movement. It is very difficult to educate people against their will, especially if their view of competence on a subject is different to your own. We must make Resilience Engineering appealing and useful to executives if we are to get their support and buy in.&lt;/p&gt;
&lt;p dir="ltr"&gt;Board and Executive pressure around incidents and the need to present something that is viewed as tangible and sound should never be underestimated. Once you are in the pressure cooker of “too many incidents” or “poor reliability,” incident data and reports can give leaders the tools to &lt;strong&gt;feel&lt;/strong&gt; in control but also demonstrate that they are in control. Many of the traditional incident practices and metrics help leaders communicate that they are controlling things, and also creates opportunities for them to exert control on what people do—even when they don't have control over the actual system or system outcomes. &lt;/p&gt;
&lt;p dir="ltr"&gt;The closer you are to the sharp end—the point where the most direct and often challenging work of a particular activity takes place—the more apparent it is that uncertainty exists. Many of the above-mentioned default standards and expectations around incidents are designed to help manage and control uncertainty. However, Resilience Engineering is essentially about embracing uncertainty as an unavoidable reality of complex systems. As a result we tend to want everyone to accept uncertainty as unavoidable. In the Boardroom, far removed from the sharp end, the perspective is very different. Uncertainty is something that should be managed and reduced. It can become a risk with acceptable probability, but it can't be unmanaged. From this different perspective, the system and its outcomes must be controlled, or have the illusion of being controlled, even if we know this to be at odds with the system’s reality. &lt;/p&gt;
&lt;h2 dir="ltr"&gt;My Recommendations&lt;/h2&gt;
&lt;p dir="ltr"&gt;You need to play the game that others think they are playing. As an engineering leader, you only have so much social capital and so many cards to play in what you can change and influence. You want these cards to be used for your agenda, and you want to make meaningful progress. This might be influencing for additional headcount or prioritising a particular piece of system improvement work. I don’t think those limited cards should be used for debating concepts like MTTR and incident counts. &lt;/p&gt;
&lt;h3 dir="ltr"&gt;Give Them What They’re Asking For&lt;/h3&gt;
&lt;p dir="ltr"&gt;If leaders and executives are asking, then continue to produce that incident data and show those PIR actions. If you’re not doing it then someone else will, and it’s much better to be in control of the data and the narrative. Position yourself and your SRE leaders as credible, in control and taking action, even if it’s not by your definition. If your leaders aren’t currently asking for typical incident reports and metrics, I strongly suggest  you have the data on hand to be  in a position to provide it should you be asked. You need your perceived competence and resilience work to ride the wave of leadership change and organisational evolution. Even if you succeed with one set of leaders in building their understanding that these are not the metrics or approaches they need, leaders come and go. If you are perceived as too far from industry norms you will have a hard time establishing trust and credibility with a new set of leaders who haven't been on the same journey. &lt;/p&gt;
&lt;h3 dir="ltr"&gt;Proceed with Caution When Educating and Influencing&lt;/h3&gt;
&lt;p dir="ltr"&gt;Rather than seeking to educate directly in a way that can be perceived as contrary, model the Resilience Engineering concepts, language and practices you want to see others adopt. Once your stakeholders become familiar with the concepts through a more implicit approach, you’ll find them more receptive to being introduced to new ways of understanding reliability and resilience, and different types of recommendations from their teams as a result. &lt;/p&gt;
&lt;p dir="ltr"&gt;Educating and influencing leadership on Resilience Engineering is not without risks, so I recommend that you proceed with caution. This approach assumes  leaders have the willingness to learn and the conceptual grounding to make informed decisions. In reality, this is rarely the case. When it comes to incidents, leaders tend to believe they know how things should be done and are resistant to alternative approaches and perspectives. Even if you do manage to succeed in educating leadership, the outcome is uncertain. At best they gain only a surface-level grasp of new concepts, at worst they misinterpret and misapply what they’ve learned, causing further harm. &lt;/p&gt;
&lt;p dir="ltr"&gt;A more effective strategy is to empower people closer to the work—those who have done the analysis and understand the tradeoffs—to provide recommendations for executive action. These recommendations should narrow the range of options and enable leadership to make decisions confidently. These recommendations are more likely to be accepted if they are backed by the credibility and trust gained through giving leaders what they’re asking for. &lt;/p&gt;
&lt;p dir="ltr"&gt;Anecdotally, attempting to influence leadership towards more of our Resilience Engineering methods and practices has a notable rate of burnout for SRE leaders and senior individual contributors. I suspect the phenomenon we are currently experiencing in this regard is part of some broader industry cycle due to factors outside of our control. Either way, we need our perceived competence and resilience work to ride out the wave of this industry cycle, just as we need to ride out the wave of leadership change and organisational evolution. And we need to be able to do that with our mental and emotional wellbeing intact. &lt;/p&gt;
&lt;h3 dir="ltr"&gt;Acknowledge and Negotiate the Paradox&lt;/h3&gt;
&lt;p dir="ltr"&gt;So what does this look like in practice? Think of it like putting spinach in a kid’s smoothie—give them what they think they want, and include the good, healthy stuff they also need in the process. If someone states human error as a cause for an incident, you can mention that this tends to be an indicator of underlying systemic challenges worth taking a closer look at. If you can, offer to provide SRE resources to conduct a more useful PIR. If leaders are getting caught up on incident counts and MTTR, you can use SLOs to provide a more meaningful representation of the quality of the customer experience, while providing context in the form of themes and patterns relevant to your audience. &lt;/p&gt;
&lt;p dir="ltr"&gt;It’s here in these conversations, with the background of outputs and metrics you’re not enthusiastic about, that you’re best placed to use those valuable cards to make recommendations based on insights from incident learning and resilience work. Whether it be highlighting systematic challenges and areas of underinvestment or making recommendations to support better prioritisation and improving the engineered system.&lt;/p&gt;
&lt;p dir="ltr"&gt;In all of this, you are constantly negotiating the paradox we face in Resilience Engineering. &lt;strong&gt;These opposing perspectives and methods will always coexist&lt;/strong&gt;. One might be more dominant than the other at certain points in time, but there will always be that push and pull. You need to be ready for it. By building the perception of competence and playing along with short term optics, you can pursue the bigger picture of Resilience Engineering. &lt;/p&gt;
&lt;p dir="ltr"&gt;I still hope that one day we will build broad industry recognition for Resilience Engineering concepts and practices, while outdated methods and metrics fade off into the sunset. Until that day comes, we play the game while working to change the rules.&lt;/p&gt;
&lt;p dir="ltr"&gt; &lt;/p&gt;
&lt;p dir="ltr"&gt;&lt;strong&gt;&lt;img src="/storage/3784353/download" alt="" width="148" height="111"&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p dir="ltr"&gt;&lt;strong&gt;Michelle Casey&lt;/strong&gt;&lt;/p&gt;
&lt;p dir="ltr"&gt;SRE/Engineering Leader &lt;/p&gt;
&lt;p&gt; &lt;/p&gt;</description>
      <pubDate>Tue, 29 Jul 2025 17:16:37 +0000</pubDate>
      <guid>https://resilienceinsoftware.org/news/1288714</guid>
      <link>https://resilienceinsoftware.org/news/1288714</link>
      <media:content url="https://d21hwc2yj2s6ok.cloudfront.net/shrine_store/uploads/networks/3057/communication_news/1288714/compressed-9b89a4c0e316ea8a8eb7f5fe1854987c.webp"/>
    </item>
    <item>
      <title>MTTR Is (Still) Lying to You</title>
      <description>&lt;p dir="ltr"&gt;&lt;em&gt;Ed note: This is largely a re-post of what was in the 2022 VOID report. Since then, I continute to see ongoing conversations (and product marketing pages) touting the benefits of MTTR so I thought it was time to dust off these data that show how unreliable and unhelpful MTTR is to software organizations.&lt;/em&gt;&lt;/p&gt;
&lt;p dir="ltr"&gt;Software organizations tend to value measurement, iteration, and improvement based on data. These are great things for an organization to focus on; however, this has led to an industry practice of calculating and tracking Mean Time to Resolve, or MTTR. While it’s understandable to want to have a clear metric for tracking incident resolution, MTTR is problematic for a number of reasons.&amp;nbsp;&lt;/p&gt;
&lt;p dir="ltr"&gt;The first is solely statistical: based on data evaluated by &lt;a href="https://sre.google/resources/practices-and-processes/incident-metrics-in-sre/" rel="nofollow noreferrer noopener"&gt;Stepan Davidovič&lt;/a&gt;, &lt;a href="https://mcusercontent.com/ad9b3a31c069c03a14227a79c/files/29e138f4-05b7-f560-a7d5-c337538a93eb/2022_Void_Report.pdf" rel="nofollow noreferrer noopener"&gt;The VOID&lt;/a&gt;, and &lt;a href="https://surfingcomplexity.blog/2024/12/01/mttr-when-sample-means-and-power-laws-combine-trouble-follows/" rel="nofollow noreferrer noopener"&gt;Lorin Hochstein&lt;/a&gt;, measures of central tendency like the mean, aren’t a good representation of positively-skewed data, in which most values are clustered around the left side of the distribution while the right tail of the distribution is longer and contains fewer values. The mean will be influenced by the spread of the data, and the inherent outliers. Consider these (real incident) data from the VOID:&lt;/p&gt;
&lt;p&gt;&lt;img style="float: left;" src="/storage/3758422/download" alt="" width="600" height="360"&gt;&lt;/p&gt;
&lt;p dir="ltr"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p dir="ltr"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p dir="ltr"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p dir="ltr"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p dir="ltr"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p dir="ltr"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p dir="ltr"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p dir="ltr"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p dir="ltr"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p dir="ltr"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p dir="ltr"&gt;The mean is clearly well to the right of the majority of the data points in the distribution—this is to be expected for a positively-skewed distribution with a small set of large outliers. So next you might consider a different MTTR: &lt;em&gt;Median&lt;/em&gt; Time to Respond. The median value will be less influenced by outliers, so it might be a better representation of the data that you could use over time.&amp;nbsp;&lt;/p&gt;
&lt;p dir="ltr"&gt;&lt;img src="/storage/3758445/download" alt="" width="600" height="349"&gt;&lt;/p&gt;
&lt;p dir="ltr"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p dir="ltr"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p dir="ltr"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p dir="ltr"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p dir="ltr"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p dir="ltr"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p dir="ltr"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p dir="ltr"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p dir="ltr"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p dir="ltr"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p dir="ltr"&gt;That certainly looks more representative, and your putative incident response metric just got 2.5 hours better simply by looking at it this way. Which begs the question: what actionable conclusions can you reach based on this information? Presumably, you calculate and track a metric like this in order to improve (or know when things are getting worse), which means you need to be able to detect changes in that metric.&lt;/p&gt;
&lt;p dir="ltr"&gt;This is where Stepan Davidovič was able to demonstrate something really powerful&amp;nbsp;&lt;a href="https://sre.google/resources/practices-and-processes/incident-metrics-in-sre/" rel="nofollow noreferrer noopener"&gt;in his report on MTTR&lt;/a&gt;, which is also applicable to these data.&amp;nbsp;Davidovič demonstrated both with empirical data and Monte Carlo simulations how incident duration data do not lend themselves to reliable calculations of improvement related to any central tendency calculations of incident duration (or overall incident count). If you’re not familiar with Monte Carlo simulations, think of it as an A/B test on simulated data instead of real-world production data.&lt;/p&gt;
&lt;p dir="ltr"&gt;Davidovič took two different, equally-sized samples from three companies’ incident data, and compared the two sets, one which had experimental changes applied to it (e.g. a 10% improvement in incident duration), and the other which had no changes and acted as the control. He then calculated the MTTR difference between the two samples over a series of 100K simulations, such that a positive value indicates an improvement, or shortening of MTTR.&lt;/p&gt;
&lt;figure class="image"&gt;&lt;img src="/storage/3758463/download" alt="" width="600" height="360"&gt;
&lt;figcaption&gt;Source: Incident Metrics in SRE (Google/O’Reilly)&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p dir="ltr"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p dir="ltr"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p dir="ltr"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p dir="ltr"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p dir="ltr"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p dir="ltr"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p dir="ltr"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p dir="ltr"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p dir="ltr"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p dir="ltr"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p dir="ltr"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p dir="ltr"&gt;38% of the simulations had the MTTR difference fall below zero for Company A, 40% for Company B, and 20% for Company C. Looking at the absolute change in MTTR, the probability of detecting&amp;nbsp; a 15-minute improvement is only 49%, 50%, and 64%, respectively. I don't know about you, but personally I wouldn't take those odds.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p dir="ltr"&gt;Even though the experimental condition shortened incidents, the odds of detecting any improvement at all are well outside the tolerance of 10% random flukes.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p dir="ltr"&gt;Both the VOID report and Lorin’s experiments show the same outcomes. If the metric you’re using isn’t itself reliable, then how could it possibly be valuable as a broader measure of system reliability?&lt;/p&gt;
&lt;h3 dir="ltr"&gt;MTTx Are Shallow Data&lt;/h3&gt;
&lt;p dir="ltr"&gt;The second problem with MTTx metrics is they are trying to simplify something that is inherently complex. They tell us little about what an incident is really like for the organization, which can vary wildly in terms of the number of people and teams involved, the level of stress, what is needed technically and organizationally to fix it, and what the team learned as a result. MTTx (along with other data like severity, impact, count, and so on) are what John Allspaw calls &lt;a href="https://www.adaptivecapacitylabs.com/blog/2018/03/23/moving-past-shallow-incident-data/" rel="nofollow noreferrer noopener"&gt;“shallow” incident data&lt;/a&gt;. They are appealing because they appear to make clear, concrete sense of what are really messy, surprising situations that don’t lend themselves to simple summaries.&amp;nbsp;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p dir="ltr"&gt;Two incidents of the same length can have dramatically different levels of surprise and uncertainty in how people came to understand what was happening. They can also contain wildly different risks with respect to taking actions that are meant to mitigate or improve the situation.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p dir="ltr"&gt;The length of an incident yields little internally actionable information about the incident. Consider two chess games of the same length but very different pace, expertise, and complexity of moves; feature films that generally all clock in at around two hours but can have wildly different plots, complexity of characters, production budgets; War and Peace (~1,200 pages) vs. Slaughterhouse Five (~200 pages).&amp;nbsp;&lt;/p&gt;
&lt;h3 dir="ltr"&gt;Moving Beyond MTTx&lt;/h3&gt;
&lt;p dir="ltr"&gt;Ideally, given these data, organizations should stop using MTTX, or TTx data in general, as a metric related to organizational performance or reliability. First and foremost, if you are collecting this metric, chart the distribution of your incident data. If they’re positively skewed, then you’re not measuring what you think you’re measuring with MTTx, and you can’t rely on it.&amp;nbsp;&lt;/p&gt;
&lt;p dir="ltr"&gt;Second, ask yourself what decisions you’re making based on those data. Are you prioritizing hiring SREs, or are you trying to justify budget or infrastructure investments? What could you decide given either a decrease or increase in TTx (were that a reliable metric)?&amp;nbsp;&lt;/p&gt;
&lt;p dir="ltr"&gt;Given that MTTx metrics are not a meaningful indicator of an organization’s reliability or performance, the obvious question is what should organizations use instead? I’d like to challenge the premise of this question. While rolled-up quantitative metrics are often presented on organizational dashboards, quarterly reviews, and board presentations, they generally fail to capture the underlying complexity of software-related incidents. That said, it may not be possible to immediately or completely abandon metrics that management or execs want to see. Vanessa Huerta Granda wrote an &lt;a href="https://www.learningfromincidents.io/posts/looking-beyond-the-metrics" rel="nofollow noreferrer noopener"&gt;excellent post&lt;/a&gt; detailing a process of using MTTR and incident count metrics as a way to “set the direction of the analysis we do around our entire incident universe.” They can be an excellent jumping-off point to then present the insights, themes, and desired outcomes of detailed qualitative incident analyses that highlight knowledge gaps, production pressures and trade-offs, and organizational/socio-technical misalignments, which are also an important form of data:&amp;nbsp;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p dir="ltr"&gt;Because we had that [qualitative] data we were able to make strategic recommendations that led to improvements in how we do our work. In addition, having that data allowed us to get buy-in from leadership to make a number of changes; both in our technology as well as in our culture. We beefed up a number of tools and processes, our product teams started attending retrospectives and prioritizing action items, most importantly everyone across the org had a better understanding of what all went behind ‘keeping the lights on.’&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p dir="ltr"&gt;If quantitative metrics are still something your org is asking for, I suggest focusing on Service Level Objectives (SLOs) and cost of coordination data. Chapter 17 of &lt;a href="https://www.amazon.com/Implementing-Service-Level-Objectives-Practical/dp/1492076813" rel="nofollow noreferrer noopener"&gt;Implementing Service Level Objectives&lt;/a&gt; covers using SLOs as a substitute for MTTx and other common problematic reliability metrics. If people or staffing is something you need metrics for, consider tracking how many people were involved in each incident, across how many teams, and at what levels of the organization—these factors are what Dr. Laura Maguire deemed “hidden costs of coordination” that can add to the cognitive demands of people responding to incidents. There’s a big difference between a 30-minute incident that involves 10 people from three engineering teams, executives, and PR versus one that an engineer or two puzzles over for a day or so, and is lower impact.&lt;/p&gt;
&lt;p dir="ltr"&gt;I am aware of a number of companies that have moved away from tracking shallow incident metrics, and none of them regret walking away from those practices. If you're looking for folks who are actively working on these kinds of issues in their own organizations, you can find us by &lt;a href="https://resilienceinsoftware.org/memberships" rel="nofollow noreferrer noopener"&gt;becoming an RISF member&lt;/a&gt;.&lt;/p&gt;
&lt;p dir="ltr"&gt;&lt;strong&gt;MTTR Resources&lt;/strong&gt;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://mcusercontent.com/ad9b3a31c069c03a14227a79c/files/29e138f4-05b7-f560-a7d5-c337538a93eb/2022_Void_Report.pdf" rel="nofollow noreferrer noopener"&gt;2022 VOID Report&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://sre.google/resources/practices-and-processes/incident-metrics-in-sre/" rel="nofollow noreferrer noopener"&gt;Incident Metrics in SRE&lt;/a&gt; (Google Report)&lt;/li&gt;
&lt;li&gt;&lt;a href="https://surfingcomplexity.blog/2024/12/01/mttr-when-sample-means-and-power-laws-combine-trouble-follows/" rel="nofollow noreferrer noopener"&gt;MTTR: When Sample Means and Power Laws Combine, Trouble Follows&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.adaptivecapacitylabs.com/2018/03/23/moving-past-shallow-incident-data/" rel="nofollow noreferrer noopener"&gt;Moving Past Shallow Incident Data&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.infoq.com/articles/incident-metrics-void/" rel="nofollow noreferrer noopener"&gt;Moving Past Simple Incident Metrics&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.learningfromincidents.io/posts/looking-beyond-the-metrics" rel="nofollow noreferrer noopener"&gt;Making Sense out of Incident Metrics&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;img src="/storage/3758476/download" alt="" width="132" height="145"&gt;&lt;strong&gt;Courtney Nash&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Founder, The VOID&lt;/p&gt;
&lt;p&gt;VP, Resilience in Software Foundation&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;a href="https://resilienceinsoftware.org/feeds/fbfef454aa2263e27c3975d1ff28ed2815c5/communication_posts.xml" rel="nofollow noreferrer noopener"&gt;RSS feed&lt;/a&gt;&lt;/p&gt;</description>
      <pubDate>Thu, 27 Feb 2025 19:33:10 +0000</pubDate>
      <guid>https://resilienceinsoftware.org/news/1157532</guid>
      <link>https://resilienceinsoftware.org/news/1157532</link>
      <media:content url="https://d21hwc2yj2s6ok.cloudfront.net/shrine_store/uploads/networks/3057/communication_news/1157532/compressed-e2d425907ea649ea46621a814eb83c4c.webp"/>
    </item>
    <item>
      <title>Three Takes on Four Concepts for Resilience Engineering</title>
      <description>&lt;p&gt;&lt;em&gt;Ed note: The first time I read Dr. David Woods' paper &lt;a href="https://www.researchgate.net/publication/276139783_Four_concepts_for_resilience_and_the_implications_for_the_future_of_resilience_engineering" rel="nofollow noreferrer noopener"&gt;Four Concepts for Resilience Engineering,&lt;/a&gt; I felt so many things click in my brain. While the field of Resilience Engineering is not new, those of us in the software industry are relatively new to RE, and seeing a paper that is so clearly applicable to software systems left a strong impression on me. When I reached out to the RISF community for someone to contribute their thoughts on this paper, multiple hands went up in Slack—and they were all so good I couldn't pick just one. So what follows is three software engineers' takes on Woods' paper: &lt;a href="https://erikarow.land/notes/paper-four-concepts-resilience" rel="nofollow noreferrer noopener"&gt;Erika Rowland&lt;/a&gt; (ER), &lt;a href="https://dobbse.net/thinair/2023/05/resilience-and-reliability.html" rel="nofollow noreferrer noopener"&gt;Eric Dobbs&lt;/a&gt; (ED), and &lt;a href="https://ferd.ca/notes/paper-four-concepts-for-resilience-engineering.html" rel="nofollow noreferrer noopener"&gt;Fred Hebert&lt;/a&gt; (FH). Each provides their own perspective on Woods' proposed concepts, and additionally Dobbs provides some excellent software-centric examples of how you might see these concepts manifest themselves in your systems.&lt;/em&gt;&lt;/p&gt;
&lt;h2&gt;Introduction&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;ED&lt;/strong&gt;: Resilience&lt;span style="font-size: 15px;"&gt; ≠ &lt;/span&gt;Reliability. Resilience is human skills and human relationships. Reliability is what we build into our software. &lt;/p&gt;
&lt;p&gt;&lt;strong&gt;ER&lt;/strong&gt;: Resilience has been used a number of different ways in Resilience Engineering literature. This conflation of different definitions makes it difficult to parse and understand what that literature is arguing for and why.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;FH&lt;/strong&gt;: The paper opens by admitting that the popularity of the term has led to confusion regarding what it means in the first place. I recall seeing other papers which held the ill-defined term as one of the biggest weakness of a discipline named after it. All the different uses seen around the place have been categorized into 4 groups by Woods: rebound, robustness, graceful extensibility, and sustained adaptability.&lt;/p&gt;
&lt;h3&gt;Rebound&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;ER&lt;/strong&gt;: Rebound is about returning to normal functioning after a disruption. This ability to rebound seems to depend directly on the conditions before the disrupting event. How was the system prepared before the chaos began?&lt;/p&gt;
&lt;p&gt;While literature on rebound tends to focus on individual disruptions or traumas, the more interesting thing to study is the idea of surprises. A surprise is, to quote Woods:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;span style="font-family: 'Times new roman'; font-size: 16px;"&gt;the event is a surprise when it falls outside the scope of variations and disturbances that the system in question is capable of handling.&lt;/span&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;A surprise is an event that challenges an existing model and forces the system to learn or adapt the model.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;ED&lt;/strong&gt;: There are many common examples of rebound. Roll back a deploy. Restore lost data from a backup. Reboot a server. Restart a container. Truncate log files to free up disk space. Follow the instructions in a runbook. Basically, this is anything you do to put some sub-system more or less back the way it was.&lt;/p&gt;
&lt;h3&gt;Robustness&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;FH&lt;/strong&gt;: This is generally perceived to be a conflation of resilience with another term—the ability to absorb disruptions—robustness. More robustness means your system can tolerate a broader range of disturbances while still responding effectively. Generally, robust control works, and only works, for cases where the disturbances are well-modelled.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;ED&lt;/strong&gt;: Monitoring and alerting are the most basic measures. We build one component to monitor another and call in the humans if some threshold is crossed. Kubernetes comes with built-in behavior that kills containers that run out of memory and other behavior which restarts containers when they fail. Common practice for databases includes having read-only replicas, hot-standby replicas, or automated failover. Load balancers include built-in health-checks for the servers they’re balancing and will adapt to send traffic only to the healthy servers. One of the most common reasons people want to move to the cloud is to enable autoscaling, where the systems can adapt to extra traffic by spinning up more containers and then spin down those extras when the surge in traffic subsides. More sophisticated examples of robustness include bulkheads, circuit breakers, and automated chaos experiments.&lt;/p&gt;
&lt;h3&gt;Graceful Extensibility&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;FH&lt;/strong&gt;: Graceful extensibility is a sort of play on the idea of graceful degradation. Rather than asking the question how or why do people, systems, organizations bounce back, this line of approach asks: how do systems stretch to handle surprises? Resources are finite, environments changing, and their boundaries shift in ways that requires stretching and elasticity. A tenet here is that without the ability to stretch and adjust, your brittleness is far more severe than expected during normal operations, and generally exposed through extremely rapid collapses.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;ER&lt;/strong&gt;: Another aspect of concern is &lt;em&gt;decompensation&lt;/em&gt; where exhaustion of a system under sustained disruption reduces the capacity of the system to adapt to new disruptions. Think on-call fatigue in an operations teams or deformation of a material under stress that changes its properties. (&lt;span class="note-right note sidenote"&gt;&lt;span class="footnote-p"&gt;An effective way to “cut” paper without scissors is to fold it back and forth across a joint until the paper gives way with little force. Allowing you to tear the paper straight by hand.)&lt;/span&gt;&lt;/span&gt; As Woods writes:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;span style="font-family: 'Times new roman'; font-size: 16px;"&gt;When the time to recovery increases and/or the level recovered to decreases, this pattern indicates that a system is exhausting its ability to handle growing or repeated challenges, in other words, the system is nearing saturation of its range of adaptive behavior.&lt;/span&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;strong&gt;FH&lt;/strong&gt;: The idea here is influenced by Safety-I (studying and preventing failures) vs. Safety-II (studying and enhancing successes), such that graceful extensibility can be seen as a positive attribute: how do we create a readiness-to-respond that is a strength and can be leveraged in all sorts of situations, rather than narrowing it to being the avoidance of negative effects?&lt;/p&gt;
&lt;p&gt;Contrasted with rebounds, the approach to this is to look at past challenges, and see them as a way to gauge the potential to adapt to new surprises in the future. It also allows the idea of studying sequences and series of rebounds on a longer-term view of the system. How do they succeed and how do they fail?&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;ED&lt;/strong&gt;: The best example we have of graceful extensibility in the software business is incident response. Once we detect that some part of our system is getting overwhelmed or otherwise misbehaving, some group of us drop what we’re doing to prevent the problem from getting worse and to remediate.&lt;/p&gt;
&lt;h3&gt;Sustained Adaptability&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;ER&lt;/strong&gt;: Sustained adaptability asks three questions of a resilience engineer:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;What characteristics explain the difference between systems that have sustained adaptability vs. those that don't?&lt;/li&gt;
&lt;li&gt;What design principles and techniques allow you to engineer sustained adaptability?&lt;/li&gt;
&lt;li&gt;How would you know if you succeeded in engineering sustained adaptability in a system?&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;&lt;strong&gt;FH&lt;/strong&gt;: Expected challenges to sociotechnical systems over their life cycle include:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Surprises will keep challenging boundaries&lt;/li&gt;
&lt;li&gt;Conditions and contexts will keep changing and shifting the boundaries&lt;/li&gt;
&lt;li&gt;Adaptive shortfalls will happen and people will have to step in&lt;/li&gt;
&lt;li&gt;The factors that provide adaptability and the needs for them will shift over time&lt;/li&gt;
&lt;li&gt;Classes of changes will happen and the system as a whole will need to readjust itself and its relationships&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;&lt;strong&gt;ED&lt;/strong&gt;: This is Woods’ most demanding concept of resilience. All systems reach their own previously known limits. This happens almost continuously. People in the systems continually stretch the systems to adapt to new circumstances. Successful components in the system induce demand that exceeds their original design. It is completely predictable that something will fail under the changing conditions. The specifics of what will fail and when is less predictable.&lt;/p&gt;
&lt;p&gt;We have a few examples that address sustained adaptability. Many teams are adopting operational review meetings which is an excellent practice to help monitor how the ecosystem around them is changing and how their services are responding to the relentless change. Creating a Learning From Incidents (LFI) team to conduct cognitive interviews, facilitate learning reviews, and generally help other teams broaden and deepen what we learn when circumstances overwhelm our sub-systems.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;ER&lt;/strong&gt;: Architecting a system to have sustained adaptability relies on understanding that all adaptive systems are constrained by trade-offs, and that certain architectures allow for adjustment of those trade-offs.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;FH&lt;/strong&gt;: A whole lot of the discipline [of RE] is therefore interested in all the tradeoffs people make, that biological systems (or ecosystems) make, and particularly which are fundamental and how they apply to other systems as well. An agenda of this type of resilience is in managing capacities dedicated to resilience. In this perspective, it makes sense to say a system is resilient, or not, based on how well it balances all the tradeoffs, or not.&lt;/p&gt;
&lt;p&gt;Woods states that the yield from the first two types of resilience has been low. The latter two approaches, the most positive ones, tend to provide better lines of inquiries, though the discipline is still young.&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;&lt;img src="/storage/3756894/download" alt="" width="88" height="88"&gt;&lt;a href="https://erikarow.land/notes/paper-four-concepts-resilience" rel="nofollow noreferrer noopener"&gt;Erika Rowland&lt;/a&gt;&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;&lt;img src="https://ca.slack-edge.com/T07QB109673-U07Q2120PD2-2272fae08ba6-512" alt="Profile photo for eric" width="85" height="85"&gt; &lt;a href="https://dobbse.net/thinair/2023/05/resilience-and-reliability.html" rel="nofollow noreferrer noopener"&gt;Eric Dobbs&lt;/a&gt;&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;&lt;img src="/storage/3756928/download" alt="" width="85" height="85"&gt;&lt;a href="https://ferd.ca/notes/paper-four-concepts-for-resilience-engineering.html" rel="nofollow noreferrer noopener"&gt;Fred Hebert&lt;/a&gt;&lt;/p&gt;</description>
      <pubDate>Wed, 19 Feb 2025 21:28:20 +0000</pubDate>
      <guid>https://resilienceinsoftware.org/news/1149720</guid>
      <link>https://resilienceinsoftware.org/news/1149720</link>
      <media:content url="https://d21hwc2yj2s6ok.cloudfront.net/shrine_store/uploads/networks/3057/communication_news/1149720/compressed-8467713c9d8344da33620ded5bc095cf.webp"/>
    </item>
    <item>
      <title>You Can't Build More Nines</title>
      <description>&lt;p&gt;(&lt;em&gt;Originally published &lt;a href="https://medium.com/@Spamaps/you-cant-build-more-nines-5fd0321c2422" rel="nofollow noreferrer noopener"&gt;on Medium&lt;/a&gt;&lt;/em&gt;)&lt;/p&gt;
&lt;p id="898e"&gt;Software teams are built to.. well.. build. We have design processes, RFC processes, change management processes.. lots of processes. All of them tend to be optimized for building. &lt;/p&gt;
&lt;p&gt;But, inevitably after building enough complexity, we start to realize that our systems are not reliable enough. We start to measure uptime and, lo, there are not enough nines!&lt;/p&gt;
&lt;p id="97f1"&gt;Of course, our first inclination is to build our way to more nines. Build CI/CD pipelines. Build canary deployments. Build a platform. Build synthetic testing.&lt;/p&gt;
&lt;p id="6501"&gt;It’s usually at this point that the dissolution sets in. Why aren’t we getting more nines? We built stuff for that!&lt;/p&gt;
&lt;p id="9c14"&gt;But what are we measuring when we measure uptime anyway?&lt;/p&gt;
&lt;p id="bd4e"&gt;We are, in effect, measuring how often we see what we want to see when we look. Is it up now? Yes. How about now? Yes. Did our users succeed mostly?&lt;/p&gt;
&lt;p id="e9ce"&gt;Well if that’s what we’re measuring, and we’re trying to build more nines, we have to ask: what is a nine composed of?&lt;/p&gt;
&lt;p id="a1c0"&gt;One might say it is composed of time slices in which we’re up, or successful events. So, could we say then that if we build a system that is up, that we built the nines?&lt;/p&gt;
&lt;p id="d9b8"&gt;Unfortunately, math would like a word. Those nines are a percentage, so we’re always subject to everything in the denominator.&lt;/p&gt;
&lt;p id="73af"&gt;Or, to paraphrase a common military euphemism: “the entropy gets a vote.” No matter how bullet-proof you build the components of your system, the only way to make nines go up is to be ready to deal with the host of surprises that take them back down. By definition a percentage is a zero sum game. So, really, to add nines to your target, you have to subtract something else. You have to subtract the faults.&lt;/p&gt;
&lt;h2 id="ef42" class="wt wu qv bf wv ww wx dv mj wy wz dx mn wf xa xb xc wj xd xe xf wn xg xh xi xj bk"&gt;But, but, I’ve built systems to add nines!&lt;/h2&gt;
&lt;p id="7436" class="pw-post-body-paragraph vu vv qv vw b vx xk vz wa wb xl wd we wf xm wh wi wj xn wl wm wn xo wp wq wr gb bk"&gt;You’ve probably built mostly two things: Fault avoidance, and redundancy.&lt;/p&gt;
&lt;p id="5f7e" class="pw-post-body-paragraph vu vv qv vw b vx vy vz wa wb wc wd we wf wg wh wi wj wk wl wm wn wo wp wq wr gb bk"&gt;Fault avoidance is the easy part. End-to-end tests that run pre-merge avoid some faults. Canary deploys avoid another class. Type checkers, linters, unit tests, all avoiding classes of faults. These will certainly increase the nines in the components of your system where they are deployed.&lt;/p&gt;
&lt;p id="cc49" class="pw-post-body-paragraph vu vv qv vw b vx vy vz wa wb wc wd we wf wg wh wi wj wk wl wm wn wo wp wq wr gb bk"&gt;But again, this doesn’t do much to avoid the surprises of a complex system meeting the entropy of the real world. And since you’ve now optimized the velocity of changes entering your components by making a very powerful, confidence-building CI/CD pipeline, you also increase the velocity of change. No matter how good your pre-merge and post-deploy automated testing and rollback system is, it will always be supporting the change process. And changes are a source of faults. So while having great fault-avoidance automation will certainly subtract faults, it will also add some new ones back in.&lt;/p&gt;
&lt;p id="1a9b" class="pw-post-body-paragraph vu vv qv vw b vx vy vz wa wb wc wd we wf wg wh wi wj wk wl wm wn wo wp wq wr gb bk"&gt;So, you did the easy thing, but now you need to subtract more faults. Now you need to think about making the collections of components more redundant. After all, it’s predictable to have a broad class of problems like “ran out of computers” or “Network suddenly stopped networking.” or “Back-hoe cut fiber connection.”&lt;/p&gt;
&lt;p id="6268" class="pw-post-body-paragraph vu vv qv vw b vx vy vz wa wb wc wd we wf wg wh wi wj wk wl wm wn wo wp wq wr gb bk"&gt;For this, you build global database replication, leader elections, sharding, tombstones, write forwarding, queuing, eventual-consistency, etc. etc.&lt;/p&gt;
&lt;p id="bf39" class="pw-post-body-paragraph vu vv qv vw b vx vy vz wa wb wc wd we wf wg wh wi wj wk wl wm wn wo wp wq wr gb bk"&gt;All of this fancy redundancy subtracts those big, obvious, predictable failures. So surely you’ll get the precious nines you’ve been longing for from this. Finally, you’ve done it. You’ve built the nines!&lt;/p&gt;
&lt;p id="7958" class="pw-post-body-paragraph vu vv qv vw b vx vy vz wa wb wc wd we wf wg wh wi wj wk wl wm wn wo wp wq wr gb bk"&gt;Except, you will also note some new faults. Global DB replication runs out of transaction log space. Leader elections take too long. Shards get flaky. Tombstones build up faster than they can be reaped. Metrics stop flowing. Logs are lost. Etc. etc. The denominator for good and bad events has added so many things, you might even make it worse before it gets better.&lt;/p&gt;
&lt;h2 id="b766" class="wt wu qv bf wv ww wx dv mj wy wz dx mn wf xa xb xc wj xd xe xf wn xg xh xi xj bk"&gt;So, it’s goat herding for me then?&lt;/h2&gt;
&lt;p id="bb01" class="pw-post-body-paragraph vu vv qv vw b vx xk vz wa wb xl wd we wf xm wh wi wj xn wl wm wn xo wp wq wr gb bk"&gt;Don’t give up here. More nines are achievable, and sustainable, obviously. Many of us have done it. But, whether we consciously know this or not, we didn’t do it just by building software. Whether we hit three or six nines, and whether or not we realized it at the time, we built something a bit more, something a bit harder to measure than uptime, or redundancy or fault avoidance:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;span class="al"&gt;&lt;span class="xp"&gt;We built our organization’s resilience.&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p id="f490" class="pw-post-body-paragraph vu vv qv vw b vx xk vz wa wb xl wd we wf xm wh wi wj xn wl wm wn xo wp wq wr gb bk"&gt;This didn’t happen by accident though. Somebody committed to driving the faults down. Somebody gave cover for those down at the sharp end feeling the pain of those faults. It went best when it was our leaders.&lt;/p&gt;
&lt;p id="1b2f" class="pw-post-body-paragraph vu vv qv vw b vx vy vz wa wb wc wd we wf wg wh wi wj wk wl wm wn wo wp wq wr gb bk"&gt;While all this redundancy was rolling out, somebody had the time and space to draw a map of all the faults, and to tell everyone else about it.&lt;/p&gt;
&lt;p id="c589" class="pw-post-body-paragraph vu vv qv vw b vx vy vz wa wb wc wd we wf wg wh wi wj wk wl wm wn wo wp wq wr gb bk"&gt;As we were talking to our customers we probably listened to them, and made sure that everyone understood what they expected the system to do, and vice-versa, being clear about what we do and don’t promise.&lt;/p&gt;
&lt;p id="cc3b" class="pw-post-body-paragraph vu vv qv vw b vx vy vz wa wb wc wd we wf wg wh wi wj wk wl wm wn wo wp wq wr gb bk"&gt;When alerts went off, I hope we took them seriously, and that we made sure they were representative of a real signal, with real plans for what to do with that signal.&lt;/p&gt;
&lt;p id="b5ef" class="pw-post-body-paragraph vu vv qv vw b vx vy vz wa wb wc wd we wf wg wh wi wj wk wl wm wn wo wp wq wr gb bk"&gt;If we were lucky, we made sure people were prepared by sending them to incident command training, giving them time and space to practice, run game days, devise role-playing exercises, and complete disaster recovery testing.&lt;/p&gt;
&lt;p id="f18a" class="pw-post-body-paragraph vu vv qv vw b vx vy vz wa wb wc wd we wf wg wh wi wj wk wl wm wn wo wp wq wr gb bk"&gt;And finally, after all that, it’s very likely that when entropy reminded us that you really can’t predict what it’s going to do, we assembled an incident response team that professionally and efficiently worked to a resolution. A team that wrote down weird things they saw, from odd log messages to frustrating interrupts from outside the response team. And we made sure that they learned from those stories, and built up our collective wisdom.&lt;/p&gt;
&lt;p id="dfd6" class="pw-post-body-paragraph vu vv qv vw b vx vy vz wa wb wc wd we wf wg wh wi wj wk wl wm wn wo wp wq wr gb bk"&gt;Most importantly though, I would posit that nobody gets to any real, sustainable reliability, any honest version of more nines, without making space for everyone to feel safe to fail, listening to their experiences, and promoting the pockets of resilience and safety that inevitably exist in every organization.&lt;/p&gt;
&lt;p id="c01e" class="pw-post-body-paragraph vu vv qv vw b vx vy vz wa wb wc wd we wf wg wh wi wj wk wl wm wn wo wp wq wr gb bk"&gt;We didn’t build those nines. We built our organization’s resilience.&lt;/p&gt;
&lt;p class="pw-post-body-paragraph vu vv qv vw b vx vy vz wa wb wc wd we wf wg wh wi wj wk wl wm wn wo wp wq wr gb bk"&gt; &lt;/p&gt;
&lt;p class="pw-post-body-paragraph vu vv qv vw b vx vy vz wa wb wc wd we wf wg wh wi wj wk wl wm wn wo wp wq wr gb bk"&gt;&lt;img src="/storage/3756729/download" alt="" width="179" height="179"&gt; &lt;strong&gt;Clint Byrum&lt;/strong&gt;&lt;/p&gt;
&lt;p class="pw-post-body-paragraph vu vv qv vw b vx vy vz wa wb wc wd we wf wg wh wi wj wk wl wm wn wo wp wq wr gb bk"&gt;SRE&lt;/p&gt;</description>
      <pubDate>Wed, 19 Feb 2025 05:23:21 +0000</pubDate>
      <guid>https://resilienceinsoftware.org/news/1148335</guid>
      <link>https://resilienceinsoftware.org/news/1148335</link>
      <media:content url="https://d21hwc2yj2s6ok.cloudfront.net/shrine_store/uploads/networks/3057/communication_news/1148335/compressed-281e246d6a0202b3157e9817d7a613d1.webp"/>
    </item>
    <item>
      <title>You're Missing Your Near Misses</title>
      <description>&lt;p&gt;(&lt;em&gt;Originally posted at &lt;a href="https://surfingcomplexity.blog/2025/02/01/youre-missing-your-near-misses/" rel="nofollow noreferrer noopener"&gt;Surfing Complexity&lt;/a&gt;&lt;/em&gt;)&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.npr.org/2025/01/30/nx-s1-5280427/near-collisions-reagan-national-airport-military-aircraft-faa" rel="nofollow noreferrer noopener"&gt;FAA data shows 30 near-misses at Reagan Airport – NPR, Jan 30, 2025&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The amount of attention an incident gets is proportional to the &lt;em&gt;severity &lt;/em&gt;of the incident: the greater the impact to the organization, the more attention that post-incident activities will get. It’s a natural response, because the greater the impact, the more unsettling it is to people: they worry very specifically about that incident recurring, and want to prevent that from happening again.&lt;/p&gt;
&lt;p&gt;Here’s the problem: most of your incidents aren’t going to repeat incidents. Nobody wants an incident to recur, and so there’s a natural built-in mechanism for engineering teams to put in the effort to do preventative work. The real challenge is preventing and quickly mitigating &lt;em&gt;novel&lt;/em&gt; future incidents, which is the overwhelming majority of your incidents.&lt;/p&gt;
&lt;p&gt;And that brings us to near misses, those operational surprises that have no actual impact, but could have been a major incident if conditions were slightly different. Think of them as precursors to incidents. Or, if you are more poetically inclined, &lt;em&gt;omens&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;Because most of our incidents are novel, and because near misses are a source of insight about novel future incidents, if we are serious about wanting to improve reliability, we should be treating our near misses as first-class entities, the way we do with incidents. Yet, I’d wager that there are no tech companies out there today that would put the same level of effort into a &lt;em&gt;near miss&lt;/em&gt; as they would to a real incident. I’d love to hear about a tech company that holds &lt;em&gt;near miss review&lt;/em&gt;s, but I haven’t heard any yet.&lt;/p&gt;
&lt;p&gt;There are real challenges to treating near misses as first-class. We can generally afford to spend a lot of post-incident effort on each high-severity incident, because there generally aren’t that many of them. I’m quite confident that your org encounters many more near misses than it does high-severity incidents, and nobody has the cycles to put in the same level of effort for every near-miss as they do for every high severity incident. This means that we need to use &lt;em&gt;judgment&lt;/em&gt;. We can’t use severity of impact to guide us here, because these near misses are, by definition, zero severity. We need to identify which near misses are worth examining further, and which ones to let go. It’s going to be a judgment call about how much we think we could potentially learn from looking further.&lt;/p&gt;
&lt;p&gt;The other challenge is just surfacing these near misses. Because they are zero impact, it’s likely that only a handful of people in the organization are aware when a near miss happens. Treating near misses as first class events requires a cultural shift in an organization, where the people who are aware of them highlight the near miss as a potential source of insight for improving reliability. People have to see the value in sharing when these happens, it has to be rewarded or it won’t happen.&lt;/p&gt;
&lt;p&gt;These near misses are happening in your organization right now. Some of them will eventually blossom into full-blown high-severity incidents. If you’re not looking for them, you won’t see them.&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;&lt;img src="/storage/3755714/download" alt="" width="160" height="160"&gt;&lt;strong&gt;Lorin Hochstein&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Surfing Complexity&lt;/p&gt;</description>
      <pubDate>Thu, 13 Feb 2025 18:32:14 +0000</pubDate>
      <guid>https://resilienceinsoftware.org/news/1142817</guid>
      <link>https://resilienceinsoftware.org/news/1142817</link>
      <media:content url="https://d21hwc2yj2s6ok.cloudfront.net/shrine_store/uploads/networks/3057/communication_news/1142817/compressed-13081fe45a9043b147a9b88f0ea2192a.webp"/>
    </item>
    <item>
      <title>An Incident Review of an Incident Review</title>
      <description>&lt;div&gt;
&lt;div&gt;
&lt;div class="TTb5N2DgAn9VHs"&gt;
&lt;div class="ak-renderer-wrapper is-full-width css-1jke4yk"&gt;
&lt;div class="css-10azyug"&gt;
&lt;div class="ak-renderer-document"&gt;
&lt;p&gt;&lt;span style="font-size: 12px;"&gt;(&lt;em&gt;Originally posted at&lt;/em&gt; &lt;span class="loader-wrapper"&gt;&lt;a class="css-118vsk3" tabindex="0" href="https://willgallego.com/2025/01/11/an-incident-review-of-an-incident-review/" rel="nofollow noreferrer noopener"&gt;&lt;span class="css-1cwva94"&gt;&lt;span class="smart-link-title-wrapper css-0"&gt;An Incident Review of an Incident Review&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/span&gt; )&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;So I bombed an incident review this week. More specifically, the facilitating.&lt;/p&gt;
&lt;p&gt;I’ve run post mortems/retrospectives/PIRs, whatever you want to call them, for over a decade. Just felt my arthritis kick in a bit as I typed that. It’s hard to quantify, to even qualify, subtle nuances and questions I’ve developed as handy go-to’s to get folks to speak up during interviews and meetings. My friend &lt;a class="css-1rn59kg" title="https://surfingcomplexity.blog/" href="https://surfingcomplexity.blog/" rel="nofollow noreferrer noopener"&gt;Lorin Hochstein&lt;/a&gt; said that facilitation is the hardest part of the work, which feels pretty on the money. You can always take another swing in an interview, prep what questions you’re likely to ask or come back around during the PIR (post incident review) with everyone. Walking through timelines and dashboards are toilsome, but they’re rarely more than an inconvenience of time and energy. I could see an argument made for summarization and write ups (“Tell me everyting we will need to know, all the tasks to make sure this ‘doesn’t happen again’ – but make it short enough so folks will want to read it”).&lt;/p&gt;
&lt;p&gt;But running the meeting, yeah, that can be sneakily hard. You mostly have one shot at it and before an audience who you’ve convinced to spend their time in yet another meeting instead of “the real work” (aside – &lt;em&gt;incidents are part of the real work&lt;/em&gt;). It’s very easy to lose folks, say the wrong thing, let emotions run high.&lt;/p&gt;
&lt;p&gt;Funny thing is I typically think of myself as &lt;em&gt;worse&lt;/em&gt; at the parts outside of the meeting. I’ve got golden retriever energy when it comes to helping folks out, and the PIR meeting is where I shine. It’s my job to care about folks, to make sure they’re heard? And you’re going to pay me to see folks do the “aha!” moment when the parts click? Sign me up, that’s entirely my jam. I’m fairly loquacious and have a knack for vulnerability-as-means-of-disarming folks, getting them to feel that yes it’s ok to say “I don’t know”. I consider that last bit a personal superpower.&lt;/p&gt;
&lt;p&gt;So what went wrong? The humor of analyzing the analysis, finding the fault when we’re hunting through the pieces of an outage, isn’t lost on me. It’s also an easy slide into &lt;em&gt;over&lt;/em&gt; analyzing everything we do, some college sophomore philosophy student who suddenly falls into a nihilistic hole trying to debate with everyone this sudden newfound enlightenment. To spoil the ending, I leaned too heavily on my tropes, enthusiasm and admittedly a bit of weariness from the week laying on top of a meeting. I’m also trying to get momentum for more PIR meetings, and while I know a surefire way to poison that is to set up a ton of very long and dry discussions, I condensed the review to a half hour to entice folks into joining. “That’ll surely be enough!” he lied to himself.&lt;/p&gt;
&lt;p&gt;I tend to talk. I probably say in twenty words what can be said in five. That can be comforting to some folks, vamping while they gather ideas. It’s my crutch as I over explain to &lt;em&gt;really&lt;/em&gt; make sure folks understand. That was heavily present in this latest. I got a nudge “Hey, let people talk more” in the meeting. Twice, actually, which is fairly impressive for only 30 minutes. That’s one of my focal points for PIR meetings too – don’t just repeat the narrative of events, let the participants state what happened. Folks will nod and say “Yup!” and agree with facilitators, that small modicum of power within the virtual walls of that meeting, because that’s what we’re inclined to do. Surefire way to get people &lt;em&gt;not&lt;/em&gt; to share their expertise.&lt;/p&gt;
&lt;p&gt;I was bummed for a few hours, because I felt it immediately after. No one had to mention it, I could see it clear as day. I try to leave five to ten minutes at the end of a meeting as a free space – action items, sure, but “what did we miss?” more so. There were at least two or three ideas of areas we failed to cover which feel pretty core to the learning. “Yeah, we don’t still understand the source of the problematic requests, and…”. etc.&lt;/p&gt;
&lt;p&gt;But the world didn’t end. It (typically) doesn’t when we have a major outage and I’m fairly confident we’ll be ok here. It’s good to recognize, even with a ton of experience, facilitators &lt;em&gt;do&lt;/em&gt; have tried-and-true methods that can &lt;em&gt;hinder&lt;/em&gt; if overused. I’ll also say, in retrospect, I had a question I was drilling down on for at least 15 minutes that I wanted answering, likely in my head before the meeting started. Checking bias at the door, notably when it’s your team in the driver’s seat, is &lt;em&gt;hard&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;If nothing else, incidents &lt;em&gt;are&lt;/em&gt; surprises. “Well that went wrong and caught me off guard” feels akin to that. I’ll grab this post another day in the future and appreciate it, a few more reviews under my belt that hopefully turn more my way.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Photo:&lt;/em&gt; &lt;span class="loader-wrapper"&gt;&lt;a class="css-118vsk3" tabindex="0" href="https://www.flickr.com/photos/cogdog/8761308672" rel="nofollow noreferrer noopener"&gt;&lt;span class="css-1cwva94"&gt;&lt;span class="css-1lcr4h8"&gt;&lt;img class="smart-link-icon css-1jvuwba" src="https://combo.staticflickr.com/66a031f9fc343c5e42d965ca/67167dc1d73d7b88afde5a85_Flickr%20Fave.png"&gt;&lt;/span&gt;&lt;span class="smart-link-title-wrapper css-0"&gt;2012/366/364 Driving Off the Edge&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p dir="ltr"&gt;&lt;strong&gt;&lt;img src="/storage/3752347/download" alt="" width="200" height="200"&gt;Will Gallego&lt;/strong&gt;&lt;/p&gt;
&lt;p dir="ltr"&gt;Secretary, Resilience in Software Foundation&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;</description>
      <pubDate>Tue, 11 Feb 2025 20:25:03 +0000</pubDate>
      <guid>https://resilienceinsoftware.org/news/1124004</guid>
      <link>https://resilienceinsoftware.org/news/1124004</link>
      <media:content url="https://d21hwc2yj2s6ok.cloudfront.net/shrine_store/uploads/networks/3057/communication_news/1124004/compressed-48513460fc65ef5ff204fa1c71656f11.webp"/>
    </item>
    <item>
      <title>Building a Safer Software Industry, Together</title>
      <description>&lt;p dir="ltr"&gt;The software industry is on a precipice: In 2024, with rising interest rates driven by macroeconomic forces, many firms made decisions to cut back on staff and look for more efficiencies in their operations. While said macroeconomic (and sociological) forces putatively drove those cuts, the scientific realities around stretched, highly complex socio-technical systems remain the same: &lt;a href="https://how.complexsystems.fail/" rel="nofollow noreferrer noopener"&gt;they will fail&lt;/a&gt;. It is in this world that we choose to shine a light on resilience—the adaptive (and fundamentally human) capacity that we have available to us in unprecedented, unanticipated situations. Any organization capable of this form of resilience will have a distinctive competitive advantage in the decades to come. &lt;/p&gt;
&lt;p&gt;Today’s &lt;a class="link-regular" href="https://resilienceinsoftware.org/news/1092580" rel="nofollow noreferrer noopener"&gt;announcement&lt;/a&gt; that we’ve formed the &lt;a class="link-regular" href="https://resilienceinsoftware.org/" rel="nofollow noreferrer noopener"&gt;Resilience in Software Foundation&lt;/a&gt; (RSF) has been months in the making, tactically speaking, but it has been forming in the corners and crevices of our industry for decades. Multiple people who are passionate about Resilience Engineering (RE) in the software industry have been meeting regularly to ideate what a democratically-led, inclusive, supportive community space could look and feel like for us. It would be easy to assume that simply some meetings and filing of paperwork were behind the creation of RSF (and there has indeed been a lot of paperwork!). Dig a bit deeper, though, and the work by various leaders in the field of Resilience Engineering in the software industry have brought us to this point now, when we are ready for an official Foundation. At its core, RSF is a place where we can continuously nourish and grow a vibrant community to discuss the practical world of applying resilience concepts in action, and advocate for these practices in our industry. &lt;/p&gt;
&lt;p dir="ltr"&gt;The Resilience in Software Foundation aims to transform our industry by supporting and growing Resilience Engineering throughout the industry, becoming a home to expertise, knowledge sharing, and research. We’re excited to launch with individual, student, and corporate memberships available. We have a strong Code of Conduct, borrowed from &lt;a href="https://randsinrepose.com/welcome-to-rands-leadership-slack/" rel="nofollow noreferrer noopener"&gt;Rands Leadership Slack&lt;/a&gt;, and a solid initial set of bylaws heavily borrowed from our friends at &lt;a href="https://www.usenix.org/" rel="nofollow noreferrer noopener"&gt;Usenix&lt;/a&gt;. We have articles of incorporation filed in Delaware, and have submitted our paperwork so we’re officially a 501c3. We have a board of directors, and a group of moderators for our rapidly growing Slack community. &lt;/p&gt;
&lt;p dir="ltr"&gt;Not too shabby for a bunch of safety nerds (mostly) holding down day jobs.&lt;/p&gt;
&lt;p dir="ltr"&gt;We would love for you to join us! For access to our Resilience in Software Slack community, and discounts to future events, please &lt;a href="https://resilienceinsoftware.org/memberships" rel="nofollow noreferrer noopener"&gt;join us as a member&lt;/a&gt;. If you have questions about our group and aren’t in our Slack yet, you can email us at &lt;a class="link-regular" href="mailto:info@resilienceinsoftware.org" rel="nofollow noreferrer noopener"&gt;info@resilienceinsoftware.org&lt;/a&gt;.&lt;/p&gt;
&lt;p dir="ltr"&gt; &lt;/p&gt;
&lt;p dir="ltr"&gt;&lt;strong&gt;&lt;img src="/storage/3746909/download" alt="" width="261" height="193"&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p dir="ltr"&gt;&lt;strong&gt;Colette Alexander&lt;/strong&gt;&lt;/p&gt;
&lt;p dir="ltr"&gt;President, The Resilience in Software Foundation&lt;/p&gt;</description>
      <pubDate>Wed, 18 Dec 2024 01:07:03 +0000</pubDate>
      <guid>https://resilienceinsoftware.org/news/1093612</guid>
      <link>https://resilienceinsoftware.org/news/1093612</link>
      <media:content url="https://d21hwc2yj2s6ok.cloudfront.net/shrine_store/uploads/networks/3057/communication_news/1093612/compressed-1c352bc6c7b9feeb580e3f930016ec42.webp"/>
    </item>
    <item>
      <title>Introducing the Resilience in Software Foundation</title>
      <description>&lt;p dir="ltr"&gt;Software failures are inevitable. No matter how hard we try, we can’t make our systems flawless, nor can we predict every possible problem. The systems we’re building today are beyond the mental model of any one person or team—the complexity outpaces our ability to grasp it fully, especially when those systems are under stress or operating in unexpected conditions. And with the rapid acceleration of user demands and organizational requirements, the complexity of software continues to grow. We can patch, repair, and plan for more seemingly robust systems, but it often feels like we’re walking a tightrope, one misstep away from disaster.&lt;/p&gt;
&lt;p dir="ltr"&gt;Resilience Engineering (RE) offers a way forward. It’s a science-backed framework that helps organizations cope with the inherent complexity of high-pressure systems by building adaptive capacity. Rooted in research from industries like aviation, medicine, and energy, RE brings a crucial insight to the software industry: the people who design, build, and operate these systems are the key to resilience. They’re the ones who adapt to the unexpected, learning from incidents and failure, and developing strategies to return to stability when things go wrong. &lt;/p&gt;
&lt;p dir="ltr"&gt;As software becomes a cornerstone of modern life, ensuring that it can withstand and adapt to failure is no longer optional. It’s with this idea in mind that we created the &lt;a href="https://resilienceinsoftware.org" rel="nofollow noreferrer noopener"&gt;Resilience in Software Foundation&lt;/a&gt;—a community where software practitioners can share, learn, and improve our industry together.&lt;/p&gt;
&lt;p dir="ltr"&gt;Our goal is simple: to make systems safer by making them more resilient. We are a collective of software practitioners and academics committed to embedding resilience engineering principles into the core of software design, development, and operations. Through research, education, and industry collaboration, we aim to set a new standard in software engineering—one that embraces complexity, prioritizes safety, and builds systems that not only survive but adapt under pressure. &lt;/p&gt;
&lt;p dir="ltr"&gt;We are a community of front-line practitioners who build and maintain complex software, alongside researchers who analyze trends and patterns across these systems. We continue to work on sharing ideas around Resilience Engineering because we know how demanding it is, how fundamentally scary it can be at times, and the relief that is the light at the end of the incident.&lt;/p&gt;
&lt;p dir="ltr"&gt;The tech industry has been ready to embrace these concepts for a long time. Many of us have been pushing for change over the past decade from the perspective of learning from incidents. We’ve moved beyond blameless postmortems and accounts of human error or root cause to a view of complex systems that posits humans as the central creators of safety and resilience. Members of this community have been at the forefront of these efforts for a while—with this Foundation we're looking to solidify these ideas, expand upon them, and reach out to those in tech looking for a better way. Notably, we're an inclusive group excited to introduce these concepts to folks who may be unsure how to start, or maybe are even skeptical of these approaches.&lt;/p&gt;
&lt;p dir="ltr"&gt;&lt;strong id="docs-internal-guid-180dfd3f-7fff-1174-45df-e478b165c5fa"&gt;&lt;a class="link-bold" href="https://resilienceinsoftware.org/memberships" rel="nofollow noreferrer noopener"&gt;Join us!&lt;/a&gt; &lt;/strong&gt;&lt;/p&gt;</description>
      <pubDate>Wed, 18 Dec 2024 01:06:34 +0000</pubDate>
      <guid>https://resilienceinsoftware.org/news/1092580</guid>
      <link>https://resilienceinsoftware.org/news/1092580</link>
      <media:content url="https://d21hwc2yj2s6ok.cloudfront.net/shrine_store/uploads/networks/3057/communication_news/1092580/compressed-04b378e958cacabf163094083885111f.webp"/>
    </item>
  </channel>
</rss>
