AI engineering · From Vibe to Viable

Why is AI filling my codebase with slop?

Other teams appear to ship in hours with AI. Your team generates more pull requests, but the next cycle disappears into review, rework, and recovery while customer learning waits.

Iain Niven-Bowling · 21 August 2026 · 8 minute read
The position

AI slop doesn't begin with bad AI or engineers who don't care. It begins when generating code is immediately rewarding, while the cost of incoherent change arrives later and is often carried by somebody else.

Why are some teams seeing extraordinary gains from AI while your team is spending more time on review, rework, and recovery?

Because AI amplifies the system it enters. Clear patterns, regression protection, and shared standards turn faster implementation into faster learning. Without them, AI multiplies ambiguity and pushes the cost downstream.

The goal isn't less AI. It's to create the conditions in which implementation speed becomes product speed.

AI changes when the reward and cost are felt

Most engineers already know that tests, code standards, and coherent architecture matter. The behaviour doesn't persist because nobody explained quality well enough.

AI changes the experience of the work. The reward is immediate and personal: working code appears in minutes. The cost is delayed and distributed: somebody reviews it later, another person works around it, Support carries the customer consequence, or a future change exposes the inconsistency.

Generation feels fast nowWorking code appears in minutes. The reward is visible and personal.
The cost arrives laterReview, rework, support pressure, and codebase decay land elsewhere.
The behavioural gap: the person receiving the immediate reward is insulated from the full cost of the change.

Another reminder to care about quality leaves that loop intact. Three beliefs need to shift:

“Foundations slow AI down.”

“Foundations let AI speed compound.”

“The AI wrote it.”

“We chose to ship it.”

“We can clean it up later.”

“Anything left becomes precedent for the next agent.”

This is the leadership problem underneath the technical question. The work is to make the consequence timely, keep ownership close to the decision, and make the better path easier for people and agents to follow.

The gains are real, but context matters

One number can't describe all software work.

55.8%

Faster on a bounded task

Developers using GitHub Copilot completed a defined coding task faster in a controlled experiment with common instructions and automated tests.

Microsoft Research →
26.08%

More completed tasks

Three field experiments involving 4,867 developers estimated an increase in completed tasks with AI assistance.

Microsoft Research →
19%

Slower in familiar repositories

Experienced developers took longer on real issues in large repositories they knew well, even though they believed AI had made them faster.

METR study →

These studies examined different work. METR explicitly warns against treating its early-2025 result as a verdict on all software development. Its February 2026 update suggested newer tools probably produced greater gains, but selection and measurement problems prevented a reliable estimate.

Start with when AI is genuinely excellent

A defined task isn't the same as changing a mature system whose behaviour and trade-offs are distributed across its code and maintainers. As dependence on unwritten context grows, generating an implementation captures less of the job.

AI can feel astonishing when the outcome is bounded and the intended patterns are clear. It can generate routine code and tests, apply known patterns repeatedly, and turn a clear design into working software.

The pattern I see in teams getting compounding gains is that they establish the foundations before they multiply the output.

They have automated regression protection around the customer journeys that matter. They have intentional architecture and code patterns worth copying. They have standards the agent is expected to follow, with material ones enforced through types, schemas, tests, linters, or build gates rather than left as suggestions in a prompt.

These aren't only technical controls. Regression tests make an important consequence immediate. Intentional patterns make the desired behaviour easier to repeat. Gates stop a locally rewarding shortcut becoming shared precedent before anyone has to argue about it in review.

A founder-led team doesn't need an enterprise platform before using AI. It needs the smallest foundation its current product and customer risk have earned.

Under those conditions, AI removes implementation toil. It executes decisions the team has already made and exposes the remaining decisions for a person to resolve. Discipline doesn't cancel the speed. It allows the speed to compound.

Google’s 2025 DORA research found positive relationships between AI adoption, throughput, and product performance, alongside a continuing negative relationship with delivery stability. Local productivity and system reliability can move in opposite directions.

The diagnostic

What AI slop looks like in a codebase.

Slop isn't a technical category or a label for people. It's shorthand for output arriving faster than the team can make it coherent and trustworthy.

Fragmented rules

Several versions of the same product decision

Each works locally, but the product becomes harder to reason about as a whole.

Accidental architecture

New abstractions duplicate existing ones

The agent copies what is nearby without knowing whether it is approved, transitional, or debt.

False confidence

Tests prove the generated implementation

They pass without proving that the important customer journey still works.

Distributed cost

Review and recovery grow with output

Changes look fast at generation time while somebody else absorbs the reconciliation later.

The codebase contains history, not one consistent opinion

A better model can reduce errors, but it can't decide which accidental product or code pattern is intentional.

One step is to adopt a capable tool. That increases generation capacity, not the system deciding what belongs in the product or what makes a release safe.

When those decisions remain implicit, the agent has to infer them. The current codebase becomes its most available source of instruction. A nearby pattern might be the standard, a prototype shortcut, half a migration, or debt.

This is codebase gravity. Yesterday’s most copyable decision becomes tomorrow’s default, whether or not it is where the product is trying to go.

The decay can be difficult to see while the team is still adding code. It becomes visible when someone tries to introduce regression testing, consolidate competing patterns, change an architectural boundary, or make a critical customer journey dependable. The team must first reconstruct which behaviours are intentional and which were merely accepted along the way.

GitHub recommends repository instructions that explain how to build, test, and validate changes and which standards to follow. Instructions help, but material standards should also be visible in types, schemas, tests, build checks, and the system itself.

A better frame for the team

Move fast, protect what matters, and strengthen what breaks.

“Move fast and break things” leaves its conditions unstated. Its useful form assumes people can judge what is safe to break, important failures become visible quickly, their impact is contained, recovery is credible, and the lesson changes the system.

Change the conditions around the work

Four mechanisms that make AI speed compound.

01 / Ownership

Keep ownership through release

The person directing the change remains answerable for its evidence, deployment, and relevant customer consequence. AI can perform the implementation; it doesn't absorb the commitment.

02 / Feedback

Make the consequence immediate

Regression tests around important journeys return feedback while the change is still being shaped, rather than after a customer or reviewer discovers the breakage.

03 / Direction

Make the desired behaviour easier

Give AI intentional patterns to copy and turn material standards into types, schemas, tests, linters, or gates.

04 / Learning

Make every escaped failure improve the system

Repair the immediate problem, then add the missing test, pattern, rule, or context that makes a repeat less likely.

Accountability without blame

Saeideh Bakhshi reaches a parallel conclusion in research. She contrasts treating AI as an oracle with designing a system that preserves responsibility for the method.

This isn't retrospective blame or permanent anxiety. Accountability has to be bounded to something the person can control, with authority to stop an unsafe release and support when the evidence is uncertain. The goal is to increase preventive care before the next change, not celebrate the discomfort created by the last one.

The process should be earned by the risk

Not every experiment needs this level of care. A disposable prototype can be loosely directed when it's isolated, reversible, and won't become the foundation for later work.

When it enters the product, carries a customer promise, or becomes an example agents will copy, make the intended direction and proof visible. Use the smallest structure the risk has earned.

Measure whether speed compounds

Don't confuse generated output with product progress.

Lines of code, prompts, commits, and pull-request counts show activity. They don't establish that the product is moving faster. Ask what happened to the whole change:

  • Did it reach a customer sooner?
  • How much review and rework did it require?
  • Did the important journey remain reliable?
  • Is the product rule now clearer or more fragmented?
  • Will the next person or agent make a similar change with less interpretation?
The standard

AI should make the next change easier.

The teams seeing extraordinary gains built foundations before multiplying change. AI doesn't create the engineering system. It multiplies the one it's given.

Give it clear intent, an approved direction, fast proof, and accountable ownership, and implementation speed can compound. Leave those decisions hidden, and the same capability can compound the ambiguity already present.

Use AI to carry more of the execution. Keep responsibility for what the execution means.

Explore From Vibe to Viable
Sources and evidence boundary

The Impact of AI on Developer Productivity, Microsoft Research

The Effects of Generative AI on High-Skilled Work, Microsoft Research

Measuring the Impact of Early-2025 AI on Experienced Open-Source Developer Productivity, METR

Developer productivity experiment update, METR

2025 State of AI-Assisted Software Development, Google Cloud DORA

Best practices for using GitHub Copilot to work on tasks, GitHub Docs

The studies describe different tasks, tools, dates, and populations. Their results shouldn't be averaged into a universal productivity claim. The behavioural diagnosis and foundations-before-volume position are Iain’s synthesis of the research and direct product-engineering experience.