Article4 Minute Read

Root Cause is a Myth: The Blameless Post-Mortem Playbook

Outages are inevitable in complex systems. Learn how to eliminate finger-pointing and use asynchronous 5-Whys autopsies to turn downtime into engineering velocity.

Author

Amir Abdulnasser

Last Update

Root Cause is a Myth: The Blameless Post-Mortem Playbook

Root Cause is a Myth: The Blameless Post-Mortem Playbook

In the case of a production failure, the human instinctive response is: "Who pressed the wrong button?"[cite: 27]

It's just one question that is a reflection of your engineering culture[cite: 27]. The engineer didn't fail if one developer can destroy the entire production cluster by his/her pull request or flipping a configuration flag[cite: 27]. Your system failed[cite: 27].

Distributed Engineering Teams is not a time for outages to be thrown out of the window; outages are an inevitability[cite: 27]. However, in Offshore Software Development, bad incident habits can easily be allowed to spring up[cite: 27]. A manager in the USA indicates to a foreign contractor, or a distant team goes into bunkers to defend themselves[cite: 27].

Any engineering group that operates at a high velocity understands the importance of holding people accountable and the need to keep the truth out of the picture[cite: 27]. If you penalize engineers for outages, they'll cover up their problems, postpone incident notification and will cease to deploy code that is bold[cite: 27].

Real resiliency starts with giving up on blaming and implementing a "blameless post-mortem" process[cite: 27].

The Three Anti-Patterns of Toxic Post-Mortems

To be able to create an engineering autopsy that will make your platform really hard, you need to eliminate three destructive rituals[cite: 27]:

  • The Scapegoat Illusion: Pin the blame on "human error" — lazy engineering[cite: 27]. Investigations should begin with a focus on human error and should never end with a focus on that error[cite: 27]. A lack of guardrails and automated safety checks is the root cause of the problem if a system can easily accept a typo and cause the production table to be truncated[cite: 27].
  • The Synchronous Inquisition: Forcing stressed out engineers in six different time zones to go into an emergency interrogation call at 2 AM is unproductive for Remote Team Management[cite: 27]. It hinders your Remote Work Culture, making it a "show and tell" instead of a technical review[cite: 27].
  • The Actionless Write-Up: Operational waste is when you do a post-mortem and publish it to Google Docs that everyone nods to and then forgets about[cite: 27]. If there are no Jira tickets associated with the incident report, then you will experience the same outage in 3 months[cite: 27].

The 5-Whys Forensic Autopsy

A blameless post-mortem makes an outage an opportunity to do a stress test on your architecture, which is free[cite: 27]. Teams carry out an asynchronous forensic trace employing the 5-Whys technique instead of looking for scapegoats for identifying systemic failure modes[cite: 27].

Consider this real-world failure cascade[cite: 27]:

  1. So what was the cause of the checkout service crashing? Since there was no more Postgres connection available[cite: 27].
  2. What caused the connection pool to run out of connections? An API endpoint was accessed during peak usage, which was making an unindexed database query[cite: 27].
  3. What could have caused an unindexed query to get into production? The pull request was merged, but without automated query performance regression testing[cite: 27].
  4. Why didn't the performance tests take place in CI? The staging environment did not use a scaled schema which forced a new staging database to be created[cite: 27].
  5. What was the reason for the mocking of staging? As there was no tooling to spin up isolated, data seeded environments on pull requests, the team was missing this capability[cite: 27].

There was a pivot here: It started out as “a junior engineer wrote a bad SQL query” and then became “a systemic failure in CI to automatically check the performance of databases.”[cite: 27]

This is an asynchronous approach which respects Asynchronous Work Strategies and enhances Cross-Cultural Team Integration[cite: 27]. Engineers can proceed with calm and rational minds without fear of judgment and mitigate aspects of Remote Talent Retention and explain technical realities to Remote Developer Onboarding[cite: 27].

How to Make a Sustainable Solution from an Outage

Distributed Agile Teams who have conquered the blameless post-mortem are not only able to get better from incidents, but they also use downtime as a source of engineering velocity[cite: 27]:

  • Create a linter or CI check: If an outage is due to the absence of an environment variable, write a linter or CI check so that no human has to remember to check this variable manually again after an outage[cite: 27].
  • Open Timeline Construction: Make an incident timeline together in an asynchronously authored document[cite: 27]. Don't force any on-call engineer to share their logs and telemetry[cite: 27].
  • Public Remediation Tasks: Create architectural backlog tasks (P0) from the post-mortem action items before finally closing an incident review[cite: 27].

Optimize, Scale and Expand Your Systems with Vetted Engineering Capacity

The key challenge in the Future of Work is the creation of fault-tolerant systems and world-class engineering workflows[cite: 27].

Zemenay Tech is an international tech firm based in Ethiopia, offering elite IT Staff Augmentation and best-in-class Global Remote Talent[cite: 27]. We are standing by to help you take the next step in your US and European organisations' success in Tech Talent Acquisition, with Borderless Hiring made feasible, ensuring that every developer you hire is up to your standards and maintaining International Tech Compliance[cite: 27]. From experienced engineers who understand and adhere to modern engineering principles to full-cycle software delivery from the design through to production, we deliver[cite: 27].

For a free consultation, contact us today.[cite: 27]