Home / Articles / Code Is Cheap, Judgment Is Scarce
Team Design Oct 15, 2026 15 min read

Code Is Cheap, Judgment Is Scarce: Engineering Roles in the AI Era

AI did not remove the bottleneck in software delivery. It moved it from writing code to trusting code. Some teams feel that as a growing review queue. Many others never see a queue at all, because reviews quietly turn into rubber stamps and quality declines instead. Here is why AI-generated changes are harder to verify, how to make trust cheap without making it careless, and why the engineers who matter most are the ones who exercise judgment well and build systems that save it.

AI coding assistants have made the first draft of almost any change dramatically cheaper. An engineer can describe a feature and get back a working implementation, tests, and deployment configuration in minutes. The natural expectation is that teams should now ship proportionally faster.

Many teams find something different. Engineers feel more productive, and they open more pull requests than ever. But those pull requests pile up. Diffs get larger, approvals take longer, and senior engineers spend most of their week reading code they did not write. Delivery speed, measured end to end, improves far less than individual output suggests, and sometimes not at all.

Other teams see the opposite: delivery looks fast, approvals come quickly, and nothing seems stuck. Then incidents climb, rework grows, and fewer people can explain how parts of the system actually work.

These are two symptoms of the same cause. Writing code was never the only step in delivering software; someone also has to decide whether the code is right. AI made the first step cheap and left the second one roughly where it was. The bottleneck did not disappear. It moved from writing code to trusting code, and trusting code runs on human judgment. When that judgment cannot keep up, a team either waits for it or skips it.

The Constraint Moved

The Theory of Constraints offers a simple rule: a system moves only as fast as its slowest step. Speeding up any other step does not speed up the system; it only grows the pile in front of the bottleneck. Speeding up the bottleneck itself moves the constraint to whatever step is slowest next.

For most of software history, producing working code was a slow, expensive step. AI coding assistants made the first draft of that code dramatically cheaper. The next step in the line, deciding whether the code is correct, safe, and worth merging, did not get cheaper at the same rate. So the queue moved there.

The industry data is consistent with this picture, though it shows correlation rather than proof of cause:

None of these studies settles the question by itself, and tools have improved since the data was collected. But together they point in the same direction: individual output rose faster than the organization's ability to verify and absorb it.

Generating code is no longer the expensive part of software delivery. Establishing confidence that the code is correct is. Teams that keep measuring the first while the second piles up will feel busy and ship the same.

Two Ways the Bottleneck Shows Up: The Queue and the Rubber Stamp

When more changes arrive than reviewers can properly judge, something has to give. There are only two options, and most teams drift into one without choosing it.

The queue: the bar holds, delivery stalls

Reviewers keep their standard. Each change still gets real scrutiny, so pull requests wait. Review latency climbs, authors context-switch while they wait, and senior engineers spend their weeks reading diffs. This version is painful, but it is visible: anyone looking at lead time can see where the work is stuck, and the system's quality is protected while the team decides what to do.

The rubber stamp: delivery looks fast, quality quietly declines

Reviewers keep the pace instead of the standard. Nobody wants to be the person blocking ten teammates, so reviews get shorter and shallower. A 600-line change gets the same five-minute look that a 60-line change used to get. “LGTM” arrives quickly, the queue never forms, and the delivery dashboard looks healthy.

The cost does not disappear. It moves into the system: bugs that a careful reader would have caught, duplicated logic, inconsistent patterns, and code that nobody on the team fully understands. That debt shows up later as incidents, rework, and slower changes in the parts of the codebase that grew fastest.

The data that exists is consistent with this second pattern, though no study we know of measures rubber-stamping directly:

The rubber stamp is the more dangerous of the two outcomes precisely because it is the more comfortable one. A queue forces a conversation about review capacity. A rubber stamp hides the problem until it surfaces as an outage or a rewrite. A team that sees no review queue after adopting AI should not assume it has no review problem; it should check whether its reviews still mean anything.

Warning Signs That Review Has Become a Rubber Stamp

  • PR size is rising, but time-to-approval is flat or falling.
  • Review comments per PR are falling, especially on large changes.
  • Approvals arrive within minutes of a PR being opened, regardless of size.
  • Change failure rate, rollbacks, or bug reports are rising while lead time looks great.
  • Incident reviews increasingly find that nobody on the team could explain the code that failed.

Why AI-Generated Code Is Harder to Review

If review were just a matter of volume, the fix would be more reviewers. The harder problem is that each AI-assisted change can cost more to review than an equivalent human-written one. That makes both outcomes above more likely: careful review gets slower, and shallow review misses more. There are four reasons.

1. Plausible-wrong code removes the usual warning signs

Reviewers rely on cues. Inconsistent naming, awkward structure, or a missing test often signal that the author was unsure, and the reviewer slows down. AI-generated code tends to be fluent, well-formatted, and confidently commented even when its logic is wrong. A subtle off-by-one in a pagination query, an authorization check on the wrong object, or a retry loop that silently duplicates a payment can all arrive wrapped in clean, idiomatic code. The reviewer has to find the error without the signals that used to point to it.

2. The author may not be able to explain the change

The most efficient review question has always been “why did you do it this way?” When an engineer wrote every line, the answer was usually quick. When a large part of a diff was accepted from an assistant, the honest answer may be “it worked when I ran it.” The reviewer then has to reconstruct the intent that the author never fully formed, which turns a ten-minute review into an hour of reverse-engineering.

3. Volume invites rubber-stamping

When a reviewer faces twice as many PRs, each larger than before, the realistic response is not twice the effort. It is less attention per change, which is how teams slide into the rubber-stamp outcome described above. AI-generated code makes the slide easier, because its fluent surface gives a skimming reviewer nothing to snag on. The review gate stays in the process, but it catches less and less.

4. Cross-stack changes need cross-stack reviewers

AI makes it easy for one builder to change the UI, the API, the database schema, and the deployment configuration in a single pull request. That is efficient for the author. For the reviewer, it means one change now needs frontend, backend, data, and infrastructure judgment at the same time. Broader ownership on the authoring side concentrates expertise demand on the review side, and the few engineers who can judge all four layers become the constraint for the whole team.

A Quick Diagnostic: Where Is Your Queue?

Pull the last month of merged changes and split each one's lead time into two parts: time from first commit to PR opened, and time from PR opened to merge. If AI adoption shortened the first part while the second grew, your constraint is review, and adding more code-generation capacity will make delivery slower, not faster.

Trust Is the New Unit of Work

It helps to name the scarce resource precisely. It is not code, and it is not reviewer hours in general. It is judgment: an experienced person deciding whether a change does what it should, fails safely when it doesn't, and fits the system it is entering.

Judgment does not get much cheaper. A senior engineer deciding whether a change to a billing flow is safe still needs the time that decision takes, and AI does not remove the responsibility for getting it right. What a team can make cheaper is trust: the total cost of reaching justified confidence in a change. That cost has three components, and each one can be reduced:

  1. How often judgment is needed. Many changes can be decided by automated checks without a person examining them at all.
  2. How much each judgment costs. A small, well-explained, well-tested change takes minutes to judge. A large, unexplained one takes hours.
  3. How much a wrong judgment costs. If a mistake can be detected and reversed in minutes, the team does not need certainty before merging.

The goal is not to review less carefully. It is to spend human judgment only where it changes the outcome, and to make each of those decisions as cheap and as recoverable as possible. That is the only way out of the choice between the queue and the rubber stamp: if the total amount of judgment a team needs stays within what its reviewers can actually give, reviewers can keep both the pace and the standard.

Three Levers for Making Trust Cheap

Lever 1: Let machines decide the routine cases

Every repeatable rule a machine can check is one a reviewer does not have to verify by eye on every change. Many teams already run tests and policy checks automatically on each pull request in a CI pipeline. The shift is to make those checks required gates for the rules they cover, while people still judge intent, design, and high-risk changes.

Consider a feature that lets one user invite a teammate. A senior engineer identifies a rule that should survive future edits: expired invites must not grant access. The feature developer adds automated tests for that case, with a quality engineer helping find edge cases. The team makes those tests required in CI. Asking for a test on one PR is ordinary review; keeping the rule as a standing gate for later changes is the process shift. A passing test shows only that its covered cases passed. A change to who can grant access still needs a security specialist.

Risk tier Examples Who decides
Low Copy and style changes, internal tooling, dependency patches within policy Required automated checks; optional async human glance
Standard New features inside existing patterns and contracts Automated checks plus one reviewer focused on intent and design
High Auth and permissions, payments, data deletion, schema migrations, new external data flows Automated checks plus a domain specialist; staged rollout required

Illustrative risk tiers. Each team should write its own and keep the criteria as team policy, not individual judgment under deadline pressure.

Lever 2: Make each human judgment cheaper

When a change does need a person, the author's job is to make that person's decision fast.

Lever 3: Make wrong judgments cheap to recover from

Review tries to establish trust before a change reaches users. Production tooling lets teams establish it afterward, with real evidence. The cheaper it is to detect and reverse a mistake, the less certainty a team needs before merging.

The three levers reinforce each other. Automated checks shrink the number of decisions. Small, explained changes shrink the cost of each decision. Recoverable releases shrink the cost of a wrong decision. Together they let a team absorb much more AI-generated output without either drowning its reviewers or lowering its bar.

What Happens to Roles

If judgment is the scarce resource, roles reorganize around it. Titles may not change much, but what makes each role valuable does.

Senior engineers: from primary authors to judgment multipliers

The senior engineer's value used to show up largely in what they built. Now it shows up in two places: the quality of the decisions they make on high-risk changes, and the systems they help the team build so that fewer decisions need them at all—contracts, property tests, risk tiers, policy checks, and golden paths. A senior engineer who reviews every PR personally becomes the bottleneck. One who identifies recurring rules, has the team encode them as tests or policy, and makes them standing gates multiplies their judgment across the team.

Builders: accountable for explaining, not just producing

Any engineer can now produce a large amount of code. What separates a strong builder is whether they can stand behind it: explain why it works, name where it might fail, and size changes so they can be reviewed. “I own this change” has to mean “I understand this change.” Teams should treat a PR its author cannot explain the same way they treat a PR that fails CI.

QA and quality engineers: from test writers to verification designers

AI can draft example-based tests quickly, but generated tests tend to encode the same assumptions as the generated code. Quality specialists become more valuable, not less, when they focus on what generation does poorly: defining the invariants that must always hold, designing property-based and contract tests, maintaining test data that reflects real edge cases, and studying escaped defects to find which class of check was missing.

Platform and security engineers: building the trust infrastructure

The levers above are mostly platform work: CI gates, policy-as-code, preview environments, feature-flag systems, canary tooling, and change-level observability. Security engineers write the rules that decide which changes are routine and which need them. Their leverage is in making the safe path automatic, so that their own attention goes to the novel risks no rule anticipates.

Product managers: owning the definition of “correct”

Much of review is really about intent: does this change do what the customer needs? When product intent is vague, every reviewer has to infer it, and every review takes longer. PMs reduce the cost of trust by writing outcomes and acceptance rules precise enough to test, so that “does this do the right thing?” becomes a check rather than a debate.

In every role, the pattern is the same. The work that grows in value is either exercising judgment on the decisions that truly need it, or building the systems that make the other decisions automatic.

The Apprenticeship Problem

There is an uncomfortable consequence. Good judgment comes from experience: writing code, getting it wrong, debugging it, and learning why. If junior engineers mostly accept generated code that they never fully understand, they can ship plenty of features while building little of the judgment that the team will need from them in five years.

Teams that care about their future reviewers should design for this deliberately:

An organization that optimizes only for short-term output can end up with plenty of code generators and a shrinking number of people able to judge what they produce. That is a slow-moving risk, and it is far cheaper to address now than after the senior engineers who hold today's judgment have moved on.

What to Measure

The metrics a team watches determine what it optimizes. If AI moved the constraint to trust, the metrics should follow it there. (For a deeper look at why output metrics break down, see Counting the Wrong Thing.)

What not to celebrate on its own: lines of code generated, PRs opened, or tasks completed. Those measure the step that is no longer the constraint.


AI made producing code cheap. It did not make deciding whether code is right any cheaper, and that decision is now where software delivery strains. Teams that respect the constraint feel it as a queue. Teams that ignore it feel it later, as declining quality in a system that looked fast the whole time. The teams that benefit most from AI will not be the ones that generate the most code. They will be the ones that make trust cheap: automating the routine decisions, shrinking and explaining the rest, and making mistakes recoverable. The engineers who matter most will be the ones whose judgment the team relies on, and who build the systems that let the rest of the team rely on it less.


Engineering Upskilling

Build the Systems That Make Trust Cheap

Our hands-on classes teach the verification discipline AI-era teams need: executable specs, type-safe schema contracts, automated verification gates, and deployment pipelines built for fast, safe rollback.

Explore the Engineering Curriculum →
ESC