b8c.io All articles
Engineering Strategy

Nobody Actually Ran the Playbook: The Incident Readiness Gap Hiding in Your Wiki

b8c.io
Nobody Actually Ran the Playbook: The Incident Readiness Gap Hiding in Your Wiki

Somewhere in your internal docs there's a beautifully structured incident response guide. It has sections. Maybe even a table of contents. Someone spent a Thursday afternoon on it after a rough postmortem, and then it got filed away, linked in an onboarding doc, and quietly forgotten.

That document has probably not been run since it was written. And the last time your team faced a real production fire, half the steps in it were either outdated, ambiguous, or flat-out wrong.

This is the incident readiness gap—and it's way more common than most engineering leaders want to admit.

The Difference Between Documentation and Preparedness

Writing down what should happen during an incident and actually being prepared to execute it are two completely different things. Documentation is a static artifact. Preparedness is a living capability.

Think about how pilots train. They don't just read checklists—they practice in simulators until the steps become automatic. When something actually goes wrong at 30,000 feet, they're not squinting at a laminated card trying to parse ambiguous instructions. They've done it hundreds of times under pressure.

Your engineering team deserves the same kind of preparation. But most orgs treat incident response like fire insurance: you need to have it, but you don't think much about it until something's burning.

The result? When a real outage hits, you get improvisation theater. Someone's Slacking the wrong person. Someone else is running a command they half-remember from six months ago. The runbook says "escalate to the database team" but nobody's updated that doc since the database team was restructured.

What Goes Wrong When You Never Test

There are a few failure modes that show up almost universally in teams that haven't run a game day in over a year.

Stale tooling assumptions. Your runbook says to check the legacy monitoring dashboard. That dashboard was sunset eight months ago. The new one requires a different login that half the team doesn't have configured.

Missing muscle memory on comms. During a real incident, communication overhead is massive. Who creates the war room? Who posts the customer-facing status update? Who decides when to page the VP? If nobody's practiced these decisions under pressure, you'll waste precious minutes on coordination that should be automatic.

Single points of human failure. Game days have a way of revealing that only one person actually knows how to do the most critical steps. That person is also the one most likely to be on vacation during your next major outage.

Runbooks written for systems that no longer exist. This one's almost universal. Services get renamed, endpoints change, IAM policies get updated. Your documentation doesn't automatically keep up.

Building a Low-Friction Testing Cadence

The reason most teams don't run game days is that they feel expensive and disruptive. But that's usually because they're being designed wrong.

You don't need a full-day chaos engineering exercise every quarter. Start smaller. A 90-minute tabletop exercise where you walk through a hypothetical incident scenario—without actually breaking anything—can surface enormous gaps with almost no risk.

Here's a simple structure that works:

1. Pick a realistic scenario. Not "the entire datacenter goes down." Something plausible: a database replica falls behind, a third-party payment API starts returning 500s, a bad deploy causes elevated error rates on a single endpoint.

2. Walk through your runbook out loud. Have the on-call engineer narrate exactly what they'd do, step by step. Don't let senior engineers jump in with shortcuts—the goal is to test what the runbook actually says, not what the experts know.

3. Document every friction point. Anywhere someone says "wait, I'd need to look that up" or "I'm not sure who owns that" is a gap. Write it down.

4. Assign owners to fix the gaps before the next exercise.

Do this once a quarter per service tier. It doesn't have to be fancy.

Making Runbooks That Actually Work at 2am

Good runbooks aren't long. They're precise. There's a big difference.

A runbook that says "check application logs for errors" is useless at 2am. A runbook that says "run [kubectl](https://en.wikipedia.org/wiki/Kubernetes) logs -n production -l app=payments --since=10m | grep ERROR and look for connection pool exhaustion messages" is actually helpful.

Every step in a runbook should be executable by someone who hasn't touched that system in three months. If it requires tribal knowledge to interpret, it's not a runbook—it's a hint.

A few principles that make runbooks more reliable under pressure:

The Blameless Testing Culture Problem

One reason game days don't happen isn't logistical—it's cultural. Teams are afraid that running a fake incident will surface embarrassing gaps, and that surfaces blame.

But that's exactly backwards. Finding gaps in a controlled exercise is the point. The only embarrassing outcome is finding those gaps for the first time during a real customer-impacting event.

Leadership has to set the tone here. Game days should be framed explicitly as learning exercises, not performance reviews. The findings should go into a backlog and get prioritized like any other engineering work—not buried in a postmortem that nobody reads.

The Real Cost of Not Testing

Every hour of unnecessary incident duration costs real money. For a mid-sized SaaS company, extended downtime can run $10,000–$100,000 per hour depending on your contracts and customer base. That's before you factor in the reputational damage, the SLA credits, and the engineer-hours burned on the chaotic response.

A quarterly 90-minute tabletop exercise costs you maybe 10 engineer-hours including prep. The math isn't complicated.

More importantly: teams that practice incident response feel different when real incidents happen. There's less panic, cleaner communication, faster resolution. People know their roles. They trust their tools. That confidence is worth more than any runbook update.

Your incident response plan isn't broken because it was written badly. It's broken because it's never been tested. Fix that first.

All Articles

Related Articles

The Friday Deploy Myth: If You're Scared to Ship at 4pm, Your Safety Net Has Holes

The Friday Deploy Myth: If You're Scared to Ship at 4pm, Your Safety Net Has Holes

Your Third-Party Code Is Someone Else's Backdoor

Your Third-Party Code Is Someone Else's Backdoor

You Chose Every Cloud. Now You're Drowning in All of Them.

You Chose Every Cloud. Now You're Drowning in All of Them.