EngineeringAI & Automation

Measuring AI Tool Effectiveness

How we evaluate the impact and ROI of AI tooling adoption across the engineering team.

Overview

AI coding tools are adopted on instinct — engineers feel faster, and the team assumes the feeling reflects reality. Sometimes it does. Sometimes engineers feel faster because AI generates code quickly, but the review, debugging, and correction that follow cancel out the gain. Without measurement, the team cannot distinguish between tools that genuinely accelerate delivery and tools that shift effort from writing to reviewing without a net improvement.

Measuring AI effectiveness is not about justifying a subscription cost. It is about understanding where AI assistance adds real leverage, where it adds overhead, and where the team's expectations diverge from the evidence. That understanding drives better decisions: which tasks to AI-assist, which to do by hand, and how to coach the team on effective usage.


Why It Matters

Intuition is not a reliable productivity signal. Developers consistently report feeling more productive with AI tools. Controlled studies find the relationship between perceived speed and actual delivery speed is weak — in some cases, AI-assisted teams move slower overall because generated code requires more review and produces more bugs per line. Measurement distinguishes feeling from evidence.

Budget decisions need evidence. AI tool subscriptions at team scale are not trivial costs. A 10-engineer team on professional-tier tools across Claude Code, Cursor, and code review automation can exceed $5,000/month. Teams that can demonstrate measurable impact retain and expand tooling; teams that cannot will face pressure to cut it.

Usage patterns matter as much as tool choice. Two engineers using the same tool can have dramatically different outcomes depending on how they prompt, how thoroughly they review output, and which tasks they apply AI to. Measurement reveals whether the team is using tools in high-leverage ways — and where coaching would help.

Without a baseline, improvement is invisible. A team that adopts AI tools without measuring the before-state cannot demonstrate improvement after adoption. Establish baselines before full rollout, not retrospectively.


Standards & Best Practices

Measure outcomes, not activity

AI tool adoption creates a temptation to measure activity: prompts sent, completions accepted, lines generated. These metrics are easy to collect and almost entirely useless. They measure tool usage, not engineering effectiveness.

Activity metric (avoid)Outcome metric (measure instead)
Completions accepted per dayPR cycle time (open → merged)
Lines of AI-generated codeBugs per sprint in AI-assisted work
Prompts sentCode review round-trips per PR
Time spent in AI chatTime from ticket to production

The question is not "how much is the team using AI?" — it is "does AI-assisted work ship faster and with fewer defects?"

Combine quantitative and qualitative data

Quantitative metrics tell you what changed. Qualitative data tells you why — and often reveals what to change. A survey question like "On tasks where you used AI assistance, did you feel the output needed significant rework before it was commit-ready?" surfaces friction that cycle time data alone cannot detect.

Run a brief team survey every quarter alongside the metric review. Two or three targeted questions give more signal than a long questionnaire nobody completes carefully.

Measure at the task level, not the team level

Team-level metrics (average PR cycle time for the whole team over a quarter) are too noisy to isolate AI impact — too many other variables change simultaneously. Measure at the task level: compare cycle time for PRs that were AI-assisted vs. PRs that were not, for similar task types.

Most AI review tools and some IDEs (Cursor, Claude Code) can tag or log which sessions involved AI assistance. Where tagging is not automatic, ask engineers to add a brief label to PRs: "AI-assisted: test generation" or "AI-assisted: refactoring."

Define leading and lagging indicators

Indicator typeExampleWhat it tells you
Leading (early signal)PR review round-tripsWhether AI-generated code is review-ready
LeadingTest coverage added per PRWhether test generation is being used
Lagging (outcome)Bugs per sprint (AI-assisted vs. not)Whether AI-assisted code is higher quality
LaggingFeature cycle time (ticket → production)Whether AI tools accelerate end-to-end delivery

Track leading indicators weekly — they tell you if something is going wrong before it shows up in outcomes. Track lagging indicators monthly — they tell you whether the overall investment is paying off.

Establish a baseline before full rollout

If AI tools are being introduced across the team, measure the current state first:

  • Average PR cycle time by task type
  • Average review round-trips per PR
  • Bug rate per sprint
  • Self-reported time distribution (writing tests, writing boilerplate, writing business logic)

Run the team on the new tools for 60 days before measuring outcomes. Changes in the first two weeks reflect learning curves, not steady-state performance.


How to Implement

Step 1 — Define the metrics you will track

Before adopting or expanding AI tooling, agree on three to five metrics. More than five becomes reporting overhead; fewer than three is insufficient signal.

Recommended starting set:

  1. PR cycle time — time from PR open to merge, by task type (feature, bug fix, refactor, test)
  2. Review round-trips — number of review-request/changes-requested cycles per PR
  3. Defect rate — bugs reported in the sprint following delivery, by AI-assisted vs. not
  4. Test coverage delta — change in line coverage per PR
  5. Developer satisfaction — quarterly survey score on AI tool usefulness (1–5 scale)

Step 2 — Collect baseline data

Before changing tooling or expanding usage, collect 30–60 days of baseline data using your existing GitHub metrics. GitHub's API exposes PR open/merge timestamps, review events, and comment counts.

# Example: collect PR cycle times via GitHub CLI
gh pr list \
  --state merged \
  --json number,title,createdAt,mergedAt,labels \
  --limit 200 \
  > prs_baseline.json

# Process with jq: calculate cycle time in hours
jq '[.[] | {
  number: .number,
  title: .title,
  labels: [.labels[].name],
  cycle_hours: (
    (.mergedAt | fromdateiso8601) -
    (.createdAt | fromdateiso8601)
  ) / 3600
}]' prs_baseline.json > cycle_times.json

Store this baseline. You will compare against it after 60 days of AI tool usage.

Step 3 — Tag AI-assisted work

Establish a convention for marking AI-assisted PRs so you can split the data:

## PR description label (add to template)

**AI assistance used:** [none | test generation | refactoring | feature scaffolding | documentation]

Or add GitHub labels: ai-assisted: tests, ai-assisted: refactor, ai-assisted: feature.

With this tagging, you can run the same cycle time analysis on AI-assisted PRs vs. unaided PRs for similar task types.

Step 4 — Run a quarterly survey

Four questions, answered on a 1–5 scale, at the end of each quarter:

1. On tasks where I used AI assistance, the output was commit-ready with minimal rework.
   (1 = Strongly disagree → 5 = Strongly agree)

2. AI assistance reduced the time I spent on tasks I found low-value or mechanical.
   (1 = Strongly disagree → 5 = Strongly agree)

3. I am confident that AI-generated code in our codebase has been reviewed to the same
   standard as hand-written code.
   (1 = Strongly disagree → 5 = Strongly agree)

4. Which task type has benefited most from AI assistance this quarter?
   (free text)

Run the survey anonymously. The goal is honest data, not performance review input.

Step 5 — Review and adjust quarterly

Every quarter, spend 30 minutes as a team reviewing the metrics and survey results:

  1. Compare PR cycle time for AI-assisted vs. unaided work — is the gap growing or shrinking?
  2. Review defect rate — is AI-assisted code producing more or fewer post-delivery bugs?
  3. Review survey scores — where is the team finding AI useful? Where is it friction?
  4. Identify one change to make in the next quarter: a task type to add AI assistance to, a task type to pull back from, or a prompt pattern to standardise.

Document the decision and the reasoning. These quarterly reviews are where the team learns to use AI tools more effectively — not just in aggregate, but in the specific task types where leverage is real.


Tools & Templates

Metrics dashboard: what to track and where to find it

MetricData sourceHow to collect
PR cycle timeGitHub APIgh pr list + timestamps
Review round-tripsGitHub APICount review_requested events per PR
Lines added per PRGitHub API.additions field on PR
Test coverage deltaCI coverage reportCompare before/after per PR
Bug rate by sprintJira / LinearFilter by sprint + label
AI tool usage timeCursor / Claude Code analyticsExport from tool dashboard (where available)

GitHub script: PR cycle time by label

#!/usr/bin/env bash
# scripts/pr-cycle-time.sh
# Outputs average cycle time for PRs with a specific label.
# Usage: bash scripts/pr-cycle-time.sh ai-assisted:tests

set -euo pipefail

LABEL="${1:-}"
if [ -z "${LABEL}" ]; then
  echo "Usage: $0 <label>"
  exit 1
fi

gh pr list \
  --state merged \
  --label "${LABEL}" \
  --json createdAt,mergedAt \
  --limit 100 \
  | jq '
    [.[] | {
      hours: (
        (.mergedAt | fromdateiso8601) -
        (.createdAt | fromdateiso8601)
      ) / 3600
    }] |
    {
      count: length,
      avg_hours: (map(.hours) | add / length | round),
      median_hours: (sort_by(.hours) | .[length/2 | floor].hours | round)
    }
  '

Quarterly survey template

## AI Tool Effectiveness Survey — Q[N] [Year]

**Anonymous. Takes 3 minutes.**

1. On tasks where I used AI assistance, the output was commit-ready with minimal rework.
   [ ] 1 — Strongly disagree
   [ ] 2 — Disagree
   [ ] 3 — Neutral
   [ ] 4 — Agree
   [ ] 5 — Strongly agree

2. AI assistance reduced time spent on low-value or mechanical tasks.
   [ ] 1 — Strongly disagree [ ] 2 [ ] 3 [ ] 4 [ ] 5 — Strongly agree

3. I am confident that AI-generated code in our codebase meets our review standards.
   [ ] 1 — Strongly disagree [ ] 2 [ ] 3 [ ] 4 [ ] 5 — Strongly agree

4. Which task type has benefited most from AI assistance this quarter?
   [free text]

5. Which task type has created the most friction or rework when AI-assisted?
   [free text]

60-day review template

## AI Tooling: 60-Day Review

**Period:** [date range]
**Tools in use:** [Claude Code / Cursor / Codex — list active tools]

### Quantitative

| Metric                           | Baseline | Current | Change |
| -------------------------------- | -------- | ------- | ------ |
| PR cycle time (AI-assisted)      | —        | —       | —      |
| PR cycle time (unaided)          | —        | —       | —      |
| Review round-trips (AI-assisted) | —        | —       | —      |
| Defect rate (AI-assisted)        | —        | —       | —      |

### Qualitative

- Tasks where AI showed clear leverage:
- Tasks where AI added overhead or rework:
- Survey score (Q3 average):

### Decision for next quarter

[What changes, what stays the same, and why]

Common Pitfalls

Measuring activity instead of outcomes. Completions accepted and prompts sent are easy to collect and tell you nothing about whether the team is shipping better software faster. Measure cycle time, defect rate, and review friction — not tool usage volume.

No baseline. A team that adopts AI tools without measuring the before-state cannot demonstrate improvement. The before-state feels obvious in retrospect but is impossible to reconstruct accurately from memory after 90 days.

Conflating individual experience with team outcomes. One engineer who is very effective with AI tools will not move team-level metrics enough to be statistically meaningful. Measure at the task level across the team, not based on the experience of the most enthusiastic adopter.

Ignoring qualitative data. A cycle time improvement that is accompanied by engineer survey scores showing "AI output requires significant rework" is a fragile improvement — the work is getting done faster at the cost of review quality. Survey data reveals the mechanism behind the numbers.

Hawthorne effect in the first 30 days. Engineers who know their AI usage is being measured tend to change their behaviour. The first month of data after announcing measurement is typically not representative. Collect two months before drawing conclusions.

No feedback loop to practice. Measurement without action is overhead. Every quarterly review should produce one concrete change: a task type to add AI assistance to, a prompt pattern to standardise, a review checklist item to add, or a tool to retire. If the review produces no change, the measurement is not informing decisions.