CHAPTER DEEP READ · ACCELERATE · CH 2

Measuring Performance

Accelerate: The Science of Lean Software and DevOps · Ch 2 · Forsgren, Humble & Kim · 2018

中文 →

What is this chapter about?

You could judge a restaurant kitchen by counting how many plates it washes in a day — but that tells you almost nothing about whether the diners enjoyed their meal. That is exactly the problem Chapter 2 of Accelerate takes on: when you score a software team, what should you actually count? Chapter 1 claimed that a team's delivery ability can be measured. This chapter makes good on that claim: what to measure, how, and why those particular numbers.

Start with something strange

The three yardsticks companies reach for most often — how many lines of code got written, how much work got finished this month, how fully booked everyone is — each make the team worse the more seriously you use them. Count lines, and the code bloats. Count work finished, and the estimates inflate. Book everyone solid, and delivery slows down.

Why the old world was hard

The problem isn't that nobody has found the right yardstick yet. It's that all three share one flaw: they measure how busy you are, not whether anything reached a user.

The most counterintuitive one is "how fully booked everyone is." Booking people solid sounds like plain common sense — idle time is waste, isn't it? But it works like a motorway. When traffic is light, a car arrives and drives straight through. Once the traffic fills the road, one light tap on the brakes up front backs everything up behind. Same with people: fill a calendar to the last minute and anything unplanned has nowhere to go but a queue — and time spent queuing usually dwarfs time spent actually working.

There is a subtler flaw too: each of these yardsticks measures one box. The people writing code are scored on "how many features shipped"; the people keeping the site up are scored on "did anything break." Their optimal moves point in opposite directions. So both sets of numbers look fine, and the user is still waiting.

The idea: count four outcomes instead

The chapter lays down two rules for picking a yardstick, and the rules are worth more than the four numbers they produce:

First, measure the outcome of the whole chain, never one box — otherwise teams are guaranteed to work against each other. Second, measure whether the thing arrived and whether it works, not how busy people were or how much they wrote. Run those two filters and you get four numbers you could explain over dinner: how often you ship, how long it takes from finished code to a user having it, what share of what you ship breaks the site, and how long it takes to recover when it does. The first two say "fast"; the last two say "steady."

Why these four in particular

The trick is that the four numbers pull against each other. To make "ships often" look good you have to automate enough to keep each change small — otherwise "share that breaks the site" turns ugly immediately. Go the other way and the cheapest route to "nothing breaks" is to stop shipping — at which point "how often you ship" hits the floor. Neither side can be made to look good by sacrificing the other. That is the anti-gaming design.

There is a mindset shift buried in there too: asking "how fast do we recover" concedes that failure is unavoidable. The question stops being "how do we never break" and becomes "when we break, how fast are we back."

The honest cost, in one sentence: these four numbers are a health check-up, not a KPI — the moment they're used for rankings or bonuses, people will game them, and gaming them is far easier than improving them.

Remember this one thing

Stop counting how much got done; count whether it arrived and whether it held. Four numbers — how often you ship, how long from finished code to a user having it, what share breaks, how fast you recover — the first two cover fast, the last two cover steady, and read together nobody can win one side by wrecking the other.

Want the operational definitions, the actual magnitudes and the anti-gaming design? → Switch to the deep read