How to Measure Developer Productivity (the Honest Way)
HOW TO MEASURE DEVELOPER
No single number measures developer productivity honestly. What to measure instead - system flow, quality, sustainability, perception - and what to refuse.
TL;DR: You typed this question because a board member asked what they're getting for the payroll, or because you suspect the team could ship faster and can't prove it either way. Developer productivity is measurable. It is not measurable as a number per developer. SPACE, DORA and DevEx all land on the same shape: measure the system on a handful of dimensions, treat individual data as context rather than comparison, and never ship a per-person number the person can't open. Below is the working setup, plus the two rules that keep it from blowing up in your face.
Name the actual question first. "How to measure developer productivity" is usually a polite envelope around one of two sharper ones. Am I getting what I pay for? is a fair question about your largest budget line. Who on this team is underperforming? is a different animal. The setup that answers the first is well established. The setup people build to answer the second destroys the data needed to answer either one. Same tools, opposite outcomes. Know which question you're holding before you instrument anything.
What the research actually agrees on
The strange thing about this space is how much consensus hides under the controversy. The SPACE framework, from Forsgren, Storey and colleagues, opens by demolishing myths. First among them: that productivity reduces to a single dimension. It spans satisfaction, performance, activity, communication and efficiency, and any one of those read alone will mislead you. The DevEx follow-up puts the levers in three developer-experience dimensions: feedback loops, cognitive load, flow state. DORA's decade of evidence ties delivery performance to organizational outcomes using team-level delivery metrics, explained plainly here. (Choosing between the frameworks is its own article. The short version: they nest, they don't compete.)
The controversy is about one move: pushing measurement down to the individual. McKinsey's framework said do it. Kent Beck and Gergely Orosz's response took it apart on a distinction worth keeping. Effort, output, outcome and impact are four different things. The end you can measure per person - activity and output - is the least meaningful. The end that matters, outcomes and impact, is produced jointly by a system. Measure people on the measurable end and you teach your best engineers to optimize theater.
This isn't hypothetical. Lines of code already ran the experiment for the industry, and stack ranking ran the human half. Both ended the same way.
The honest setup, then:
- Flow, at system grain. Cycle time, split into its stages, because the total hides where the weeks die. Add queue signals like review pickup. This is where "could we ship faster" becomes checkable: nearly every slow team is slow in the waits, not the work.
- Quality, as work that comes back. Rework rate counts shipped code that needed re-shipping. Add defects escaping to production. Output that doesn't survive isn't output, and this is the dimension that keeps flow metrics honest.
- Sustainability. After-hours and weekend load, at team grain. A quarter of great flow numbers bought with midnight commits is a loan against next quarter. It's also the leading edge of every team-health slide you'll wish you'd caught earlier.
- Perception, asked safely. The DevEx research is blunt that the friction developers report is a productivity signal the repo cannot show you. A short anonymous survey with questions people will actually answer honestly closes the loop. When the merge-wait data and the developers point at the same bottleneck, you've found something real.
Two rules keep the whole setup alive. A per-person number opens, or it doesn't ship. A single sortable score per engineer will be read as a ranking - that part was never in doubt - so the question is whether the engineer in row 40 can click it and see the pull requests behind each component, the sample it rests on, and the share of their work nobody managed to attribute to them. One they can't open is unarguable, and unarguable numbers go adversarial within a quarter. No activity worship. Commits, PRs and lines are context for a conversation, not performance measures.
If what you actually need is to understand one person's situation, that's a different job. The struggling or allegedly slacking cases, and the question of whether individual measurement is ever warranted, are receipts-plus-conversation work. Not a dashboard column.


How you'd actually see this in Busfactor
This four-dimension setup is, not coincidentally, what Busfactor ships as its default posture. Judged stats cover flow and quality at org, team and area grain, every metric graded against expert bands for your org's size. You get a verdict ("your pickup time is the outlier, these PRs are the receipts") instead of sixty charts and homework. Sustainability comes from work-rhythm signals judged at team grain. Perception comes from anonymous DevEx surveys whose anonymity is structural: the response table has no identity column to join on, so engineers can tell you the truth without having to trust a promise.
Per-person surfaces show what shipped, with receipts: the work log answers standup, scorecards are retention-framed profiles, and Standing - the one ordered view - opens the evidence behind every position and honours exemptions.
The honest limits: git and tracker data can't see pairing, mentoring, unblocking, or the glue work that holds a team together. A measurement system that forgets that will undervalue exactly the people holding everything up, which is why perception data and human judgment stay in the loop. And no tool measures impact - whether the shipped thing moved the business. That number lives in your product analytics. The engineering side's job is making sure the path to shipping isn't where the value dies.
The door
Start smaller than you think. Pick one metric per dimension: cycle time split by stage, rework rate, after-hours share, one survey question. Read them together for a month. That is already a more honest measurement system than most productivity dashboards, because no single number can be gamed to satisfy it.
If you'd rather have the whole setup running on your real data by Friday, judged against expert bands with receipts attached, get your org's honest read. The first verdict usually answers the board's question. It's rarely the answer anyone guessed.


Frequently asked
What is the best metric for developer productivity?
There isn't one, and every serious research effort says so explicitly - the SPACE framework's first stated myth is that productivity can be reduced to a single dimension. What works is a small set of system-level signals read together: flow (cycle time and where it goes), quality (rework and defects returning), sustainability (after-hours load), and perception (what developers say slows them down). One number invites gaming; a balanced set invites diagnosis.
Should I measure the productivity of individual developers?
Yes, carefully, and the care is specific. Per-person data answers questions a manager actually owns - is someone overloaded, blocked, or carrying an invisible load - and a composite that combines those signals is legitimate on one condition: it opens. Every component links the work behind it, a thin sample is labelled thin, the share of work you failed to attribute is stated, and anyone who should not appear in an ordering is out of it. A composite that does none of that is a verdict with a decimal point in it - unarguable by the person it describes, and gamed within a quarter. Judge the receipts, not the existence of the number.
How do I measure developer productivity with AI coding tools in the mix?
The same way, with one addition: track whether AI-assisted work survives contact with production. Volume metrics inflate first when assistants arrive - more commits, more lines - so quality signals like rework rate and review coverage matter more, not less. Compare AI-assisted and human-baseline cohorts on rework and review outcomes rather than celebrating raw output.
What did the McKinsey developer productivity framework get wrong?
McKinsey's framework argued you can and should measure developer productivity, including individual-level metrics. The response from Kent Beck and Gergely Orosz - two decades of practitioner weight - argued that measuring effort and output at the individual level is wrong-headed and certain to backfire: the measurable parts (activity) are the least meaningful, the meaningful parts (outcomes, impact) are joint products of a system, and individual measurement pushes engineers to optimize the measurable at the expense of the meaningful.
Receipts
- Forsgren et al. - The SPACE of Developer Productivity (ACM Queue, 2021)
- McKinsey - Yes, you can measure software developer productivity (2023)
- Beck & Orosz - Measuring developer productivity? A response to McKinsey (2023)
- Noda, Storey, Forsgren & Greiler - DevEx: What Actually Drives Productivity (ACM Queue, 2023)
- DORA - Accelerate State of DevOps Report 2024