Skip to main content
Mitigation Friction Scoring

When Your Friction Score Drops but Your Recovery Time Stays Flat: 3 Fixes

You've been tracking mitigation friction for months. The score drops—maybe from 7.3 to 4.9. You celebrate. But then you look at recovery time: still 22 hours. Flat. That's the moment you realize something's off. It's a common story. Teams pour energy into reducing friction—simplifying approvals, automating handoffs, clarifying ownership—but the clock keeps ticking. Why? Because friction and recovery aren't the same thing. They're cousins, not twins. And if you treat them the same, you'll fix the wrong problem. Why This Gap Matters Now The rise of friction scoring in engineering orgs Friction scoring has crept into every sprint retro and incident postmortem I’ve read this year. Teams love a single number—call it F—that promises to recap how much resistance the system puts up during changes. Deploy slow? F climbs. Code review takes three days? F climbs.

You've been tracking mitigation friction for months. The score drops—maybe from 7.3 to 4.9. You celebrate. But then you look at recovery time: still 22 hours. Flat. That's the moment you realize something's off.

It's a common story. Teams pour energy into reducing friction—simplifying approvals, automating handoffs, clarifying ownership—but the clock keeps ticking. Why? Because friction and recovery aren't the same thing. They're cousins, not twins. And if you treat them the same, you'll fix the wrong problem.

Why This Gap Matters Now

The rise of friction scoring in engineering orgs

Friction scoring has crept into every sprint retro and incident postmortem I’ve read this year. Teams love a single number—call it F—that promises to recap how much resistance the system puts up during changes. Deploy slow? F climbs. Code review takes three days? F climbs. The appeal is obvious: managers can glance at a dashboard, nod, and declare that engineering hygiene is improving. But here’s the gap that nobody talks about—when F drops but recovery time stays flat, that dashboard is lying to you. I have watched orgs pour weeks into reducing friction only to discover, mid-incident, that their tired old runbook still takes forty-five minutes to execute. The score goes green. The pager keeps buzzing.

Real cost of flat recovery times

Think about what a stagnant recovery time actually costs. Not in abstract uptime percentages—in real, calendar-destroying incidents. Your team ships faster now. Deploys that used to take an hour take fifteen minutes. The friction score drops from 78 to 34. Nice. Then the database replica falls over at 2 AM and the engineer on call still fumbles through a twelve-step recovery process that was written when the company had three microservices. That hurts. The seam between low friction during normal operations and high friction during crisis is exactly where outages turn into all-nighters. Most teams skip this: they optimize for the happy path—deploy, merge, ship—and assume recovery will magically follow. It doesn’t. Recovery is a muscle that atrophies when you only train for speed.

The tricky bit is that leaders misread the metrics. They see a friction chart trending down and greenlight more velocity initiatives. Meanwhile the mean time to recover (MTTR) sits stubbornly at forty-two minutes, same as it was six quarters ago. I once sat in a quarterly review where the VP engineering pointed at the green friction line and said “we’re getting healthier.” The recovery trend line was a flat, silent accusation. Nobody mentioned it. Because recovery is harder to measure—it involves human behavior, stale documentation, and the fact that the person who wrote the runbook left nine months ago. That’s the real cost: you invest effort in the wrong lever.

A friction score without a recovery counterpart is like measuring how smooth your car runs — but ignoring how long it takes to stop.

— paraphrased from an SRE lead’s retrospective notes, 2023

Why leaders misread the metrics

Worth flagging—friction scoring tools are built by vendors who sell to directors, not to the person rotating through the on-call shift. The dashboards surface what is easy to measure: deploy frequency, change failure rate, pull request cycle time. Recovery time sits in a different system, often a manual entry in a ticketing tool, if it’s tracked at all. That disconnect creates a blind spot that wastes real engineering hours. I have seen teams celebrate a friction score drop of 15 points while their P1 incidents still take over an hour to resolve. The celebration felt hollow. What usually breaks first is the assumption that reducing one metric drags the other down. It doesn’t—not without explicit work on recovery playbooks, chaos engineering drills, and documentation that actually matches the current architecture. The fix isn’t sexy. It’s writing down the step where you check the secondary DNS record. It’s running a tabletop exercise once a month. It’s admitting that a low friction score doesn't equal resilience.

That sounds fine until the next incident hits. Then you see the gap clearly: your deploys are fast but your recovery is glacial. The question becomes—do you keep polishing the friction number, or do you start looking at the flat line that nobody wants to talk about? The answer matters more than most teams realize.

What Friction Score Actually Measures (and What It Doesn't)

Definition of mitigation friction score

Mitigation friction scoring was built to answer one question: how much drag does your system create when a user tries to undo a mistake? I have seen teams treat it like a dashboard speedometer—higher number bad, lower number good. But it's not a speedometer. It's a tape measure for process steps. Every click, every page reload, every CAPTCHA that stands between the user and a correction gets counted. The score compresses those obstacles into a single digestible number. That sounds useful until you realize it doesn't measure what happens next.

The tricky bit is that a low friction score can coexist with a recovery that still feels like wading through wet concrete. Wrong order. You removed the pop-ups. You shortened the form. The score obeys. Yet the user sits there, staring at a blank confirmation screen, waiting. The friction score doesn't capture waiting. It captures interface density—how many gates the user must pass through. Not how long those gates take to swing open.

Recovery time as a separate dimension

Recovery time is an outcome metric. Pure. Unforgiving. It tracks the wall-clock span from the moment a user decides to reverse an action until they land in a clean state—no dangling side effects, no half-applied refunds, no broken cart. I have watched a team celebrate their friction score dropping from 84 to 41 while their median recovery time actually climbed by twelve seconds. The seam blew out because their database rollback logic was synchronous and single-threaded. The UI was fast. The backend was not.

Most teams skip this distinction until a production incident forces them to stare at the two lines on a monitor and realize they diverge. A friction score of 22 sounds pristine. But if every recovery requires a full page rebuild that stalls for three seconds, the user doesn't care about your score. They care about the spinner. The spinner is their reality. Your metric is a fiction.

Honestly — most risk posts skip this.

“A friction score tells you how many doors the user walks through. It doesn't tell you how long each door takes to close behind them.”

— observation from a payment ops manager who stopped trusting dashboards

The misconception that they move together

The default assumption—and it's nearly always wrong—is that reducing friction automatically compresses recovery time. That's like believing shortening the queue at the post office will make each clerk process letters faster. The queue is process. The clerk speed is system throughput. They're coupled loosely at best. What usually breaks first is the mismatch: you optimize the front end (fewer fields, smarter autocomplete, one-click undo) but the underlying reconciliation engine still runs batch jobs every thirty minutes.

The catch is that users don't care about architectural boundaries. They feel the gap as confusion. I have seen a SaaS platform shrink their cancellation-undo friction from five steps to two, yet recovery time for subscription reinstatement stayed flat at ninety seconds because a cron job was gating the license refresh. The team had not measured recovery time at all during the redesign. They assumed. That hurts. Not because the redesign was bad—it was genuinely better—but because the improvement only lived on one half of the user's journey. The other half was invisible until someone complained on social media.

Where do you look first when these two metrics refuse to align? Not at the UI. Look at the dependency chain. Recovery time is a hostage of serial operations, queue depths, and third-party API timeouts. Friction score never sees those. One rhetorical question worth asking: if your friction score dropped and your recovery time didn't move, did you actually fix the right thing?

Under the Hood: Why Recovery Stays Stubborn

The Waiting-Line That Friction Scoring Ignores

Your team ships code faster—friction score drops by a clean 22%. You celebrate. Then you check recovery time: flatlined for six weeks. What gives? I have seen this pattern in half a dozen orgs now. The scoring tool tracks how fast you start work: commit-to-review velocity, merge latency, ticket cycle time. It never watches how long you wait for someone else to finish a dependency. That gap is the whole problem.

Most engineering teams run on hidden queues. Your pull request sits reviewed in fifteen minutes—great. But that database migration your feature needs? Blocked for three days because the platform team is firefighting a production incident. Friction score sees your PR as low-friction. Recovery time sees the calendar blank. The scoring system literally can't see that external team's backlog. It measures your motion, not your stall. That hurts.

Worth flagging—I once worked with a team that dropped their friction score from 68 to 41 in a quarter. Their DORA recovery time stayed at four days. Why? Their scoring tool measured individual ticket flow, but the critical path ran through a security review queue that had a seven-day SLA. The seam blows out when you optimize local metrics while ignoring systemic handoffs. The scoring tool is blind to the waiting line.

Human Factors: The Mental Stack That Slows Everything

Cognitive load doesn't show up in commit graphs. After three context switches in a morning—incident response, a stakeholder interrupt, a broken CI pipeline—an engineer opens the codebase to fix a bug. Their brain is fried. The fix takes forty minutes instead of twelve. Friction score says "low friction" because the code change is small. Recovery time says "three hours" because the person needed to re-read the entire module twice. We fixed this by adding a "focus block" schedule, but the scoring tool never thanked us.

Decision paralysis is another invisible tax. Your friction score drops because the team streamlined pull request templates and linting. But the architect is out sick, and every database schema change now requires a Slack thread with three people who disagree. Recovery time stretches as engineers stall—not because they can't code, but because they can't decide. The scoring tool sees zero friction in the git flow. The human system sees a traffic jam.

Fatigue compounds. A team that ships ten features in a sprint looks golden on the friction dashboard. But those same engineers are exhausted—the ninth and tenth features introduced subtle bugs that take a full day each to recover from. Friction scoring treats every commit equally. Recovery time knows the difference between a fresh brain and a depleted one. That gap is where your predictability breaks.

Toolchain Bottlenecks: The Black Box Nobody Audits

Most teams have a CI/CD pipeline that feels like a black box. Friction score says "build time dropped to four minutes." Great. But tests are flaky—rerunning three times eats an hour. The scoring tool counts the green build as one cycle. Recovery time counts the three failed attempts plus the real fix. I have seen a team where friction score showed a 40% improvement while recovery time worsened by 15%. The culprit: a brittle end-to-end test suite that passed half the time but required manual investigation on every failure.

Toolchain delays often hide behind "automation." Automated deployment pipelines queue deployments behind each other. One team I advised had a "zero-touch" deploy system that took twelve minutes on paper—but only one deployment could run at a time. Three simultaneous hotfixes meant a thirty-six-minute wait for the last one to ship. Friction score: low. Recovery time: high. The scoring tool measured the deploy step in isolation, not the contention for that step. You're optimizing the wrong number.

Honestly — most risk posts skip this.

The fix starts with mapping your actual wait times—not the ones your tools report. Go find the external dependencies, the meeting-driven decisions, the flaky tests, the single-threaded deploy queue. Friction scoring gives you a flashlight. Recovery time gives you the actual shadow. Stop polishing the flashlight and start moving the objects that cast the shadow.

A Real Walkthrough: The E-Commerce Platform Case

Initial friction score 8.2, recovery 18 hours

The platform processed 14,000 orders a day—until a payment gateway cert expired. Tickets flooded in. The on-call engineer ran the runbook, found the root cause in eleven minutes, then waited. Waited for the security team to approve the new cert. Waited for the change advisory board to slot the fix into the next window. Eighteen hours elapsed from first alert to order flow restored. Friction scoring gave that incident an 8.2—brutal, but fair. The scoring model saw a manual handoff between three teams, no automated rollback, and a diagnosis step that required SSH access to a box nobody had documented. It flagged everything correctly. The team celebrated the low-hanging fruit.

Changes made: streamlined runbook, faster approvals

They automated the cert check. They pre-approved certificate rotations with a standing change record. They rewrote the runbook as a single-page play with copy-paste commands. The friction score on the next cert incident dropped to 4.1—a 50% improvement. Management bought pizza. I have seen this exact pattern at three companies now, and the pizza is always premature. Because what happened to recovery time? Seventeen and a half hours. Flat. Nearly identical. The friction score had fallen off a cliff, but the recovery metric barely blinked. Why?

The tricky bit is that friction scoring measures *diagnostic* roughness—how many clicks, how many context switches, how many tribal-knowledge lookups. It doesn't measure *resolution* latency. The approval automation shaved two hours off the initial triage. Great. But the bottleneck had shifted: the new cert still had to propagate through a CDN that updates every four hours. The deployment pipeline required a manual Go button from a release manager who only worked Pacific hours. Friction scoring whistled past that graveyard. Worth flagging—the scoring tool actually rewarded the runbook improvements by lowering the score further. The team thought they were winning.

'We cut the friction in half. The outage still takes a whole shift. That's not progress—that's a different failure wearing a better mask.'

— SRE lead, after the third identical postmortem

Result: friction dropped to 4.1, recovery still 17.5 hours

The gap between 8.2 and 4.1 represents real work—better documentation, fewer handoffs, cleaner alerts. That work matters. But the recovery time stayed stubborn because the *critical path* never changed. The scoring model weighted the number of tools used during diagnosis (dropped from four to two) but ignored the CDN propagation delay. It penalized unclear runbook steps (fixed) but ignored that the deployment required human approval at 2 AM. That hurts. Most teams skip this: they optimize what the score measures, not what the outage actually consumes. The real fix here involved measuring wall-clock minutes per phase, then cross-referencing those minutes against the friction sub-scores. Two phases—'approval wait' and 'deployment propagation'—accounted for 14 of the 17.5 hours. Neither appeared in the friction model. The team had to add custom telemetry to see the blind spot. Four years later, I still recommend that exact exercise to any team chasing a single-digit friction score: plot the time breakdown, then ask which of those bars the score actually captures. The answer is usually humbling. Not always—but enough to make the chart a standard postmortem artifact instead of a nice-to-have.

So what do you do when the score looks healthy but the clock doesn't? You stop celebrating the friction number. You segment recovery time into phases and map each phase to the friction sub-score for that step. The seam blows out when the scoring model treats all steps as equal contributors. A 4.1 average can hide a single phase that takes twelve hours. That phase is where you put your next improvement—even if it does nothing to move the aggregate friction score. The team that accepts this trade-off starts recovering faster. The team that chases the score lower keeps buying pizza for the same outages.

Edge Cases That Break the Link

Small teams vs. large teams

A five-person squad and a fifty-person engineering org look at the same friction score—and see completely different worlds. I have watched a startup celebrate a drop from 38 to 22 over two sprints, only to realize their single on-call engineer was still waking up three times a night. The score improved because they automated a deployment step. Recovery time? Flatlined. On a small team, every process change lands on the same two or three shoulders. The friction score registers the automation win. The human bottleneck—that one person who knows the legacy checkout service—doesn't budge. Large teams have the opposite problem: friction might stay stubbornly high because coordination overhead is real, but recovery can be surprisingly fast when you have a dozen people who can triage simultaneously. That sounds like a blessing until you realize the noise-to-signal ratio in their incident channel makes it hard to find the actual fix. The score masks both realities.

On-call rotation changes

Here is a trap I see repeatedly: a team shortens their rotation from weekly to daily, hoping to distribute cognitive load, and their friction score drops nicely. Less context-switching per person, right? Wrong order. The daily handoff creates a new failure mode—each shift starts cold. One engineer picks up a PagerDuty alert at 3 AM, sees a ticket from the previous shift with the note "might be related to the indexing job," and spends forty-five minutes rediscovering what the last person already knew. Recovery time actually creeps up. The friction score, which measures tooling friction and pipeline delays, never captures this. The catch is that on-call cadence changes are invisible to most scoring models unless you explicitly feed them incident handoff metrics. Most teams skip this. Worth flagging—I have seen organizations double down on rotation optimization while their MTTR (mean time to recovery) drifts upward by 22%. The decoupling is not a bug; it's a measurement blind spot.

What usually breaks first is the undocumented knowledge. A new hire joins a rotation, sees a friction score of 15—excellent by industry standards—and assumes the system is smooth. Two weeks later they burn four hours on a database failover that two senior engineers could have handled in twenty minutes. The score never blinks. It doesn't know who is carrying the pager.

Cultural resistance to new processes

You deploy a new incident response playbook. The friction score drops by eight points because you eliminated a manual approval gate. Good news. The reality on the ground: three senior engineers ignore the playbook entirely. They have been doing this job for seven years, they know the system better than any flowchart, and they skip the "new process" because it adds steps that feel redundant to them. Their recovery time stays flat—or worsens, because they're now fighting the tooling that enforces a process they bypass. The friction score records a win. The actual recovery metrics tell a different story. This is where organizational culture becomes the invisible antagonist. I have seen teams adopt blameless postmortems (friction drops), yet the same engineers who run the postmortems still hesitate to escalate early because "that's not how we do things here." The score can't read your Slack history or your retro room temperature.

"We lowered our deployment friction by 40%. Our pager fatigue went up. Nobody connected those two dots until six months later."

— Engineering manager, mid-stage SaaS company (paraphrased from a hallway conversation)

Field note: risk plans crack at handoff.

That hurts because the cultural layer is the hardest to instrument. You can measure cycle time, deployment frequency, failure rate. You can't easily measure how many engineers actually trust the new runbook or whether the on-call handoff includes a genuine knowledge transfer or a rushed "check the dashboard." The three scenarios above—small teams, rotation changes, cultural inertia—are not outliers. They're the norm. The fix is not to stop using friction scores. The fix is to overlay a simple human audit: pick one incident per week, map the friction score against the actual recovery narrative, and ask what the number missed.

Where Friction Scoring Falls Short

It's a Lagging Indicator

You see the friction score drop on Tuesday morning. Green checkmark. Improvement. But the actual fix—the code change, the database index, the CDN config—went live three weeks ago. By the time the score reflects reality, your team has already shipped two more deploys. That gap matters. I have watched engineering leads celebrate a 12-point drop, only to discover the recovery time metric never moved because the old bottleneck just shifted elsewhere. The friction score reports yesterday's weather. It tells you a storm passed, not where the next one is forming. Most teams skip this: they treat the number as a real-time dashboard when it's fundamentally a post-mortem chart. Actionable? Sometimes. But only if you accept that by the time it speaks, the context has already changed.

Ignores External Dependencies

Your app's internal latency looks pristine. The friction score says 0.94—near perfect. Meanwhile, a third-party payment gateway in Europe is throwing 503s because a regional DNS provider collapsed. Your score stays flat. Recovery time balloons. The metric can't see what it can't measure, and it can't measure what sits outside your process boundaries. That sounds fine until you blame the wrong team. I once saw a squad waste two sprints optimizing their auth service—rewriting Redis queries, trimming middleware—while the real drag was a Stripe integration that simply needed a circuit breaker pattern. The friction score never flagged it. Worth flagging: the same blind spot applies to CDN edge nodes, ISP routing quirks, and cloud region failover. The metric assumes the system is a closed loop. It's not.

The catch is practical. When your score improves but recovery stays flat, the most common explanation is an external dependency you're not scoring. Your first instinct should be to check the seam between your code and someone else's infrastructure. Not the database. Not the frontend bundle. The boundary. That's where friction hides from scoring.

‘A friction score that ignores your vendor's latency is a report card graded in a different classroom.’

— paraphrased from a post-incident review at a mid-market logistics platform

Can Incentivize Narrow Optimization

Here is the danger. A team gets told: "Your friction score must stay below 1.2." What breaks first? The human judgment. Engineers optimize for the number, not the outcome. They trim logging payloads, reduce retry counts, flatten error sampling—all moves that lower the friction score without reducing actual user pain. Recovery time stays flat because the real bottleneck—a synchronous call chain that should be async—remains untouched. I have seen this pattern repeat: a team hits the target, ships the change, and the score drops. But the P95 recovery time doesn't budge. Why? They gamed the metric. They made the system look faster on paper while leaving the slowest path fully intact. The incentive structure rewarded the wrong lever.

The fix is not to abandon friction scoring. The fix is to pair it with a recovery-time budget that can't be faked. If the score says green but the tail latency is red, trust the tail latency. Every time.

Where friction scoring falls short, it falls short honestly—it measures what you asked it to measure, not what you actually need. The gap between a dropping score and a flat recovery time is the gap between optimization for metrics and optimization for people. Close that gap not by chasing a lower number, but by asking what number mattered in the first place. Wrong order. Start with the recovery time, then use friction scoring to find the seams. Not the other way around.

Reader FAQ: Friction vs. Recovery

Should I stop tracking friction score?

Short answer: no. Longer answer: only if you're using it as a performance bonus metric rather than a diagnostic lever. I've seen teams kill their own velocity by chasing a friction score below 2.0 while ignoring that their recovery time actually increased by 40%. That's the trap. The friction score tells you where the system seizes up—not how fast it unsticks. Drop it from your dashboard if your recovery time hasn't budged in two sprints. But keep it in your retrospective notes. You need both numbers, just not as a binary pass/fail.

What's a good recovery time target?

Depends on your user's tolerance, not your engineering velocity. For a checkout flow on an e-commerce platform? Sub-ten minutes. For a backend batch job that runs at 3 AM? Two hours is fine. The catch is that most teams pick a single threshold—say, thirty minutes—and miss the nuance. We fixed this by segmenting recovery targets by error type: authentication failures got a 5-minute ceiling, database timeouts got 15, and third-party API flakiness got a generous 45. Flat recovery often means you're applying one bandaid to three different wounds. That hurts. Worth flagging—if your recovery time stays flat while friction drops, you've probably optimized the wrong thing: the alert fires faster, but nobody knows which runbook to grab.

'A friction score of 1.5 with a recovery time of 45 minutes is a false sense of speed.'

— paraphrased from a platform engineering lead, after their Black Friday postmortem

Quick fix for flat recovery?

Stop adding more monitors. What usually breaks first is the human handoff: the alert goes to a Slack channel, nobody claims it for six minutes, then the on-call person has to dig through three dashboards to find the root cause. We saw this at a logistics startup—their friction score dropped from 3.8 to 1.9 after they added caching, but recovery flatlined at 22 minutes. The fix? Not more code. They added a single pinned Slack message with a one-click link to the relevant runbook and a pre-filled incident timer. Recovery dropped to 11 minutes in two weeks. Try that before you rewrite your entire error-handling middleware. Another pitfall: teams over-rotate on automated rollbacks. Those help, sure, but if your rollback script takes fourteen minutes to compile and deploy, you've just automated the flat recovery. Test the rollback path separately from the friction score—you might find the seam blows out during the deploy, not the initial failure.

Share this article:

Comments (0)

No comments yet. Be the first to comment!