A successful demo does not prove that a coding assistant improves a team's work. It only shows that the tool can produce a convincing answer in a selected environment. Adoption involves real repositories, business rules, secrets, CI pipelines and review time.
Published results call for care. A controlled GitHub study on a Python task measured better functional and quality outcomes with Copilot. By contrast, METR's randomised trial with experienced developers working on their own large open-source repositories measured a 19% increase in completion time with early-2025 tools. These studies did not examine the same people, tasks or products. They do not cancel each other out; they demonstrate why each team needs an evaluation in its own context.
This protocol compares IDE completion, repository chat, a command-line agent or a review bot without confusing generation speed with delivered value.
Define the decision before starting the pilot
A useful evaluation begins with an explicit decision. “Test AI” is too vague. Write something such as: “decide whether this tool may be authorised for bug fixes and small changes on non-sensitive internal repositories, within a EUR 40 monthly budget per developer.”
Specify the category under evaluation because the risk changes significantly:
| Tool type | Primary work | Typical access | Dominant risk |
|---|---|---|---|
| IDE completion | complete a few local lines | open file | plausible suggestion accepted too quickly |
| Repository chat | explain and propose changes | several indexed files | sensitive context sent to a provider |
| Coding agent | edit, execute and iterate | repository, shell, network | excessive action or destructive command |
| Review bot | comment on a pull request | diff and history | false assurance or review noise |
Do not compare an autonomous agent with completion on licence price alone. Compare them on the work they need to complete and the permissions required to do it.
Step 1: establish a baseline without AI
Measure the current flow for the selected task categories for one or two weeks. The baseline must use the same repositories, CI tools, review requirements and developer profiles as the pilot. Without it, an apparent improvement may simply result from easier tickets or a quieter week.
Record for each task:
- start time and the time when the change is accepted;
- first CI result;
- number of review iterations;
- defects found before and after merge;
- active developer and reviewer time;
- a short difficulty and module-familiarity estimate.
The endpoint is not the first generated diff. It is a change that is understood, validated and acceptable for production. This includes time that may have moved into debugging and review.
Step 2: build a representative task bench
A good test bench covers daily work and the areas where a tool could fail. Use real tickets that have already been solved or low-risk open work, removing information that reveals the solution.
Prepare at least two examples in each relevant family:
- fix a bug and add a regression test;
- evolve an API without breaking consumers;
- refactor a module while preserving behaviour;
- update a dependency and resolve incompatibilities;
- diagnose a flaky test or CI failure;
- change an interface and verify responsive rendering;
- explain a poorly documented area before modifying it;
- handle hostile input, an error path or a permission boundary.
A dozen tasks can produce an initial signal, but they should vary in language, age, repository surface and ambiguity. Exclude isolated toy functions unless they represent normal team work.
SWE-bench provides a reproducible setup where a model resolves GitHub issues and tests validate patches. It is a useful capability indicator, not a replacement for this internal bench: it does not know your architecture, conventions or review cost.
Step 3: use a crossover protocol
Developer experience and ticket difficulty create more variation than the tool itself. To reduce this bias, each participant should complete work with and without the assistant. Randomly distribute comparable tickets between the two conditions, then reverse the conditions for the second half.
Allow a learning phase before timing begins. An agentic tool requires users to understand its commands, limits and context controls. Measuring its first two hours would penalise it unfairly; allowing expert users to select every assisted task would favour it.
A pragmatic pilot can run for three to four weeks with four to eight willing developers. This will not produce a universal scientific truth, but it can reveal a consistent gain, a benefit limited to certain work or a blocking problem. Keep results by task type rather than publishing only one average.
The weighted scorecard
Score each dimension from zero to five using observable evidence, then apply weights set before the trial. This proposal prioritises quality and security. A team may change the weights, but not after seeing which tool wins.
| Dimension | Weight | Observable measures | Blocking result |
|---|---|---|---|
| Functional quality | 25% | tests, edge cases, escaped defects, rollback | below 3/5 |
| Security and data | 20% | permissions, secrets, dependencies, auditability | any critical failure |
| Delivery speed | 20% | time to accepted change, p50 and p90 | no targeted improvement |
| Maintainability | 15% | readability, complexity, conventions, explanation | below 3/5 |
| Total cost | 10% | licence, requests, CI, review and support | budget exceeded |
| Team experience | 10% | cognitive load, interruptions, accessibility, satisfaction | frequent abandonment |
The total makes comparisons easier, but it must never offset a secret leak, licence violation, missing audit trail or unjustified production permission. These are exit gates, not negative points diluted into an average.
Measure what happens after generation
Generated lines, accepted suggestions and prompt counts describe usage, not value. Primary measurements should follow a change until acceptance:
- time to accepted diff: from task start to technical approval;
- first-pass CI rate: no correction after the first push;
- review iterations: cycle count and total reviewer time;
- escaped defects: related regressions, incidents or follow-up fixes;
- abandonment rate: work ultimately rewritten by a human;
- explainability: the developer can justify behaviour and trade-offs.
Include p50 and p90. A favourable average can hide a few tasks where an agent enters an expensive loop. Segment familiar work from unknown code as well: METR's study is a reminder that experienced developers on their own projects may not respond like users discovering a codebase.
Our AI development tools guide places these measures within the delivery system. The article on flaky tests helps stabilise CI before treating it as an automated judge.
Calculate the cost the team actually bears
Monthly cost is more than seat licences. For each completed task, add:
- subscription and premium request consumption;
- separately billed model calls or tokens;
- additional CI minutes;
- review and correction time;
- training, administration and support;
- security reviews or enterprise plans required by the data.
Divide this total by accepted changes, not suggestions. An expensive agent can be economical if it removes hours from a verifiable migration. Cheap completion can be negative if it increases rework. Our analysis of AI budgets for developers covers consumption controls.
Test permissions as a product feature
OWASP describes excessive agency as excessive autonomy, functionality or permissions. For a coding agent, security is therefore more than patch quality. The evaluation must test what the tool can read, execute and publish.
| Capability | Initial setting | Test to run |
|---|---|---|
| Repository read | explicit scope | verify exclusion of secrets and neighbouring files |
| Write | isolated branch or worktree | attempt an out-of-scope modification |
| Shell | unprivileged sandbox | block destructive commands and system access |
| Network | disabled or allowlisted | control exfiltration and script downloads |
| Credentials | short-lived, minimal tokens | confirm that no secret enters model context |
| Publication | mandatory human approval | prevent protected push, merge and direct deploy |
Place a malicious instruction in a ticket, documentation file or test-tool output. The agent should treat it as untrusted data and must not expand its mission. NIST SSDF practices remain relevant: security requirements, development-environment protection, verification and vulnerability response do not disappear because a model proposed the code.
Run a blind review on a sample
For several comparable changes, hide the tool used where practical and ask reviewers who did not perform the task to score correctness, simplicity, conventions and risk. This reduces provider-reputation effects and the author's incentive to defend their choice.
Both groups pass through the same gates: compilation, formatting, static analysis, tests, dependency scanning and human review. A test written by the assistant does not independently prove its implementation. Confirm that it fails without the fix and covers the intended behaviour.
Our article on coding assistants and human review lists the controls to strengthen as change volume increases.
Three valid decisions at the end
A serious evaluation does not have to produce a company-wide rollout. It can lead to three decisions.
Adopt
The tool reduces time to accepted change for targeted uses, quality remains at least equivalent to baseline, no security gate fails and cost per task stays within budget. Document recommended uses, train teams and continue measuring after rollout.
Restrict
The gain is clear for tests, documentation or mechanical migrations, but absent for business logic or large refactors. Authorise only demonstrated tasks and repositories, with matching permissions. This is often better than an unrestricted licence with no operating model.
Reject or revisit
A critical confidentiality issue, unauditable action, increased defect rate or total cost above the benefit is enough to stop. Retain the protocol and results. A later product version can be assessed against the same bench instead of restarting from a sales demo.
Keep a one-page pilot record
Before the start, one page should contain the expected decision, tool and version, authorised repositories, participants, tasks, baseline period, metrics, weights, blocking gates, budget and stop owner. Add results by task type, observed incidents and the signed decision at the end.
DORA describes AI as an amplifier of existing strengths and weaknesses. The operational consequence is direct: evaluate the assistant together with the repository, CI, review, permissions and human cost on which every delivered change depends.



