Using AI to write better code more slowly
Nolan Lawson (Read the Tea Leaves) ยท article ยท 2026-05-25 source โ Reader ๐ฅ๏ธ
AI SlopCode Was Never the BottleneckCode QualityCognitive DebtMulti-Agent OrchestrationPull Requests & Async Code ReviewVibe Coding
LLMs are flexible enough to produce either fast, unvetted slop or slower, carefully reviewed and understood code, and deliberately choosing the latter โ running multiple different models to hunt for bugs, personally validating and triaging what they find, and refusing to ship a PR you don't fully understand โ is a better way to use AI for programming, even without a velocity payoff.
practical ยท mixed โ Primarily argumentative (rebutting the 'AI coding means slop' framing) and expository (describing a concrete personal workflow), with a few first-person anecdotal beats functioning as evidence rather than storytelling for its own sake.
Structure
| Part | Role |
|---|---|
| Opening rebuttal (paras 1-3): names the 'ship AI slop fast' mentality and asserts LLMs can just as effectively produce high-quality code slowly. | thesis statement |
| Mythos/bug-finding context (paras 4-5): LLM agents are already good enough at finding bugs that the bottleneck has shifted. | evidence / premise-setting |
| The adapted skill (paras 6-9): run several different reviewers (Claude sub-agent, Codex, Cursor Bugbot), rank findings, do independent research to rule out false positives, write a final report; reports near-zero false positives. | method / central evidence |
| Triage workflow (para 10): fix criticals/highs, skip low-value mediums, abandon misguided PRs. | operationalization of the method |
| Velocity disclaimer and satisfaction claim (paras 11-12): no clear velocity gain; time instead goes to fixing pre-existing bugs and learning the codebase's failure modes; framed as satisfying rather than fast. | concession + reframing of the value proposition |
| Direct address to the 'barely understand the PR' developer (para 13): invitation to slow down, interrogate the PR with the agent, use /grill-me until you understand it front-to-back. | call to action |
| Closing reframing (paras 14-15): reclaims this as a 'super-powered' version of pre-LLM careful, methodical programming; closing exhortation. | conclusion |
Key terms
- slop cannon
An LLM used purely to mass-produce low-quality, barely-passable code that is shipped in large PRs without real scrutiny. - vibe coding Vibe Coding
Stretched/reclaimed by Lawson to describe his own slower, carefully-reviewed style of AI-assisted coding ('this other, slower style of vibe coding') โ the opposite of its usual sense. - juice isn't worth the squeeze
A cost/benefit heuristic for skipping medium- or high-severity findings whose fix would cost disproportionately more effort than the bug's real impact (e.g., 100 lines of code for a narrow edge case). - prioritizing and validating
The author's name for the actual bottleneck in AI-assisted bug-hunting, as distinct from 'finding' bugs, which he treats as already-solved.
Propositions
- explicitLLMs are flexible enough to be used just as effectively to write high-quality code slowly as to write low-quality code fast โ 'slop' is a choice of use, not an inherent property of the tool.conf: high
- explicitThe latest public LLM agents from Anthropic and OpenAI are already good enough at finding bugs that repeatedly running them against an unscrutinized codebase will surface more bugs than a team can act on.conf: high
- explicitThe genuine difficulty in AI-assisted bug-hunting is not finding bugs but prioritizing and validating them.conf: high
- explicitRunning several different models (not just one) against a PR review reduces the rate of hallucinated or bogus bug reports.conf: highsupportsAgentic Code Review ยท p10 โ Lawson's named practice (Claude sub-agent + Codex + Cursor Bugbot) is a concrete instance of the heterogeneous-reviewer strategy p10 recommends from measured PR data โ running deliberately different tools rather than agonizing over a single 'best' one.
- explicitcorroboratedRequiring the reviewer to also do independent research to rule out false positives before writing a final report is what makes a multi-model bug hunt trustworthy.conf: highextendsAgentic Code Review ยท p13 โ Lawson's mandatory human-research step to rule out false positives is a concrete answer to the 'borrowed confidence' risk p13 names in a closed same-family model loop โ he supplies the workflow for what keeping a human in the loop actually looks like.supports โGoogle Mantis: An Agentic Vulnerability Scanning Harness for Reducing False Positives ยท p3 โ Both treat independent, structured multi-stage verification โ sandboxed reproduction here, independent research there โ as the mechanism that makes a false-positive-filtering claim trustworthy rather than an unverified LLM assertion.
- explicitThis careful, multi-model review practice has not increased Lawson's shipping velocity; it often turns into fixing pre-existing, unrelated bugs it happens to surface.conf: highrefinesTrust Factory ยท p7 โ Beck's claim that slowing down augmented development is 'the path to actually going faster' is not confirmed by Lawson's own account of running a comparably slower, careful practice โ he explicitly reports no velocity gain and grounds the case for slowing down in quality/satisfaction rather than a speed payoff.
- implicitImproving codebase health and personally understanding a system's failure modes is worth doing with AI assistance independent of whether it improves velocity.conf: mediumsupportsFrom Async Code Reviews to Co-Creation Patterns ยท p15 โ Lawson's description of review-as-a-side-quest that teaches him a codebase's failure modes is a first-person instance of code review functioning as a quality-building, learning-accelerating practice rather than a gate.
- explicitA PR should be actively triaged against a personal severity/effort bar โ fix criticals and highs, skip lower-value findings where the fix cost exceeds the benefit, and abandon the PR outright if the volume of criticals reveals the whole approach was misguided.conf: high
- implicitA developer should not ship or merge a PR โ agent-authored or not โ that they do not fully understand, and should use AI tooling itself to close that understanding gap (ask the agent how the PR works and might fail, generate docs, use /grill-me).conf: high
- implicitReal comprehension of a complex architecture comes from understanding where its assumptions break down (its failure modes), not from its happy path โ true before LLMs and still true with AI-assisted bug-hunting as the new route to that understanding.conf: medium
Arguments
Running multiple different AI models against a PR, combined with independent human validation, produces a near-zero false-positive rate on surfaced bugs while still catching a large volume of real ones. strength: medium
Explicit premises:
- The latest public models from Anthropic and OpenAI are individually good enough to find plenty of bugs in an unscrutinized codebase; some are better than others at avoiding false positives.
- The more, different models thrown at a PR review, the less likely the result is hallucinations or bogus bugs (adopted insight).
- The workflow explicitly requires the reviewer to do their own research to rule out false positives before writing a final report.
Implicit premises:
- Different models fail in largely uncorrelated ways (different vendors, training data, architectures), so their false positives don't overlap while genuine bugs tend to be independently corroborated โ an unstated independence assumption about model error.
- The human doing 'your own research' has the time, skill, and incentive to actually verify each flagged item rather than deferring to the AI tools' severity ranking.
Inferences:
- The technique's reliability depends on genuine model diversity; if the 'different' models converge over time (shared RLHF processes, shared training corpora), the near-zero-false-positive property could quietly erode without Lawson noticing, since his evidence is personal impression across his own PRs, not a controlled or ongoing measurement.
- The token/time cost of running three separate reviewers plus a human validation pass on every PR is never weighed against the value captured โ a resource trade-off the piece's own 'juice isn't worth the squeeze' logic would seem to demand applying to the technique itself, not just to individual bugs.
Developers should deliberately choose a slower, more careful style of AI-assisted coding โ reviewing, understanding, and validating AI output โ over the fast 'slop cannon' style, even without a velocity payoff.
Explicit premises:
- His own experience shows no velocity increase from this method.
- He finds the practice 'very satisfying.'
- The practice is explicitly the opposite of the '10x productivity' slop-cannon style most people associate with AI coding.
Implicit premises:
- Code quality, codebase health, and developer understanding are worth pursuing for their own sake, independent of shipping speed.
- The intended reader is a professional developer with an ongoing stake in a codebase's long-term health, not someone optimizing for a one-off deliverable.
- Personal satisfaction is itself a legitimate reason to adopt a technique, not merely a byproduct of output metrics.
Inferences:
- If quality-focused AI use genuinely doesn't move velocity, this undercuts blanket claims that 'AI coding' as a category delivers large productivity multipliers โ those gains may be concentrated in (or exclusive to) the slop-cannon style that trades quality for speed, meaning any fair comparison of 'AI coding productivity' needs to specify which style is being measured.
Narratives
- The Mythos/non-Mythos bug-finding observation: LLM agents thrown repeatedly at a codebase will find far more bugs than a team can act on.
โ Establishes bug detection as already solved/abundant, clearing the ground for the article's real claim that the bottleneck has moved to prioritization and validation. - The described three-step triage workflow: fix criticals/highs and repeat, skip low-value mediums, abandon the PR outright if criticals reveal the approach is misguided.
โ Makes the abstract 'slow down and validate' thesis concrete and operational rather than merely aspirational. - The recurring 'side-quest': using this review process, Lawson repeatedly ends up fixing pre-existing bugs unrelated to the PR he set out to ship, at no velocity benefit.
โ Implicitly supports the proposition that the practice's value is comprehension and codebase health rather than speed, and normalizes lower velocity as an acceptable, even positive, outcome.
Questions addressed
- โ
Is finding bugs in an AI-assisted (or AI-generated) codebase hard?
No โ current agents are already good enough that bug detection is abundant; the difficulty has shifted downstream. - โ
How do you avoid false positives/hallucinations when using AI to review code?
Run several genuinely different models, then have a human independently research and rule out false positives before finalizing a report. - โ
Is 'AI coding' inherently a fast, careless practice?
No โ argued to be a choice of style the developer makes, not a property of the tool. - โ
Does this slower, careful style pay for itself in higher velocity?
No clear payoff is claimed; the author explicitly reports no velocity increase and reframes the case for the practice around quality, codebase health, and personal satisfaction instead. - โญ What is the actual resource cost (tokens, wall-clock time, context-switching into unrelated pre-existing bugs) of running this technique, and when is it not worth doing?
Gaps
- incompleteNo account of the token, time, or context-switching cost of running three separate reviewers (Claude sub-agent, Codex, Cursor Bugbot) plus a mandatory human validation pass on every PR โ the technique's own economics are never addressed, even though the piece elsewhere insists on juice-vs-squeeze cost/benefit reasoning for individual bugs. When is the multi-model review itself not worth running?
Read next: extract-ai-agents-own-initial-code-draft#g3 raises the identical unaddressed cost-economics question for multi-agent adversarial review generally; pairing the two would sharpen what a real ROI accounting for this class of technique should include. - incompleteThe claim that 'the false positive rate is near zero' is offered as unquantified personal impression โ no numbers, no baseline comparison against single-model review, and no account of how many findings across how many PRs this rests on.
Read next: extract-agentic-code-review#p10's measured study (four tools, 679 findings, 93.4% caught by exactly one tool) is the kind of dataset that would let this specific claim be tested rather than taken on faith. - illogicalLawson labels his own practice 'this other, slower style of vibe coding' while this corpus's canonical definition of the term (Fowler) is specifically *not looking at the generated code* โ the direct opposite of Lawson's practice of reading every AI-review finding and demanding full comprehension of a PR 'front-to-back.' The piece never acknowledges this tension, muddying exactly the careful-review-vs-unreviewed-generation distinction it is trying to draw.
Read next: extract-fowler-bliki-vibe-coding#p1 and #p9 (conceptual hygiene between vibe coding and agentic programming) directly bear on this terminological collision. - incompleteThe technique presupposes a developer experienced enough to triage severity-ranked findings, judge 'juice vs. squeeze,' and independently research away false positives. The piece never addresses whether a less experienced developer could run this same workflow without simply rubber-stamping whatever ranked list the tools produce.
Read next: This corpus's material on code review as a skill-formation mechanism for junior engineers (extract-charity-majors-stop-being-skeptical-ai-development#g2) raises the same unaddressed question from the other direction.
Closes gaps elsewhere
- 20 Loop Design Patterns Every AI Engineer Should Know ยท g6 โ That gap calls for 'a human or a genuinely out-of-distribution evaluator, not more same-family model-judges' as the corrective to stacked-critic 'borrowed confidence.' Lawson's actual workflow is exactly this: three genuinely different, cross-vendor reviewers (Claude sub-agent, OpenAI's Codex, Cursor's Bugbot) plus a mandatory independent human research pass before any finding is trusted โ not a closed loop of same-family model-judges reaching unverified consensus.
Related documents
- From Async Code Reviews to Co-Creation Patterns
- Trust Factory
- Agentic Code Review
- Cognitive Surrender
- Presentation: The Multi-Agent Approach: Building Reliable and Controllable Software Development Automation
- When AI Writes Almost All Code, What Happens To Software Engineering?
- Who cleans up after the vibe-coding party?
- The 8 software engineering metrics AI broke
- Agentic AI and Code Reviews
- AI coding creates two kinds of debt. You're only measuring one