top of page

From Blame to Learning: Incident Analysis That Drives Change

Shift Quality Editorial
Apr 13
10 min read

Updated: Oct 17

A postmortem can avoid naming anyone and still be built around one person's mistake. You can tell from the action items.

An engineer on the payments team changed one value in a configuration file: the payment gateway timeout, from 3000 to 30. The neighbouring settings in that file were in seconds; this one was in milliseconds. Every call to the gateway now timed out after 30 milliseconds, and for 45 minutes at evening peak almost no payment succeeded.

The postmortem was a model of blameless practice. Nobody was named, the facilitator opened by saying the meeting was about systems, not people, and the timeline was careful. It produced four action items:

  1. Require a second reviewer for changes to payment configuration.

  2. Add a comment in the file stating each setting's unit.

  3. Remind engineers to test configuration changes in staging before production.

  4. Shorten the payment-error alert window from 10 minutes to 2.

All four were done within a month. Three months later the shipping team changed a retry setting in their own configuration, it applied to every instance at once, and the label printer integration went down for 50 minutes. Its postmortem found the same shape of failure, and the payments team's fixes had changed nothing for shipping. (Composite example drawn from patterns across several organisations; the services and figures are illustrative.)

Nobody had been blamed. But three of the four fixes were aimed at the person who made the change: watch them more closely, tell them more, remind them harder. That is the failure this article is about, and it survives even in teams that run postmortems well.

Why blameless analysis still produces blame-shaped fixes

Google's SRE book sets the standard most teams aim for: a blameless postmortem "must focus on identifying the contributing causes of the incident without indicting any individual or team," and it assumes "everyone involved in an incident had good intentions and did the right thing with the information they had." The same chapter puts the reason in one line: "You can't 'fix' people, but you can fix systems and processes."

Teams adopt the language faster than the method. The tone of the meeting changes; the shape of the analysis doesn't. The analysis walks back from the outage until it reaches a human action that could have gone differently (the engineer typed 30), and stops there, because that action feels like an explanation. Everything after that point is about the action: how to stop someone making it again. A reviewer to catch it, a comment to warn against it, a reminder to test it. The person isn't blamed, but the fixes are aimed at a person all the same.

Patient-safety research named this pattern years ago and built a tool against it. The RCA² guidance, published by the US National Patient Safety Foundation, ranks corrective actions by how much they depend on people remembering to do the right thing. Its weaker actions, the ones that "require more reliance on humans to remember to perform the task correctly", are double checks, warnings, new procedures or policies, and training. Three of the payments team's four items sit exactly there: a double check, a warning, a policy reminder.

The test you can run: take the action items from your last five postmortems and mark each one person (it changes what someone must notice, remember or do) or system (it changes what the system allows, catches or limits). If most are person, your postmortems are blameless in tone only.

Ask what made it look right

The move that gets the analysis past "the engineer typed 30" is a different question. Not why did they do that? but what made that look like the right thing to do? Sidney Dekker calls the underlying idea the local rationality principle: people do what makes sense to them given their goals, what they knew and what they were paying attention to at the time. If an action looks foolish afterwards, the analysis hasn't yet found what made it sensible beforehand.

Asked of the payments change, the question opens up the system:

  • What did the engineer see? A file where every other timeout was a small number in seconds (connect_timeout: 5, read_timeout: 10). The gateway setting was the only one in milliseconds, and nothing in its name said so.

  • What did the tooling show? The pull request diff: one number changed, 3000 to 30. No range, no unit, no warning.

  • What did the engineer expect to happen? A 30-second timeout, safer than the previous behaviour under the gateway's recent slowness, which was the reason for the change.

  • What would have told them otherwise? Staging, if it had been realistic. Its gateway stub answered in under 5 milliseconds, so a 30-millisecond timeout passed every test there.

  • What did the reviewer see? The same one-line diff. A second reviewer would have seen it too.

Every answer is a property of the system: an inconsistent naming convention, a diff with no units or ranges, a staging environment that couldn't show slowness. None of them was visible in a timeline that recorded only what happened.

The test: for every human action in your incident timeline, write one sentence that starts "This looked right because…". If you can't finish the sentence, you haven't talked to the person, or you didn't ask the right question.

A timeline of what people knew, not just what happened

Most incident timelines have one column: events in order. Add two more, what the person could see at that moment and what the system knew, and the gaps between them become the findings.

Time

What happened

What the on-call engineer could see

What the system knew

18:02

Config change merged and applied to all payment instances at once

Change deployed successfully

Config changes skip the canary that code changes go through

18:03

Gateway calls start timing out

Nothing yet

Error rate on payment calls jumped from under 1% to over 90%

18:13

First alert fires

"Payment errors elevated"

The alert used a 10-minute window, so the first page came after 10 minutes

18:13–18:31

Investigation; the recent code deploy is rolled back with no effect

Code deploy log shows one deploy at 17:40

Config changes didn't appear in the deploy log

18:31

Someone checks the config repository history

The 18:02 change

It had been there all along

18:47

Config reverted; payments recover

Recovery

Revert was manual, through the config repository

Read across the rows and the incident stops being one mistake. It becomes a chain: a change the system let through without checking units or range, applied to the whole fleet at once, detected after ten minutes, and invisible to the people looking for the cause for another eighteen. Of the 45 minutes, the typo itself took a second. The rest belongs to the system.

The test: in your last timeline, find the longest gap between what the system knew and what the responders could see. That gap is usually worth more than the trigger.

Map the barriers, not a single root cause

Complex incidents rarely have one root cause, and looking for one sends the analysis back to the person. A more useful structure asks which barriers existed between the change and the customer, and which of them failed. Four kinds cover most software incidents.

Barrier

Question

In the payments incident

Prevent

What should have stopped the bad change from reaching production?

No validation of units or range on config; staging couldn't show slowness

Limit

What should have kept the damage small?

Config applied to every instance at once; no canary

Detect

What should have noticed quickly?

10-minute alert window

Recover

What should have made fixing it fast?

Config changes missing from the deploy log; manual revert

The original action items covered prevent (weakly, through review and reminders) and detect. Nothing touched limit or recover, which accounted for most of the 45 minutes. And because the shipping team's configuration went through the same pipeline, the same gaps were waiting for them.

Four barriers between a change and a customer: prevent, limit, detect and recover. For each, what failed in the payments incident, the original fix and its strength, and the graded fix. Prevent: second reviewer and a unit comment (weaker) become schema validation with units and ranges (stronger). Limit: nothing becomes a canary for config (stronger). Detect: a 2-minute alert window (intermediate). Recover: nothing becomes config in the deploy log with one-click revert (intermediate).

The test: sort your last incident's contributing factors into the four barriers. A list with nothing under limit or recover is usually a sign that the analysis stopped at the trigger.

Grade every action by strength

This is the step most incident processes skip, and it does more to stop incidents coming back than anything else in the analysis. Before the postmortem closes, grade each action item on the RCA² hierarchy, translated to software.

Strength

What it changes

Software examples

Stronger: needs no one to remember

The system makes the failure impossible, or simplifies or standardises the process

Schema validation with units and ranges that blocks the deploy; config changes forced through the same canary as code; removing a manual step entirely

Intermediate: still relies on people, but makes errors visible or less likely

Software enhancements, checklists, redundancy, standardised communication

A tighter alert window; config changes listed in the deploy log with one-click revert; a staging stub that injects realistic latency

Weaker: relies on people remembering

Double checks, warnings, new policies, training

A second reviewer; a comment stating the unit; a reminder to test in staging; a training session

Graded, the payments team's original four items were three weaker actions and one intermediate. Rewritten against the barrier map:

  • Prevent (stronger): every configuration setting gets a schema with its unit in the name (gateway_timeout_ms) and an allowed range; a value outside it fails the pipeline. A 30-millisecond gateway timeout can't deploy.

  • Limit (stronger): configuration changes go through the same canary as code: 5% of instances first, with an automatic halt on error rate.

  • Detect (intermediate): the payment-error alert moves to a 2-minute window on error rate.

  • Recover (intermediate): configuration changes appear in the deploy log beside code deploys, with a one-click revert.

Two stronger and two intermediate actions, each tied to a failed barrier, and none of them depends on the next engineer being more careful. The schema and the canary live in the shared pipeline, so they protect every team that deploys configuration, shipping included. In the composite, the platform team built them after the shipping incident, and configuration incidents of that shape stopped.

Weaker actions still have a place. Training helps when the knowledge truly is missing, and a review costs little. The rule worth adopting is narrower: no significant incident closes with only weaker actions. At least one action per incident should be intermediate or stronger.

The test: grade the action items from your last three significant incidents. Count how many incidents closed with nothing stronger than a review, a warning, a policy or training. Each of those is likely to come back.

Follow-through, and the repeat that tells you it didn't work

Action items from postmortems are famously left undone. Three habits handle most of it: the items live in the team's normal backlog, not in the postmortem document; open items are reviewed monthly, and anything open for two months is either escalated or explicitly dropped; and each item has one named owner.

The more useful signal comes from across incidents, not within one. Tag each postmortem's contributing factors by category (configuration change, dependency timeout, capacity, data migration) and count them across quarters. A category that keeps appearing means the actions taken against it were scoped to the instance, the same pattern the post-implementation review recurrence audit catches in change reviews. In the composite, two configuration incidents in two teams within three months was the signal that the fix belonged in the shared pipeline, not in either team's process.

The test: list the contributing-factor categories from the last four quarters of incidents. Any category appearing three or more times is a system problem that individual postmortems have been treating as separate events.

What leadership does in the first hour

Blameless analysis depends less on the meeting than on what happens before it. The first question a senior leader asks after an incident tells everyone what the analysis is for. "Who made the change?" tells them it's a search for a person, and the people closest to the work will say as little as they can, which costs the analysis the very information the local-rationality questions need.

Questions that keep the analysis open: What do we know about the impact? What's needed to recover? What did the people involved see at the time? Then, after recovery: What would have stopped this, limited it, caught it sooner or fixed it faster?

Blameless doesn't mean nobody is ever accountable. The just culture idea from safety-critical industries draws the line: an honest error or a reasonable decision that turned out wrong is a system problem; knowingly reckless behaviour, such as deliberately bypassing a safety control everyone knows matters, is a conduct problem and is handled separately from the postmortem. Most incidents are firmly on the first side of that line. Treating them as if they were on the second is what makes people stop talking.

The test: count the near-misses reported in your organisation last quarter, the changes that almost caused an incident and were caught. A count of zero rarely means nothing went wrong. It usually means people don't think reporting is safe, or worth the trouble.

How deep to go

Not every incident needs a full facilitated analysis. Match the depth to the impact and to how new the failure is.

Depth

What it involves

Best suited for

Warning signs

Lightweight review (30 min, team only)

Timeline, barrier map, graded actions

Minor incidents; familiar failure modes

Used for an incident that touched customers or money

Full facilitated analysis (1–2 hours, neutral facilitator)

The above, plus interviews using the local-rationality questions

Significant customer impact; a failure nobody understood at first

Facilitator is the manager of the people involved

Cross-team analysis

Several teams, focused on shared infrastructure and recurring categories

A contributing-factor category recurring across teams

Each team's postmortem closed separately with team-level fixes

The postmortem template that encourages honesty gives you the document for any of the three. And many of the barrier gaps can be found before an incident at all: a pre-mortem on a risky change asks the barrier questions in advance.

What to do this week

Take your last significant postmortem and do two things. Grade each of its action items as stronger, intermediate or weaker. Then sort its contributing factors into prevent, limit, detect and recover. If every action is weaker, or a barrier has nothing under it, write one new action that would have changed what the system allowed rather than what a person had to remember, and get it into the backlog with an owner.

Final takeaway

A postmortem is blameless when its fixes stop depending on the next person being more careful, not just when it names nobody. Ask what made the mistake look right, map which barriers failed, and grade every action by how little it relies on memory. The incidents that stop coming back are the ones whose fixes changed the system.

This completes the Quality at Organizational Scale learning path. You've covered quality as organizational practice, engineering effectiveness programs, chaos engineering, and blameless incident analysis. The throughline: quality at scale is about organizational learning — building systems and cultures that get better from experience, including experience with failure.

Sources

  • Lunney, J. and Lueder, S., "Postmortem Culture: Learning from Failure", chapter 15 of Site Reliability Engineering: How Google Runs Production Systems (O'Reilly, 2016): blameless postmortems focus on contributing causes "without indicting any individual or team"; "You can't 'fix' people, but you can fix systems and processes." https://sre.google/sre-book/postmortem-culture/

  • National Patient Safety Foundation, RCA²: Improving Root Cause Analyses and Actions to Prevent Harm (2015; version 2, January 2016), Figure 3, Action Hierarchy: stronger actions (architectural changes, forcing functions, simplified and standardised processes), intermediate actions (redundancy, software enhancements, checklists, standardised communication) and weaker actions (double checks, warnings, new procedures or policies, training), based on the VA National Center for Patient Safety. https://www.ihi.org/library/tools/rca2-improving-root-cause-analyses-and-actions-prevent-harm

  • Dekker, S., The Field Guide to Understanding 'Human Error', third edition (CRC Press, 2014): the local rationality principle and the problem of hindsight in incident analysis.

Related reading

Keep learning. This article is part of the Advanced Quality Engineering path in the ShiftQuality Learning Center. Take quality from a team chore to an organizational property.

bottom of page