The "Broken Part" Myth
We love the term Root Cause Analysis (RCA). It implies that if we dig deep enough, we will find the one thing — the root — that caused the incident. Incident reports are full of conclusions like:
- "The root cause was the developer making a typo."
- "The root cause was the CPU overheating."
- "The root cause was insufficient monitoring."
These conclusions feel satisfying. They give us something to fix. But in complex systems, they are almost always wrong — or at best, incomplete.
Why It's a Fallacy
An incident in a complex system is almost always the result of multiple necessary conditions converging simultaneously. Remove any one of them, and the incident does not occur.
Consider a server crash:
| Factor | Description |
|---|---|
| Cause A | A typo in the config file |
| Cause B | The validation logic was disabled to speed up deploys |
| Cause C | It was 2 AM and the on-call engineer was fatigued |
| Cause D | Traffic was 3× normal due to a marketing campaign |
| Cause E | The circuit breaker had been removed "temporarily" two sprints ago |
If any of those factors were absent, the crash likely would not have happened. So which one is the "root"? Calling the typo the root cause is an arbitrary editorial choice — we stop digging at the point that feels most actionable (or most blameable).
This creates a dangerous illusion: "We fixed the root cause." Meanwhile, Causes B through E remain in the system, waiting for the next Cause A to arrive.
The Swiss Cheese Model
A useful mental model here is James Reason's Swiss Cheese Model: imagine each layer of your system's defenses (testing, code review, staging, monitoring, alerting) as a slice of Swiss cheese. Each slice has holes — imperfections. An incident occurs when the holes in every slice align simultaneously, creating a clear path from hazard to harm.
The "root cause" framing focuses on one slice. The Swiss Cheese model forces you to look at all of them.
Interviewers at senior SRE/platform engineering levels frequently ask: "Walk me through how you conduct a post-mortem." A weak answer describes a blame-and-fix process. A strong answer explicitly rejects single root cause framing, describes contributing factors as a causal chain, and explains how you identify systemic conditions — not just proximate triggers. Mention the Swiss Cheese Model or "multiple necessary conditions" to signal depth.