What "productivity" actually means now
Most developers reach for this question at a specific moment: a manager asks for numbers, a client asks what they are paying for, or you open your own year and cannot tell whether the last three months were productive or just busy. Before any metric helps, it is worth being precise about what you are trying to measure, because the AI era quietly changed the answer.
Quick Answer
To measure developer productivity in 2026, measure outcomes instead of activity, and track a small set of signals that are expensive to fake: what shipped, whether it broke, how much of it got rewritten, and how much output you got per unit of real effort (leverage). Do not measure lines of code, commit counts, hours logged, or story points, because AI agents can inflate every one of those in seconds while telling you nothing about whether real work happened. The single most useful number for an individual is leverage, and it requires knowing time spent, which commit history alone cannot give you. Below: why the old playbook broke, a method that works for both individuals and small teams, and how to track it without turning your week into surveillance theatre.
Productivity is output relative to effort. That definition sounds obvious, and it survived unchanged for decades because effort and output used to move together. More hours meant more code, more code meant more features, and you could measure any link in that chain and get roughly the right picture. In practice, you measured the easy thing (activity) and trusted it to stand in for the hard thing (value delivered).
Agents severed that chain. Claude Code or Cursor can turn a one-line prompt into a two-thousand-line scaffold, and a one-line fix can follow two hours of reading that leaves no trace in the repo. Activity and value no longer track each other, so any metric that measures activity now measures the wrong variable with confidence. The things that are easy to count stopped meaning what they used to mean, which is the whole problem in one sentence.
The test that separates real metrics from theatre
If you have ever felt vaguely judged by a contribution graph, this is the section that gives you a better filter than vibes. Run every proposed productivity metric through one question: what would it cost to fake this number without doing real work?
If the answer is "nothing" or "one prompt," the metric is a claim, and claims are worthless as measurement. If the answer is "only by actually shipping the thing," the metric is closer to proof. Commit counts fail instantly, because an agent can commit hourly. Change failure rate passes, because the only way to fake "my changes do not break production" is to ship changes that do not break production. What separates a productivity metric from a productivity theatre prop is that the cost of faking it should equal the cost of doing the work.
That test is also the quiet reframe underneath this whole topic. The industry keeps trying to measure developers with signals that are easy to generate and easy to game, then acting surprised when the signals get gamed. The way out is to measure the work in a way you could defend to a skeptic, not to build a better dashboard of the same activity.
A method for measuring developer productivity
You do not need eleven metrics. You need a small, layered stack that reads outcomes first and effort second. Here is the method I use and recommend, ordered from cheapest to set up to most valuable, so you can stop at whatever level matches the stakes.
- Start with delivery, not activity. The first question is not "how much did I do" but "how much reached users." Read first-commit-to-shipped time and scope of change (features, endpoints, modules that actually landed) straight from the repo. This takes ten minutes a month with
git log --stator any git analytics tool, and it already beats a contribution graph. - Add a quality signal. Throughput without quality rewards whoever shipped the most bugs fastest. Track change failure rate (your hotfix-to-feature ratio is the solo version) and rework or churn (how much recent code got rewritten within a few weeks). A rising churn ratio is the clearest fingerprint of AI-generated code that looked fine and was not.
- Add the denominator: real effort. Output is only half of productivity. To measure leverage (output per unit of effort) you need time spent, and this is the step where most measurement quietly cheats by inferring hours from commit gaps. In an agent-heavy workflow those gaps drift most for the people using AI most, so infer nothing. Capture real effort with lightweight telemetry instead.
- Compute leverage and watch the trend, not the absolute. Leverage is what shipped relative to the time it took. The absolute number means little; the trend means everything. If you adopted an agent and your leverage is not visibly rising, the tooling is not paying for itself, and that is one of the few developer-productivity questions worth answering with a number.
- Publish a small set and hold it. Three signals you check monthly beat eleven you check never. A delivery signal, a quality signal, and a leverage signal is a complete picture for most individuals and small teams.
The reason this method holds up is that every layer reads something expensive to fake. Delivery is timestamped in the repo. Quality shows up as consequences. Leverage requires real activity data that no one can prompt into existence. You will notice none of these is "how many hours did you work," and that is deliberate.
What to measure, and what to retire
Most teams inherit their metrics from a pre-AI world and never re-examine them. This table is the short version of what survived and what did not, scored by the fake-it test above. The notes after it give the nuance.
| Signal | What it tells you | Can it be faked cheaply? | Keep or retire |
|---|---|---|---|
| Scope shipped per window | What reached users | No; visible in the diff and timestamps | Keep |
| Change failure rate | How often changes break things | No; only by shipping better | Keep |
| Rework / churn ratio | How much new code gets rewritten | Hard; rewrites are in the history | Keep |
| Leverage (output per effort) | Value relative to real time spent | No; needs real activity data | Keep |
| First commit to shipped | Momentum and delivery speed | Hard; timestamps do not lie | Keep |
| Lines of code / diff size | How much text was produced | Trivially; one agent prompt | Retire |
| Commit counts and streaks | How work was batched | Trivially; configurable | Retire |
| Hours logged or inferred | Time claimed, not time worked | Easily; self-report or bad inference | Retire (unless measured) |
| Story-point velocity | Estimation and negotiation | Easily; self-referential | Retire for comparison |
The keepers share a property: they measure what happened to the work, not how much typing occurred. Scope, failures, rework, and delivery time are all consequences, and consequences are expensive to fake regardless of who or what wrote the characters. In practice this is why a small diff often represents more productivity than a huge one now, which inverts the entire lines-of-code instinct.
The retirees share the opposite property. They were proxies for effort back when effort and output moved together, and the breakdown of why commit graphs mislead covers how badly that assumption aged. Story points deserve a special mention: cross-team velocity comparisons were astrology before AI, and now they also measure how aggressively a team lets agents inflate ticket throughput. The full ranked treatment lives in code metrics that matter.
Measuring individuals versus measuring teams
This is usually the point where a productivity conversation goes wrong, so it is worth separating cleanly. Individual productivity and team productivity are different questions, and a metric that is useful for one is often destructive for the other.
For a team, the defensible frame is delivery outcomes: DORA-style signals (deployment frequency, lead time, change failure rate, time to restore) tell you whether the system is shipping healthily, and they do not tempt anyone to game an individual number. Tools like Waydev built a business on manager-level DORA reporting, and if its enterprise pricing does not fit a small team, there are lighter Waydev alternatives that cover the same signals. The rule that matters is to measure the system, not the people inside it.
For an individual, the useful frame is your own leverage and your own trend over time, used as a mirror rather than a leaderboard. Almost always, the moment an individual metric becomes a target used to rank humans, it gets gamed, and the gaming is now agent-assisted and invisible. Measure yourself to interrogate your own workflow. The instant a number is used to compare two developers, assume it is already being played.
Where DevClocked fits
If you manage a platform team and need DORA reporting across dozens of engineers, an engineering-intelligence suite like Waydev or a hand-rolled dashboard on your CI data is the right call, and a hobbyist who just wants a rough churn read can get most of it from free git scripts in an afternoon. DevClocked is built for a narrower job, the individual developer or small team who wants to measure their own productivity honestly and be able to prove it. It leads with leverage and output (what you and your AI agents shipped), and produces that by combining a git baseline with lightweight editor and CLI telemetry, then learning the relationship between the two so the time is calibrated rather than guessed. That gives you the metrics this page argues for: real effort, leverage, AI-versus-human attribution across Claude Code, Cursor, and Codex sessions, and a shipped record that is audited to source. Full disclosure: I build DevClocked. The honest version of the pitch is that a productivity number is only worth having if you can defend it, and defending it requires evidence gathered while the work happened, not reconstructed from commit gaps afterwards. If your goal is diff-quality research specifically, the DevClocked vs GitClear comparison is the fairer read on where each tool stops.
Common mistakes when measuring developer productivity
Measuring effort you inferred instead of effort you observed. If a dashboard reports "34 productive hours" and cannot show you the events behind it, it estimated. Estimates from commit gaps drift most for AI-heavy developers, which is exactly backwards from what you want.
Adopting a wall of metrics at once. In practice, every productivity initiative that opens with eleven dashboards ends with nobody looking at any of them. Start with one delivery signal and one quality signal.
Comparing individuals with a single number. Productivity numbers are useful as a personal mirror and dangerous as a ranking. The moment you compare two developers by one metric, both start optimising the metric instead of the work.
Ignoring the denominator. Output without effort context rewards whoever ran the most agents. Effort without output context rewards whoever looked busiest. The interesting number is always the ratio.