On this page
A developer completing a function faster does not necessarily mean a team delivers useful software sooner. The generated code may wait longer for review, create follow-up repairs, or move work onto a colleague. Measuring AI coding productivity therefore requires a wider boundary than the time between typing a prompt and accepting a suggestion.
A useful evaluation asks whether comparable work reaches an acceptable production state with less total effort and no unacceptable quality loss. You do not need a surveillance programme or a perfect experiment. You need explicit definitions, a credible comparison, and enough honesty to record failures as well as wins.
Define the outcome before collecting activity
Choose a decision question that the evaluation can answer. Perhaps you want to know whether an assistant helps experienced developers maintain internal forms, or whether it reduces time spent writing routine test fixtures. “Does AI make engineering faster?” is too broad for a small pilot.
Define completion at the level that matters: reviewed, tested, and ready to deploy, or deployed and observed for a specified period. Stopping the clock at the first generated draft excludes much of the work required to make that draft useful.
Do not use accepted suggestions or generated lines as primary productivity measures. They describe interaction with a tool, not delivered value. A concise deletion that removes an unnecessary abstraction may be more valuable than hundreds of accepted lines.
Select a primary measure and a few guardrails. For example, measure active engineering time per completed maintenance task while tracking escaped defects, reviewer effort, and accessibility regressions. The SPACE framework paper provides a helpful reminder that developer productivity has multiple dimensions rather than a single activity score.
Build a comparison that respects task differences
Record a baseline using recent, reasonably comparable work or a short prospective period without the new tool. Keep task categories separate. A dependency upgrade, a new interface, and an unfamiliar production incident have different uncertainty and review needs.
Where practical, assign comparable tasks across assisted and unassisted conditions, balancing developer experience and repository familiarity. A crossover design can let participants try both approaches, but order effects matter: completing a similar task once teaches you something useful for the next attempt.
Avoid asking someone to solve exactly the same ticket twice and treating the second attempt as independent. Use task families with similar constraints instead. Record obvious differences such as missing specifications, flaky infrastructure, or a required architecture decision.
Describe the allowed workflow clearly. Does the assistant provide autocomplete only, conversational help, repository search, or autonomous edits? If one person uses a local completion model and another delegates whole tasks to an agent, combining them under one “AI” label obscures what you actually evaluated.
Use the AI coding assistants directory to document candidate capabilities, then hold the chosen configuration reasonably stable during the pilot. Log meaningful changes to models, integrations, and policy. Otherwise a result may reflect a changing toolchain rather than a repeatable process.
Capture effort across the whole delivery path
Separate active effort from elapsed lead time. Active effort includes understanding the task, prompting, inspecting output, writing code, testing, reviewing, and repairing. Elapsed time includes queues, meetings, and waiting for another team. Both matter, but they answer different questions.
Use lightweight task diaries or brief completion forms rather than continuous screen recording. Ask developers to estimate time in broad categories immediately after a session. The estimates will be imperfect; acknowledge that uncertainty instead of presenting minute-level precision as objective truth.
A small record can keep the reporting consistent:
{
"task_family": "form-maintenance",
"assistance": "chat-and-completion",
"implementation_minutes": 45,
"review_minutes": 20,
"repair_minutes": 15,
"completed": true,
"follow_up_defect": false
}Treat this as a starting schema, not a universal scorecard. Add a task identifier and observation window in your actual system, and define how multiple contributors report shared effort without double counting. Include abandoned assisted attempts and time spent reverting unusable output.
Measure review burden explicitly. If implementation saves thirty minutes but a reviewer spends forty additional minutes untangling unnecessary changes, the team has not gained time. Ask reviewers whether generated patches introduce unfamiliar dependencies, oversized diffs, or weak tests.
Keep quality and runtime performance as guardrails
Apply the same acceptance criteria to both conditions. Tests, security review, accessibility checks, and maintainability expectations should not become weaker because an assistant produced the code. A faster task that misses required behaviour is an incomplete task, not a productivity win.
Track rework and escaped defects over a defined follow-up window. A defect found two weeks later may matter more than an initial passing test run. Attribution will sometimes be uncertain; record that uncertainty and avoid claiming every defect in an assisted change was caused by AI.
For API-related work, use the API latency tester to compare safe, non-sensitive test endpoints under consistent conditions before and after a change. Treat its readings as a basic check, not a load test or proof of production performance. Use representative application telemetry when you need distributions under real traffic.
The web.dev performance guidance helps identify frontend concerns that code-generation speed cannot capture. Keep runtime performance separate from developer productivity: a fast coding session can still ship a slower experience.
Include developer experience as another guardrail. Repeatedly correcting confident errors can increase cognitive load even when measured task time falls. Ask whether participants understand the resulting code and feel comfortable maintaining it without reopening the original chat.
Analyse patterns and make a bounded decision
Compare results within task families and experience levels before producing an overall average. Report sample sizes, medians, spread, and notable exceptions. A few unusually large tasks can distort averages, while a tiny pilot cannot establish a universal percentage improvement.
Watch for selection bias. Developers may choose assistance for easy boilerplate and avoid it for ambiguous work, making assisted tasks appear faster for reasons unrelated to the tool. Record task assignment and exclusions so readers can interpret the comparison fairly.
Consult DORA's research for broader delivery measurement context, but do not turn team-level delivery metrics into individual rankings. Productivity evaluation should improve systems, not reward prompt volume or penalise developers who take on difficult work.
Publish a short decision memo stating where the tool helped, where it did not, and what evidence remains weak. The development collection can inform improvements to testing and review that may benefit both conditions. Sometimes a slow review queue is a larger constraint than code entry speed.
Make a bounded rollout decision: continue for specific task types, revise the workflow, or stop. Schedule a reassessment after the team gains experience or the integration changes materially. The useful result is a better operating decision, not a headline claiming that every developer is now a fixed percentage faster.
Key takeaways
- Measure accepted, reviewed outcomes rather than generated activity.
- Compare similar tasks and document the exact assistance allowed.
- Include prompting, review, repair, and abandoned attempts in effort totals.
- Keep defects, maintainability, accessibility, and runtime performance as guardrails.
- Report uncertainty and use findings for bounded team decisions, not individual rankings.
Reach designers & developers at work
Put your product next to the tools people use every day. One sponsor per placement, no tracking pixels.
Become a sponsor