Post

Stop Generating, Start Thinking: The Missing Layer in AI Coding

Stop generating, start thinking

🤔 Curiosity: Are we outsourcing the part that matters most?

I love tools that accelerate development, but I’m uneasy with one trend: replacing thinking with generation. The Localghost essay “Stop generating, start thinking” captures that unease sharply. It argues that the most dangerous failure mode of AI coding isn’t bugs—it’s eroding the act of engineering judgment.

Question: How do we use AI assistants without giving up the responsibility of reasoning about our systems?


📚 Retrieve: What the essay is really saying

1) “Spicy autocomplete” is fine. Blind generation isn’t.

The author has used Copilot and Claude as autocomplete + debugging aids, but finds that “clever” prompts often cost more time than writing the code directly. The tension isn’t about tools—it’s about misplaced effort.

2) The Industrial Revolution analogy is misleading

Yes, this is a productivity revolution. But unlike mechanisation—which produces consistent, inspectable outputs—LLM outputs are non‑deterministic and opaque. The comparison breaks down when you need accountability.

3) LLMs don’t reason; humans must

The essay’s central critique: if humans stop thinking and LLMs can’t think, nobody is thinking. This is how brittle systems happen. The Horizon scandal is used as a painful reminder: software failures have real human cost.

4) “Human centipede epistemology”

We trained models on mediocre code, and now they generate more of it—creating a self‑reinforcing cycle of low‑quality output. The author calls this out as a cultural problem, not just a technical one.

5) Trust is diluted in AI‑generated PRs

A PR written by a teammate carries human intent. A PR written by an agent often doesn’t. When we generate code and let one reviewer approve it, we remove an entire layer of shared context.


💡 Innovation: How I’d operationalize this in real teams

1) Split “generation” from “design thinking”

I treat agents as implementation accelerators, not decision‑makers.

graph LR
  A[Human Reasoning] --> B[Agent Implementation]
  B --> C[Human Review + Tests]
  C --> A

2) Require intent in PRs

If AI helped generate code, the PR must still answer:

  • Why is this change needed?
  • What tradeoffs were considered?
  • What tests validate it?

3) Use agents for tasks you already understand

This aligns with Mikayla Maki’s advice: treat agents like an external contributor you don’t fully trust. If you can’t explain the change, you shouldn’t ship it.

4) Keep the pair‑programming effect

AI should behave like a pair, not a replacement. That means two minds still need to reason—one human, one agent, with explicit checks.


Practical guardrails (what I’d actually enforce)

GuardrailWhy it mattersImplementation
“Reasoned PR” requirementForces intent, not just outputPR template with decisions + tests
Agent scope limitsAvoids architectural driftOnly allow agents in scoped modules
Review debt trackingAI output still needs human clarityTrack review time per AI PR
“No black‑box merges”Prevents blind approvalsRequire a second human reviewer

Where this lands for game development

In games, the temptation to “vibe code” is huge—rapid prototypes, live‑ops pressure, short timelines. But games are systems of constraints (performance, accessibility, fairness, economy balance). Those constraints require human reasoning.

AI should accelerate the boring parts, not replace the thinking parts.


Key Takeaways

InsightImplicationNext Steps
LLMs generate, they don’t reasonHumans must own system thinkingEnforce intent in PRs
Generation without thinking reduces accountabilityBugs become cultural issuesBuild guardrails + reviews
AI‑generated PRs erode shared contextTeams lose “two pairs of eyes”Pair with explicit reasoning

New Questions

  • Can we quantify “thinking debt” in AI‑generated codebases?
  • What would a CI pipeline look like that checks for intent, not just tests?
  • How do we teach juniors to think if they never write from scratch?

References

  • Source essay: https://localghost.dev/blog/stop-generating-start-thinking/
  • Human‑in‑the‑loop take: https://zed.dev/blog/on-programming-with-agents
This post is licensed under CC BY 4.0 by the author.