34Measuring the Impact of Early-2025 AI on Experienced Open-Source Developer Productivity
Joel Becker, Nate Rush, Beth Barnes and David Rein, METR, arXiv 2507.09089, 2025
Linked to 30 chapters: supports 20 · contradicts 5 · mechanism 13 · same claim 5 · pairing 4
Sixteen experienced open-source developers handed the scheduling of their own work to a coin. Each supplied a list of real issues on a repository they had contributed to for an average of five years. Each issue was forecast, then randomly assigned to allow or forbid AI assistance, then implemented, submitted as a pull request, reviewed by another maintainer and merged. Before the coin was tossed, the developers expected AI to cut their completion time by 24 per cent. Economists asked to forecast the study's outcome said 39 per cent faster; machine learning researchers said 38. The issues on which AI was allowed took 19 per cent longer than the issues on which it was forbidden. Asked at the end, after months inside the experiment, the same developers estimated that AI had made them 20 per cent faster. Becker, Rush, Barnes and Rein spend the rest of the paper trying to break their own result. They list twenty-one properties of their setting and their procedure that could have produced it and report the evidence for and against each. Five survive as likely contributors, ten are left unresolved, six are ruled out. The distance between what the developers felt and what the clock recorded survives all of it.
What the earlier studies measured
Two bodies of work had already answered the question and answered it the other way. The first ran controlled experiments on synthetic tasks: Peng and colleagues measured a 56 per cent speedup, Weber and colleagues a 65 per cent rise in requirements satisfied, Paradis and colleagues 21 per cent faster. The authors' objection is that the tasks are not the work. Peng's participants wrote a basic HTTP server in JavaScript against test cases shown to them in advance, a task both unrepresentative of most development and likely to resemble a great deal of training data. The second body of work used real repositories and natural or randomised variation, and reported increases of 14 to 51 per cent — but measured lines of code, commits and pull requests. Every one of those can move without any work getting done faster. Code can be more verbose and functionally identical; a unit of work can be split into three pull requests instead of one.
So the paper fixes the outcome. The unit is one issue, defined and forecast before the coin is tossed, and the measure is how long it takes to finish it. Nothing the developer or the model does afterwards can change what counts as done. That single decision is what separates this study from its predecessors, and it costs the authors nearly everything else: no scale, no automation, sixteen people and 246 issues.
The design
Developers came from the authors' professional networks and from outreach to active contributors on large GitHub projects. They are experienced engineers, typically with more than a decade behind them, and they are insiders on the repositories they worked in: five years of contributions on average, 1,500 commits, a span covering 59 per cent of the project's life. They were paid $150 an hour. The repositories are stdlib, jsdom, scikit-learn, GHC, Cabal, Hypothesis, flair, transformers, gpt-neox and others — on average about ten years old, 23,000 stars, 4,900 forks, 710 committers and over 1,100,000 lines of code, with contribution standards to match.
Each developer listed real issues, breaking anything longer than two hours into smaller pieces, and forecast for each how long it would take with AI and without. Those forecasts do double duty: they measure what the developer expects from AI, and they serve as a difficulty control in the regression, valid precisely because they were collected before assignment. A simulated coin flip then sent each issue to one condition or the other, producing 136 AI-allowed and 110 AI-disallowed issues, averaging two hours each. In the allowed condition a developer could use any tool or none; the authors supplied Cursor Pro subscriptions and basic training, and developers mostly used Cursor with Claude 3.5 or 3.7 Sonnet. In the disallowed condition no generative tooling was permitted, though search engines remained. Developers recorded their screens and self-reported implementation time before and after review. The effect is estimated by regressing the logarithm of completion time on the treatment and on the logarithm of the developer's own no-AI forecast.
The forecasts and the result
Raw averages make the shape plain. Across all 246 issues the developers forecast that AI-allowed work would take 0.76 times as long as AI-disallowed work. The issues that were actually allowed AI took 1.34 times as long as those that were not, with a confidence interval from 1.05 to 1.70. The regression pulls the estimate down to 19 per cent, because the coin happened to send slightly harder issues to the AI-allowed arm, and the forecast control corrects for that. Nearly every quantile of the completion-time distribution shows the allowed issues taking longer, and three developers in four were slowed.
The developers were not bad at estimating work. Their forecasts correlate with actual times at 0.64 for AI-allowed issues and 0.59 for AI-disallowed ones: they know which issues are hard. What is inverted is only the sign of the AI term. They are even calibrated in a relative way — on the third of issues where they predicted the largest speedup, they were not slowed down at all, and the slowdown falls steadily as the predicted speedup rises. The error is not noise but a constant offset applied to every estimate, and it did not shrink with experience. Thirty-four economists and fifty-four machine learning researchers, given the design, the repositories and the participants' AI background in advance, missed in the same direction by twice as much.
Where the time went
The authors labelled 128 screen recordings by hand at a resolution of about ten seconds, 143 hours of video covering 29 per cent of all the time developers spent, then filtered out broken recordings, the handful of detected violations and any issue whose recording disagreed with the self-report by more than a fifth. Seventy-four recordings and 84 hours survived, labelled into eight activities and twenty-seven finer categories.
Three activities appear only when AI is allowed and together take about a fifth of the working time: prompting the model, waiting for it to generate, and reviewing what it produced. The time is not drawn from one place. Active coding falls from about 36 to about 24 per cent of the session, reading and searching from about 24 to about 16, testing and debugging from about 17 to about 14. Git and environment work is unchanged. Idle time rises from about 6 per cent to about 10. The developer stops writing and stops reading, and the recovered hours go into operating the model and into nothing at all.
Twenty-one ways to be wrong
The audit is the longest part of the paper and the reason it is worth reading twice. The twenty-one candidate explanations are sorted into four types: mechanisms by which AI directly costs time, artefacts of the experiment, features of the setting that raise the human's performance, and features that lower the model's.
Five factors have evidence behind them. Developers over-estimate AI's usefulness both before and after each issue, which is why they keep using a tool that is costing them time. Their familiarity with the repository works against the model: slowdown is larger on issues where they rate their prior exposure to the task type as high and their need for external documentation as low, and one maintainer of a specialised area put it flatly — "there is no way agent mode can do better than me". The repositories are large and old, and developers describe edits leaking into unrelated parts of big files. Reliability is low: fewer than 44 per cent of Cursor's generations are accepted, three developers in four read every line of what is accepted, more than half often rewrite it substantially, all of them modify it, and 9 per cent of AI-allowed working time goes to reviewing and cleaning output. And the repositories carry knowledge that is nowhere written down — which special case must be preserved for backward compatibility, where a change belongs — that the developer holds and the model cannot be given.
Ten factors remain unresolved, and the authors say so rather than picking a side. Developers who report overusing AI because of the experiment appear more slowed than those who say they used it normally, which the authors decline to read as a clear effect. The issues were real but small: one developer called them "the same set of tasks, but sampled from the small end". Developers wrote 47 per cent more code per forecast hour when AI was allowed, which looks like scope creep until you notice that the developers who report scope creep are slowed less than those who do not. Latency accounts for only 4 per cent of the time. Cursor samples few tokens, so better elicitation might help — but the studies reporting speedup sampled few tokens too.
Six are ruled out. Restricting to developers who used comparable editors in both arms gives a slowdown of 24 per cent, so the unfamiliar editor is not the cause. AI went unused in only 16 per cent of allowed recordings, and there were three violations in fifty-four disallowed ones, one of them apparently accidental. Excluding developers with any dropped issues gives 21 per cent. Using recording length instead of self-reported time gives 25 per cent; deliberately extreme imputations of the missing post-review times give 14 and 23; four alternative estimators all land in the same place. And the models were current: Claude 3.7 Sonnet with and without thinking in 59 per cent of issues, Claude 3.5 Sonnet in 23.
Since 2025
The authors fence their result more carefully than most of its readers did. They state in a table what they have not shown: that AI does not speed up most developers, that it fails in other domains, that future models will not speed up this exact setting, that better prompting or scaffolding or repository-specific tuning could not turn the sign around, that developers with far more tool experience would see no gain. Some of their own participants were sped up. Two of the five factors they do credit — deep familiarity and enormous mature codebases — are absent from most software work, and they say outright that small greenfield projects and unfamiliar codebases are consistent with substantial speedup. They also report preliminary evidence that autonomous agents on Claude 3.7 Sonnet could implement the core of issues in these same repositories while failing the documentation, the linting and the tests.
The one hint that experience reverses the effect did not hold. The published figure showed positive speedup in the bucket above fifty hours of Cursor use, on the strength of a single developer; after publication a second developer reported having had more than a hundred hours of prior experience, and the authors added a footnote to the July revision saying that including him moves that bucket from roughly 25 per cent speedup to roughly zero. They left the figure unchanged and flagged the correction instead.
What is contested is the size and reach of the slowdown: sixteen developers, 246 issues, a confidence interval whose lower end sits near no effect, and a sample selected for exactly the conditions the authors name as causes. Most of the work was done in February and March 2025, before Claude 4 and before the command-line agents that arrived later that year, so the tooling measured was superseded within months of being measured. What has held up is the other half, and it is the half that does not depend on the size of the effect or on which model was used: the developers' estimate of their own speed was wrong in sign, wrong by the same amount before and after, and wrong for people who had just spent months being measured. That is a claim about self-knowledge rather than about any particular tool, and the method the paper used to expose it — fix the task before the coin, measure the time, and do not ask the person afterwards how it went — outlasts the generation of models it was built to test.