← Back to Blog
Slow AI: Why You Should Use LLMs to Code More Slowly
Development

Slow AI: Why You Should Use LLMs to Code More Slowly

Published

ai-codingllm-reviewsoftware-engineeringdeveloper-tooling

The industry is currently obsessed with AI velocity. The marketing promise is simple: generate more code, faster, with fewer keystrokes. But for practitioners, this "vibe coding" approach often leads to a maintenance nightmare. When you use AI to sprint, you're usually just accelerating the rate at which you accumulate technical debt.

There is a more disciplined alternative: using AI to write better code more slowly. Instead of treating Large Language Models (LLMs) as code-generation engines, senior engineers are beginning to use them as high-precision auditors and refactoring partners. By shifting the focus from output volume to review rigor, you can use AI to identify edge cases, catch silent failures, and deepen your own understanding of the codebase. The goal isn't to ship more lines of code; it's to ensure that every line you do ship is earned.

Key Takeaways

  • Multi-Model Consensus: Reviewing a single diff with 3+ models (e.g., GPT-4o, Claude 3.5 Sonnet, Gemini 1.5 Pro) dramatically reduces false positives and surface-level errors.
  • Design Before Generation: Drafting a solution architecture before prompting prevents the AI from leading you down suboptimal implementation paths.
  • AI as a Multiplier: AI tools multiply existing domain expertise; they do not replace the need for fundamental language proficiency (JavaScript, Python, PostgreSQL).
  • High-Fidelity Context: Providing specific file paths, database schemas, and existing dependency versions is the only way to get production-grade output.

The Fallacy of AI Velocity

Most developers use AI to bypass the tedious parts of coding. While this improves short-term productivity, it creates a "black box" effect where the developer doesn't fully grasp the logic they've just merged. Nolan Lawson argues that the real value of LLMs lies in their ability to act as an adversarial reviewer.

When you use AI to "code slowly," you are intentionally inserting friction into the development cycle. This friction—composed of multi-model audits and manual refactoring—forces a deeper engagement with the code. Instead of accepting the first iteration, you use the AI to find bugs and prioritize them, treating the model as a senior pair programmer rather than a junior clerk.

The Multi-Model Review Mechanism

A single LLM has blind spots. It might miss a race condition in a Node.js worker or a subtle SQL injection vulnerability in a Python script. However, the probability of three distinct models missing the same edge case is significantly lower.

Lawson’s approach involves feeding the same code snippet or diff to multiple models and asking them to find bugs.

Feature Vibe Coding (Fast) Engineering with AI (Slow)
Primary Goal Feature completion Code correctness and maintainability
Model Usage Single model, first response Multi-model consensus (Claude/GPT/Gemini)
Context Shallow or open-ended prompts High-fidelity (Schemas, API docs, Configs)
Result High technical debt risk Deeper codebase understanding
Focus Generating new lines Reviewing, testing, and refactoring

This "Slow AI" workflow transforms the developer's role from a writer to an editor-in-chief. You spend less time typing and more time weighing the critiques of different models against one another.

Prompt Specificity and Design Patterns

High-quality output is a direct result of high-fidelity input. Research into AI coding patterns shows that general, open-ended prompts are the primary cause of developer frustration. To build production-grade systems—especially when working with databases like PostgreSQL or popular frameworks—you must design the solution before involving the AI.

The Importance of Human Foundations

AI is a multiplier, not a substitute. If your skill level in a language is a 0, the AI's multiplier effect remains 0. Practitioners who have spent 500+ hours with these tools consistently report that the best results come when the human provides the architectural guardrails.

For example, if you are building an automation in n8n or a custom backend service, you should specify:

  • The exact API endpoints being hit.
  • The specific error-handling strategy (e.g., exponential backoff).
  • The expected data schema at each transformation step.

The Practical "Slow AI" Workflow

To implement this in your daily routine, move away from "chat-and-paste" and toward a structured audit pipeline.

Step 1: Architect the Solution

Before opening a chat interface, write out your logic in pseudocode or a markdown file. Define the inputs, the expected side effects, and the edge cases you're already aware of.

Step 2: Context-Rich Generation

Prompt your primary model (e.g., Claude 3.5 Sonnet) with the architecture.

{
  "context": "Refactoring a TypeScript service for Stripe webhooks.",
  "constraints": ["No external libraries for validation", "Must handle idempotent keys", "PostgreSQL 15 compatible"],
  "files": ["/src/types/stripe.ts", "/src/db/client.ts"]
}

Step 3: The Cross-Model Audit

Take the generated code and run it through a different model (e.g., GPT-4o). Use a prompt specifically designed for critique: "I have generated this implementation for a Stripe webhook handler. Find three potential failure modes related to concurrency and data integrity."

Step 4: Refactor and Test

Integrate the feedback. Use the AI to automate the tedious parts of this phase—such as writing unit tests or documentation—allowing you to focus on the core logic and security implications.

Common Pitfalls in AI-Assisted Coding

  • Blind Trust: Assuming the code is correct because it runs. Slow AI requires you to verify the logic, not just the execution.
  • Context Leakage: Providing too much irrelevant code, which can lead the model to hallucinate or miss the specific logic you're trying to refine.
  • Ignoring the Drudge Work: Many developers use AI for the "fun" parts (new features) and ignore it for the "boring" parts (refactoring, testing). The latter is actually where AI provides the most value for code quality.

Frequently Asked Questions

Doesn't coding more slowly defeat the purpose of AI?
No. The goal is to maximize the value of the human-hours spent. If you code 2x faster but spend 4x more time on debugging and maintenance later, you've lost. Slow AI focuses on getting it right the first time.
Which model is best for reviewing code?
Currently, Claude 3.5 Sonnet is highly regarded for logic and reasoning, while GPT-4o excels at broad architectural advice. Using both in tandem provides a comprehensive safety net.
Is using AI to find bugs 'cheating'?
It is no more cheating than using a linter, a compiler, or a static analysis tool. It is an augmentation of your ability to see flaws in complex systems.
How do I handle sensitive codebases?
Use self-hosted LLMs or enterprise-grade versions with data privacy guarantees. The 'slow' approach actually gives you more time to sanitize prompts and ensure sensitive logic isn't leaked.

Implementing a "Slow AI" strategy is a transition from being a consumer of AI-generated content to being an engineer who uses AI as a precision instrument. By prioritizing rigor over velocity, you'll build systems that are more resilient and easier to maintain.

If you're looking to integrate these rigorous AI workflows into your business operations or need help building secure, automated pipelines, reach out to the team at AImatic at hello@aimatic.dev.

Nolan Lawson: Using AI to write better code more slowly The Case for Using AI to Write Better Code More Slowly Lobste.rs Discussion: Using AI to Write Better Code More Slowly AI Coding 101: Ultimate Prompt Guide (37 tips) THIS Is How You ACTUALLY Use AI For Programming I Have Spent 500+ Hours Programming With AI: Lessons Learned

Related Posts