15 Oct 202615 min read

Are Your Mid-Level Engineers Vibe-Coding While You Drown in AI-Slop Reviews?

Explyt TeamPublished 15 Oct 2026

The hidden team cost of vibe coding and a merge gate that tests understanding.

A familiar pattern is appearing in AI-assisted teams.

One developer uses an agent as a force multiplier. They know the system, check the assumptions, and use the model to remove mechanical work.

Another developer uses the same agent as an outsourcing service. They paste in a task, accept a large diff, point to green tests, and move on. When the implementation reaches review, the strongest engineers have to reconstruct the architecture, find the missing edge cases, and explain what the author cannot.

The first developer gets leverage. The second creates work for everyone else.

Team leads often describe the result in less diplomatic terms: the people who understand the code are now doing even more work, while the people who do not understand it can produce more code than before.

There is a new name for part of the problem: comprehension debt. It is the gap between the code a team owns and the code its engineers can explain, modify, and defend without asking the agent to think for them.

The uncomfortable question is whether generative AI can widen that gap—not only by producing bad code, but by allowing low-effort work to look productive for long enough that the cost lands on someone else.


The evidence: coding agents can produce output without understanding

The strongest evidence for this argument comes from studies that actually put programmers in front of code.

1. AI-assisted developers completed the task, but understood less

In “How AI Assistance Impacts the Formation of Coding Skills,” J. H. Shen and Alexander Tamkin recruited 52 mostly junior software engineers who had used Python at least weekly for more than a year and were unfamiliar with Trio, an asynchronous Python library. Participants were randomly assigned to complete coding tasks with a chat-based AI assistant or with web search and documentation alone.

This was a small experiment on learning an unfamiliar library. The assessment took place shortly after the task; it does not establish long-term skill loss or quantify review work in production teams.

The AI group completed the coding task about two minutes faster on average, but that difference was not statistically significant. On the subsequent 27-point knowledge quiz, the AI group averaged 50%, compared with 67% for the hand-coding group: a 17% lower score, with Cohen’s d = 0.738, p = 0.01. The largest gap appeared in debugging questions—the exact capability needed to supervise code that an agent has written.

The researchers also found a behavioral split inside the AI group:

  • low-scoring participants tended to delegate code generation or debugging to the assistant and averaged below 40% on the quiz;
  • higher-scoring participants used AI for conceptual questions, explanations, or follow-up checks, with reported interaction patterns averaging roughly 65–86% on the quiz.

This is not a claim that every AI user learns less. It is evidence that how a developer uses the assistant can separate output from skill formation.

2. Coding agents can make the initial result better while comprehension gets worse

A second study, “(Im)Paired Programming: Coding Agents Improve Productivity but Harm Understanding,” tested 54 computer-science students building a web-based tic-tac-toe variant. Participants used either an agent that directly edited their code or a chatbot that provided higher-level help while leaving more implementation work to the participant.

The agent group completed the initial task more accurately, but scored substantially lower on comprehension questions about its own code. In a follow-up extension task performed without an agent, the initial accuracy advantage did not transfer into a clear advantage. The study also links lower comprehension to low-effort interaction patterns such as copying task criteria into prompts and auto-accepting edits.

The researchers report an important asymmetry: novices using an agent could produce code as accurately as more experienced participants, while showing worse comprehension. Traditional programming background still predicted understanding, even when the initial output looked similar.

This is close to the team-lead problem. An agent can compress the visible difference between a strong and weak programmer at the moment of delivery, while preserving the difference in who can explain, debug, and extend the result.

3. A realistic codebase reveals different reliance patterns

The 2026 AIRELI study, Grasping AI Reliance in Program Comprehension and Coding, used a controlled study with 21 participants working on two realistic web-application changes. Its qualitative analysis identified three reliance patterns:

  • self-sufficient developers, who owned understanding, planning, and execution;
  • understanding-gated developers, who formed the model and plan themselves but used AI for execution;
  • AI-steered developers, who outsourced system understanding, planning, and implementation.

The AI-steered participants could complete the first task quickly, but showed shallow comprehension and struggled when the next task had to be done without the assistant. The authors explicitly describe this as an exploratory, small-sample study—not proof of a long-term productivity decline. Its value is diagnostic: aggregate task-completion numbers can hide a dangerous difference in how people reached the result.

What each source establishes

ClaimEvidenceWhat it does not establish
AI assistance can reduce immediate mastery of a new libraryShen–Tamkin randomized experiment: 50% versus 67% quiz scoreLong-term skill decline or production-team performance
Heavy delegation is associated with weaker comprehensionShen–Tamkin qualitative interaction analysis; low-scoring patterns averaged below 40%A causal effect of each interaction pattern; the subgroups were small
An editing agent can improve initial output while comprehension falls(Im)Paired Programming: 54 CS studentsPrevalence among professional mid-level engineers
Developers differ in which parts of a task they delegateAIRELI: exploratory study of 21 participantsPopulation rates or long-term causal effects
Verifying AI output takes effortSonar developer surveyWho performs that work or whether it shifts from mid-level to senior engineers

Together, these findings give a team lead a reason to check understanding separately from task completion. They do not measure how review work is redistributed inside a team.


Verification is already part of the workload

A 2026 Sonar survey provides a related, though different, signal. Among 1,149 professional developers surveyed, 95% reported spending at least some effort reviewing, testing, or correcting AI output. 38% said reviewing AI-generated code requires more effort than reviewing code written by colleagues, while 61% agreed that AI often produces code that looks correct but is not reliable.

The study does not prove that weak developers create more work for strong developers. It does show that verification is already a substantial part of AI-assisted development.

Survey findingRespondentsHow to read it
Spend at least some effort reviewing, testing, or correcting AI output95%Verification is common; this says nothing about hours spent
Say AI-generated code takes more review effort than colleagues' code38%A comparison of perceived effort, not a measured time increase
Agree that AI often produces code that looks correct but is unreliable61%A reported concern, not a measured defect rate

Source: Sonar, State of Code Developer Survey 2026; see the linked report above. Fieldwork ran in October 2025. Each row answers a different question; the percentages should not be compared as one scale.

The team-level risk is easy to describe:

Low-effort agent useCost transferred to the team
“The agent said this is the root cause”A senior engineer reconstructs the actual cause
“The tests are green”A reviewer checks whether the tests assert anything meaningful
“It only changes this service”Someone searches for hidden callers and consumers
“Claude wrote the architecture”A tech lead has to explain decisions the author cannot defend
“The agent can fix the next bug”Development stops when the agent reaches an unfamiliar boundary

The issue is not that every developer must write every line manually. The issue is that someone must own the model of the system.


Comprehension debt is a team liability

Technical debt is the cost of taking a shortcut in the code.

Comprehension debt is the cost of taking a shortcut in understanding.

It appears when an engineer accepts a decision they did not make and cannot reconstruct later. The code may be perfectly readable. The missing asset is the mental model:

  • what the component guarantees;
  • what it assumes;
  • who depends on it;
  • what happens when the happy path fails;
  • why the implementation has this shape;
  • which alternatives were rejected.

Comprehension debt is especially dangerous because it can look like productivity in the short term. The developer closes more tickets. The team sees more diffs. The dashboard records more completed work.

The debt becomes visible during the next incident, migration, or refactoring. The agent is asked to fix a bug. It cannot infer the missing business context. The developer cannot either. A senior engineer is pulled in—not to design a new feature, but to reverse-engineer a system that the team has already accepted.

This is how AI-assisted development can create an uneven team dynamic:

Agent output increases
        ↓
Independent understanding does not increase at the same rate
        ↓
More code reaches review and production
        ↓
The most experienced engineers become the verification layer
        ↓
Senior-engineer time shifts from design to reconstruction and cleanup

The Shen–Tamkin interaction analysis points to a useful distinction: using AI is not the same as outsourcing understanding. Participants who asked conceptual questions or requested explanations showed stronger quiz results than those who delegated generation or debugging. These were observational comparisons within small subgroups, not randomized tests of each behavior.


What does not solve the problem by itself?

Teams usually respond by adding more automated checks. Those checks are valuable, but they answer different questions.

MechanismGood at detectingStill leaves unanswered
CompilationType and syntax errorsWhether the design preserves the business invariant
TestsSelected behavior under selected conditionsWhether the test is meaningful or the right behavior was selected
IDE linterConfigured static-analysis findingsWhether the product intent is correct
Plan agentMissing steps and implementation optionsWhether the developer understands the final result
DiagramStructure and relationshipsWhy the changed boundary is correct
AI reviewerPlausible defects and inconsistenciesWhether the author can independently defend the diff
Explanation and quizUnderstanding of intent, invariants, impact, and failure modesCorrectness by itself; technical checks are still required

A second model can find issues the first missed. The team still needs to identify who can explain the change, debug it, and make the next modification safely.

The best process combines both kinds of checks:

  • deterministic checks for the artifact;
  • a comprehension check for the person accepting responsibility.

The quiz skill: a forcing function before merge

A quiz should not be a generic programming exam. It should be generated from the actual change.

The workflow can be simple:

1. Explain the change in your own words

Before accepting the diff, the author gives a short explanation without reopening the agent transcript:

“This change moves normalization to the API boundary because three callers can pass equivalent identifiers in different formats. The invariant is that equivalent identifiers produce one cache key. The CLI path is intentionally unchanged.”

This sentence exposes more than “the agent updated validation.” It names the behavior, boundary, invariant, and scope.

2. Ask change-specific questions

QuestionWhat it verifies
What was the old behavior?Baseline understanding
What is the new behavior?Change understanding
Which invariant must remain true?Design understanding
Which callers or consumers are affected?Impact-boundary understanding
What happens on the important failure path?Operational understanding
What did this diff intentionally not change?Scope understanding
What evidence would falsify your explanation?Verification understanding

3. Treat a wrong answer as a merge pause

A wrong answer is a reason to investigate. The question may be ambiguous, the expected answer may be wrong, or the developer may understand the behavior but describe it differently. An AI-generated answer key must be checked against the code and the intended behavior.

The next step may be to:

  • reduce the diff;
  • inspect real symbol usages;
  • run a focused test or configured application;
  • inspect a debugger value and call stack;
  • read the actual dependency source;
  • add a missing test;
  • ask the agent for a narrow explanation;
  • update the design note;
  • reject the implementation.

Let the author inspect the code, challenge an ambiguous question, and retry. Accept an explanation supported by evidence even if it differs from the agent's wording. Block the merge only when uncertainty about a critical behavior remains unresolved. Use failures to improve the change and the questions, not to rank engineers by verbal fluency.

4. Use risk-based gates

A documentation change does not need the same gate as a concurrency or billing change.

ChangeSuggested gate
Documentation or formattingConfirm scope and no behavior change
Local implementation changeExplain intent, invariant, callers, and evidence
Multi-file refactoringExplain usage boundaries and rejected alternatives
Security, data, concurrency, or public API changeQuiz failure modes, rollback, impact boundary, and evidence

A good quiz is short. Three precise questions about a changed invariant are more useful than twenty questions about syntax.


How to prevent the strong engineers from becoming the permanent safety net

A team lead cannot solve this by telling people to “review more carefully.” That simply turns senior engineers into a manual verification service.

The process has to make ownership visible before the review is escalated.

Option 1: Require an author-owned change summary

The author writes:

Intent:
Invariant:
Affected callers:
Important failure path:
Evidence:
Known uncertainty:

The summary must be written by the author, not generated by the same agent that produced the code.

Option 2: Make the author demo one critical path

For a runtime-sensitive change, the author shows a configured run, a focused test, a debugger value, or a trace. The point is not to perform theatre. It is to connect the explanation to an observed fact.

Option 3: Use a review budget

Ask the author to identify the two decisions most likely to be wrong. Review those first. This discourages large, vague agent diffs and makes uncertainty explicit.

Option 4: Add a quiz gate

Use the change-specific questions and risk tiers above. The agent can draft questions, but a designated reviewer resolves disputes about the answer key. Unresolved uncertainty about a critical behavior blocks the merge; a different wording or an initially wrong answer does not automatically fail the developer.

Option 5: Track learning, not just throughput

Useful team signals include:

  • how often a quiz reveals a missing assumption;
  • how often a diff is reduced after the quiz;
  • how often a missing test or caller is discovered;
  • how much senior-engineer review time goes to reconstruction rather than design;
  • whether the explanation remains useful during a later incident.

Start with a two-week pilot on one class of changes. Compare review time and issues found with your recent baseline, and record how much time the gate itself adds. Keep the protocol only if it reveals useful uncertainty without turning senior reviewers into full-time examiners.

Make the team policy explicit

Before the pilot, agree on a few operating rules:

Policy decisionPractical default for the pilot
Which changes need a quiz?Use the risk tiers above; skip formatting and documentation-only changes
Who owns the explanation?Name an accountable engineer; pair authors can explain the change together
Where does it live?Store the intent, evidence, unanswered questions, and final explanation in the PR
Who resolves a disputed question?A designated reviewer checks the code and requirements, not just the agent's answer
What happens after a failed attempt?The author investigates, adds evidence or changes the diff, then retries
Who can waive the gate?The reviewer or team lead, with the reason and remaining risk recorded in the PR
How do we avoid bureaucracy?Limit the pilot to three questions per eligible change and review its overhead

If critical uncertainty persists, escalate it as a design or requirements question. Do not pass an unexplained patch to a senior engineer with the expectation that they will silently finish the author's work.


Where Explyt fits

An IDE-native agent can help with the evidence-gathering part of this workflow. In supported JetBrains IDEs, Explyt can work with project facts and IDE operations such as symbol usages, configured runs, debugger evidence, refactorings, reviewable changes, and IDE linter feedback.

Those capabilities are mechanisms, not guarantees. A green test can still be weak. A symbol search can miss dynamic behavior. A debugger run covers one execution. A review finding can be wrong. The developer remains responsible for the requirements, architecture, and decision to accept the diff.

A quiz workflow would add an explicit check of whether the responsible engineer can use that evidence to explain the change. The final decision still belongs to the team.


Try it on your next agent-generated diff

Choose one real change this week—preferably a multi-file refactoring, bug fix, or new integration.

  1. Let the agent implement it.
  2. Run the checks your team already requires.
  3. Close the agent transcript.
  4. Ask the author to explain the change in their own words.
  5. Ask three questions about the invariant, callers, and failure behavior.
  6. Investigate wrong or vague answers; pause the merge if a critical uncertainty remains unresolved.
  7. Record what the team learned.

Explyt can help you inspect the project facts behind the diff inside your JetBrains IDE. A quiz skill can help test whether the person accepting the change owns those facts.

The real question is not whether your team uses AI. It is whether the people who merge AI-generated code can still explain what they are responsible for.

Try the workflow with your next Explyt-assisted change—and tell us in the comments: how does your team prevent vibe-coded output from becoming someone else’s review and cleanup problem?

Related reading: The agent wrote the code, and you lost the model covers the developer-side cost. The CTO Ships at Comprehension Speed, Not Generation Speed covers the release-policy side.

Get started with Explyt

Reproduce, inspect and fix inside JetBrains IDEs, with the debugger, run configurations and IDE facts as evidence.


Sources

Newsletter

Get Explyt updates in your inbox

Release notes, engineering deep dives, and new articles like this one. No spam, unsubscribe anytime.

Comments

Loading comments...

Keep reading

All articles

Why choose Explyt?

Feature

Debugger

Yes

Ultimate only

No

No

No

No

SAST vulnerability scanner

Yes

No

No

No

No

No

IDE refactorings (Rename, Change Signature…)

Yes

No

No

No

No

No

Test coverage guarantees

Yes

Coverage gates

No

No

No

No

No

Semantic code model (types, find-usages)

Yes

Full code model

Yes

LSP

No

LSP

No

Reads dependency source

Yes

No

LSP

No

No

No

Auto-review of generated code

Yes

Via verify

/review

PR only

No

No

Context compression

Yes

No

Yes

No

No

Yes

Multi-IDE support

JB only

JB only

Yes

Yes

Yes

Yes

Pricing (all top models)

$15-200/mo

Credit-based

$20–200/mo

$20–60/mo

$10–39/mo

BYOK

What IDE-native AI feels like

What impressed me most is how well the agent understands the existing project. Its plans fit naturally into what is already built, even when I am working outside my usual tech stack.

Mariya Remenyuk
Mariya Remenyuk

Senior Analyst Developer · DXC Technology

LSP gives an agent coordinates; the full IDE gives it the project model. That native IDE context makes all the difference on real Java code.

Akiner Alkan
Akiner Alkan

Software Architect & AI Board Lead · Siemens

IDE-native stepping makes the difference on stateful Java applications.

Masaood
Masaood

Software Engineer

Webinar: Working with AI Tools at the User Level

Methodology, SDD + TDD, feedback loops, and subagents — a practical framework for getting predictable results from AI coding agents. For senior Java developers and team leads using JetBrains IDEs.

Explyt 5.20

Explyt 5.20: stop waiting in the chat — a background task panel and notifications outside the IDE

Frequently Asked Questions

Getting Started

IDE Integration & Workflow

How Explyt Compares

Models & BYOK

Pricing & Billing

Privacy & Security