Skip to content

AI slop and tech debt — where three models agree

A development team around a table — concerns chalked on the board behind them, a pilot plan and a metrics list in front of them

About this post. I am having an ongoing argument with parts of my development team about whether AI-written code is a liability. Rather than keep arguing from vibes, I put the same question, verbatim, to three models and read the answers side by side. This post is the summary of those three transcripts, drafted with Claude Code and edited by me. The opinion section at the end is mine.

The argument, roughly, is this: using AI to write code introduces AI slop — plausible-looking output that carries a high risk of bugs and technical debt, enough to eventually bring a project to a halt.

It is not a stupid position. It is also not a position anyone on either side has brought evidence to. So I typed the same paragraph into three places:

ModelVendorReasoning effort
Claude Fable 5AnthropicHigh
Claude Opus 4.8, via GitHub CopilotAnthropic / GitHubHigh
ChatGPT 5.6OpenAIMedium

Same prompt, no follow-up steering, no telling them which side I was on. Here is what they had in common.

1. All three conceded the concern before answering it

Not one of them opened with a defence. All three led with the failure modes, and the lists overlap almost item for item: code that compiles and passes the happy path but misses edge cases; duplicated logic instead of refactoring, because the model lacks whole-codebase context; confident use of deprecated or invented APIs; and tests that validate the implementation's own assumptions rather than the requirement.

ChatGPT added the one I find most uncomfortable — code that "technically works while making the architecture worse." That is the failure that survives review, because there is nothing wrong with any individual line.

2. AI is an amplifier, not a cause

This is the strongest agreement in the three transcripts, and the phrasing is nearly identical across all of them.

  • Copilot: "AI doesn't cause slop and tech debt — it amplifies whatever process you already have."
  • ChatGPT: "AI increases the throughput of both good engineering and bad engineering."
  • Fable: the AI "isn't the root cause, but it's an accelerant."

The practical consequence they all draw is the same one: if your review culture is already thin and you are already under pressure to ship, the team's fear is correct — not because AI writes worse code than your engineers, but because it lets a weak process produce debt faster than it used to. Fable was blunt about it: teams that get burned are "almost always" teams where output goes in with weak review, no tests, and no clear ownership.

3. The quality boundary was never AI versus human

All three refused the framing of the argument itself. ChatGPT put it most directly — the meaningful boundary is "reviewed, tested, understood and architecturally coherent code vs. code that isn't." Copilot: the determining variable "isn't 'AI vs no AI.' It's whether the human stays the author and the reviewer." Fable: "'AI introduces slop' is a statement about process, not about the tool."

The pointed version of this, which two of them made explicitly: the anti-AI argument quietly assumes hand-written code carries some inherent quality guarantee. It does not. Copy-paste from Stack Overflow, rushed deadlines and unreviewed PRs produced slop for twenty years before any of this. Quality has always come from review, tests, architecture and ownership — never from the fact that a human typed every character.

4. The author rule, stated three times in three ways

Every one of them landed on the same single rule, and it is the one I would actually take to the team:

Whoever raises the PR must be able to explain and defend every material change as if they wrote it. "The AI wrote it" is not an answer.

Fable framed it as a postmortem test — "the AI wrote it" is never an acceptable answer in one. Copilot named it the author rule outright. ChatGPT turned it into a checklist: you should be able to say why the implementation is structured that way, what alternatives were considered, what its failure modes are, what tests demonstrate correctness, and how it fits the existing architecture. If you cannot, it does not merge.

Three models, two vendors, one rule. That convergence is worth something on its own.

5. Loss of understanding is the one genuinely new risk

Everything else on the list — bugs, duplication, bad abstractions — is an old problem arriving faster. This one is new, and all three flagged it independently.

ChatGPT called it out as the AI-specific problem it would "take very seriously": if developers start merging code they cannot explain, you end up with a codebase nobody really owns. Copilot framed it as skill erosion in juniors. Fable came at it from a different angle and, for my money, the sharpest one:

Reviewing code is harder than writing it, and when AI writes the code, your whole team shifts into review mode, which humans are demonstrably worse at sustaining.

Copilot made the structural half of the same point — the bottleneck moves from writing to reviewing, and teams that do not scale review capacity to match the new output volume get buried. That is a capacity problem with a real ceiling, and it is the argument my sceptical colleagues are closest to being right about.

6. Use it on a gradient, by blast radius

All three drew the same map, in the same direction.

Aggressively: tests, documentation, boilerplate, mechanical refactors, adapters, repetitive API migrations, well-specified bug fixes, codebase exploration, prototypes.

Cautiously: core business logic, security-sensitive paths, domain models, database schemas, new frameworks and dependencies, sweeping cross-service refactors, and architectural decisions generally.

ChatGPT drew the sharpest line here: there is a large difference between using AI for bounded engineering work and letting it autonomously redesign systems. The second one is where the compounding debt the team fears actually comes from.

7. AI is unusually good at the debt humans avoid

The inversion two of them made, which I had not expected: AI is best at exactly the work that generates technical debt through neglect. Adding the missing tests. Documenting the legacy module. Improving typing. Standardising two hundred near-identical components. Migrating the repetitive API.

Humans skip that work because it is tedious, and the skipping is itself a source of debt. A model does not get bored. Used on those jobs, with someone controlling the scope, AI is a debt reducer — which makes an outright ban a decision with a cost, not a safe default.

8. Stop arguing, start measuring

Two of the three ended in the same place: this is an empirical question, and the debate is unwinnable as a debate.

Fable's version was compact — pick a bounded area, agree the quality metrics up front, run it for a quarter, let the data decide. ChatGPT went considerably further and produced a full pilot proposal unprompted: two to three sprints, a defined scope, guardrails, and a metrics table comparing AI-assisted work against a historical baseline — cycle time, PR review comments, rework within 30 days, defects found in QA, escaped production defects, code churn, incidents, coverage, complexity warnings.

Its framing of the outcome is the part I keep coming back to:

If AI gives you 30–50% faster delivery but creates three times the defects, your colleagues have a strong argument. If delivery gets substantially faster and defect rates remain unchanged, the "AI slop" claim becomes much harder to defend.

That is a proposal both sides of my argument can sign, because it can lose.

Where they actually differed

Three things only one model said, each worth keeping.

Only ChatGPT defined failure. Alongside the success criteria it wrote an explicit list of what would prove the sceptics right — significantly higher production defect rates, repeated architectural inconsistencies, rework shortly after merge, ballooning reviewer effort, more security findings, and developers unable to explain the code they shipped. If those show up consistently, restrict AI usage or strengthen the controls. A pilot that cannot fail is marketing, so this is the most intellectually honest move in all three transcripts.

Only Copilot named the mechanism for conventions. The others said "AI should follow your existing architecture" and left it there. Copilot pointed at the actual artefacts — instruction files (copilot-instructions.md, AGENTS.md) and a durable, checked-in knowledge base of house patterns — as the specific thing that keeps output on-pattern instead of divergent. It had context on a real workspace, which is presumably why it was the only one to get concrete. Context blindness is not a fixed property of the model; it is a thing you are or are not feeding it.

Only Fable named the failure mode of banning it. Its worry was symmetrical: the teams vibing whole features into production, and the teams banning it outright, who "will lose real productivity on boilerplate, tests, and migrations, and their engineers will use it secretly anyway, which is worse." Unsanctioned use is unreviewed use. A ban does not remove AI from the codebase — it removes it from the conversation.

Also worth noting as an absence: Copilot never proposed measuring anything. Its answer is six guardrails and a bottom line, and it is the most immediately actionable of the three — but it asks you to believe the guardrails work rather than to check.

The obvious problem with all of this

I asked three AI models whether AI is dangerous. They said it is fine if you are careful.

That is a conflict of interest, and the convergence is weaker evidence than it looks in three ways. Two of the three models are from the same vendor, so I have two vendors here, not three independent opinions. Where the wording matches almost verbatim — the "fast junior developer" analogy, which all three reached for unprompted — that may be agreement on the merits, or it may be that they were trained on the same body of blog posts making the same argument. And Fable claimed "studies and plenty of postmortems" back up the point about defect rates in lightly-reviewed AI code, without naming one. I have not chased that down, and until I do it is an assertion, not a citation.

None of which makes them wrong. It does mean the honest summary is: three models trained on overlapping data agreed on a position that the internet broadly holds. The pilot is what would turn that into evidence about our codebase, which is the only evidence that settles our argument.

My take

AI code assistants make my professional life easier. They increase my productivity, help me deliver faster, and clear up my schedule, allowing me to focus on the bigger picture.

Instead of investing my time in writing the same things over and over again, I can guide my AI coding assistant to create the artifacts I need to get the job done. I'm still solely responsible for the output it produces, and I'm the one deliberately putting my name on it.

Choosing the right tool for the task at hand and automating repetitive work are both part of what I try to do every day. For me, an AI coding assistant has become one of the best tools for this kind of work — not because it replaces my role, but because it helps me spend more of my time on the work that actually requires my attention.

Where this leaves the argument

The three transcripts do not settle anything, and I do not think they were ever going to. What they did do is move the disagreement to somewhere it can actually be resolved.

Nobody in my team is arguing for merging code nobody understands, and nobody is arguing that review and tests should be optional. Once you strip out the framing, both sides already agree on the author rule, on the quality gates, and on the gradient. What is genuinely in dispute is a number — whether AI-assisted work on our codebase raises the defect rate — and a number is not something you win by arguing louder.

So the next step is the boring one. Pick a bounded scope, agree the metrics before starting, let the sceptics write the failure criteria, and run it for two sprints.

If they are right, the data will say so.

If you want to get in touch and hear more about this topic, feel free to contact me on or via .

© 2026 Andrei Bodea

Privacy policy

Privacy Policy

Last Updated: 2026-08-11

Thank you for visiting Compiled Thoughts (the “Blog”). We value your privacy and want to clarify how we handle any information you may provide or that may be collected when you visit this Blog. By accessing or using the Blog, you agree to the terms of this Privacy Policy.

1. Information We Do Not Collect

  • No Analytics or Tracking — We do not run analytics software, tracking pixels, session recording, or any other tool intended to profile visitors or follow them across sites.

  • No Advertisements — Our Blog does not display third-party advertisements and, therefore, does not collect data for advertising or marketing purposes.

  • No Reader Accounts or Subscriptions — Readers cannot create an account or subscribe, so we do not collect or store reader account data. Sign-in exists only for the Blog’s own author, in order to publish content.

  • No Cookies Set By Us — We do not set cookies of our own for any purpose. Please see Section 2 for the third-party services your browser contacts when you visit.

2. Third-Party Services and Automatic Data Collection

The Blog is a static site with no database of readers. However, displaying a page does require your browser to make requests to the services listed below. Those services necessarily receive your IP address, your browser’s user agent, and the address of the page you requested. This happens automatically when you visit, and we ask that you take it into account when reading Section 1.

  • Web Hosting, Netlify — The Blog is hosted by Netlify, which serves every page and may retain standard server logs, including IP addresses, for operational and security purposes.

  • Typefaces, Google Fonts — Every page loads fonts from fonts.googleapis.com and fonts.gstatic.com. As a result, Google receives your IP address and user agent when you visit. We do not use Google Analytics or any other Google advertising or measurement product.

  • Netlify Identity — The home page loads a login widget from identity.netlify.com. It exists solely so the author can sign in to publish, it offers nothing to ordinary readers, and it is not used to identify you. Your browser requests it regardless, and the widget may use your browser’s local storage to hold a sign-in session.

We do not control what these providers log or how long they retain it. Please consult their own privacy policies if that matters to you.

3. Voluntary Information

If you choose to contact us directly (for example, through an email link or contact form, if provided), we may receive personal information such as your name or email address. In such cases:

  • We will use this information solely to respond to your inquiry.

4. No Third-Party Data Sharing

Beyond the automatic requests described in Section 2, we do not share, sell, rent, or otherwise disclose personal information to third parties, because we do not collect or store any personal information about readers. In the event you voluntarily submit personal data (e.g., via direct email), we do not disclose that to any external entity.

5. Children’s Privacy

Our Blog does not target or direct content specifically to children under the age of 13. We do not knowingly collect or maintain personal information from children under 13. If you believe we may have inadvertently received personal information from a child under 13, please contact us immediately so we can delete such information.

6. External Links

Our Blog may contain links to external websites about programming, interviewing, music, books, psychology, or other related content. We are not responsible for the content, privacy policies, or practices of any third-party sites. We encourage you to review the privacy policies of those websites before interacting with them or providing any personal information.

7. Security

Although we do not collect or store personal data on our servers, we still endeavor to use reasonable security measures to protect the Blog’s integrity. However, no data transmission or storage system can be guaranteed to be 100% secure. Your use of the Blog indicates you understand and accept any inherent risks.

8. Changes to This Privacy Policy

We may update or modify this Privacy Policy from time to time to reflect changes in our practices or for other operational, legal, or regulatory reasons. If we make any material changes, we will update the “Last Updated” date at the top of this document. Your continued use of the Blog after any changes signifies your acceptance of the revised Privacy Policy.

9. Contact Us

If you have any questions or concerns about this Privacy Policy, please reach out using the email address in the header of the page.

By using Compiled Thoughts, you acknowledge that you have read, understood, and agree to this Privacy Policy.