A blog post proposing that developers manually retype every line of LLM-generated code, rather than let the agent write it directly, hit 409 points and 348 comments on Hacker News — and split the room almost exactly down the middle. Ankur Sethi's argument: using an AI coding assistant to one-shot features leaves him "disoriented," but reviewing hundreds of lines of AI-generated PRs isn't fun either, so he now instructs his coding agent to show every edit in chat and types each one into his editor by hand.
The reaction ranged from "this is basically how I learned to code from magazines" to "you've just reinvented copy-pasting with extra steps, and thrown away the actual point of the tool."
TL;DR — what people are asking
| Question | Direct answer |
|---|---|
| What's the actual workflow? | Configure the agent to never edit files directly; it proposes changes in chat, the developer manually types each one into the editor |
| What problem is it solving? | "Cognitive debt" — shipping code you can't explain, debug, or extend without going back to the AI |
| Does retyping alone build understanding? | Contested — HN's strongest critics say mindless retyping teaches little more than copy-paste; supporters say the act of typing forces you to notice inconsistencies |
| How much slower is this? | Sethi estimates ~2x faster than no AI at all, versus "10x" claims for full agentic delegation |
| What do critics suggest instead? | Chat-only review without retyping, writing your own design and delegating implementation, or reviewing diffs line-by-line before accepting |
| Is this specific to one tool? | No — the same tension applies to Claude Code, Codex, Cursor, or any agent that can directly write to your files |
The proposed fix: never let the agent touch files
Sethi's AGENTS.md-style instructions boil down to three rules: the agent must never create, edit, move, rename, or delete files without explicit request; it must show every proposed edit and command in chat instead; and it should skip explaining syntax or basic concepts since he's an experienced developer asking for help with the boring parts, not a tutorial.
His reasoning follows a pattern familiar to anyone who learned to program from books: "if I was learning from a book, I was advised to copy all the examples into my computer and make sure I could run them." Manually retyping forces him to slow down enough to notice a bad variable name, a subtly wrong assumption, or an API he doesn't recognize — the same moments a fast accept-and-move-on workflow skips past.
He's explicit about the tradeoff: not 10x faster than coding without AI, but roughly 2x, in exchange for what he calls a deeper understanding of his own codebase. That framing lines up with our own 2x, not 10x coding with LLMs analysis of realistic AI productivity gains versus the marketing numbers.
Why Hacker News pushed back this hard
The top critical comment cut straight to the mechanism: "if your workflow is think hard, let LLM write it, read what AI wrote, think hard about what AI wrote, re-type what AI wrote, fix what AI wrote — where are the efficiency gains? Couldn't you just drop the LLM part and save the tokens?" That objection landed because it exposes a real gap in the proposal: retyping something is not the same cognitive act as generating it, and several commenters pointed out that typing on autopilot — the exact failure mode students hit copying lecture notes verbatim — produces little retention at all.
A second, more constructive thread argued the underlying goal (comprehension) doesn't require the specific mechanism (retyping). Suggested substitutes included:
- Chat-only mode without retyping — read the proposed diff carefully, ask clarifying questions, and paste it in yourself only when you understand it, skipping the mechanical act of transcription.
- Design-first delegation — write the architecture, function signatures, and data flow yourself; let the agent fill in implementation, so the parts that matter most for maintainability stay yours.
- Active review over passive retyping — treat every AI-authored PR the way you'd review a colleague's, asking "why this approach" before accepting, rather than either blind acceptance or mechanical transcription.
- Testing as ground truth — write failing tests before asking the agent to fix a bug, so correctness is externally verified instead of relying on your read-through catching every issue.
The deeper disagreement: what actually causes skill atrophy
Underneath the retyping debate is a genuine, unresolved question that shows up across recent AI-and-cognition research: does using an LLM to write code erode a developer's own skill, and if so, what specifically causes it? Our coverage of the PsyArXiv study on AI advice and cognitive surrender found that heavy reliance on AI answers measurably reduces people's willingness to say "I don't know" and sit with uncertainty — a pattern that generalizes uncomfortably well to developers who stop pausing to actually understand a stack trace once an agent can just fix it.
The commenters most skeptical of full agentic delegation made a related point: reviewing AI-generated code is a different, and often less rewarding, skill than writing it, and many developers simply aren't doing the review carefully because the pressure is to ship, not to understand. That's less an argument for retyping specifically than for building deliberate friction — of some kind — back into a workflow that's otherwise optimized to remove it entirely. It's the same failure mode our AI-driven de-skilling analysis documents: developers who ship features they can't debug, because the debugging muscle never got used.
What actually seems to work, according to the thread
Reading past the retyping debate itself, a few practices got broad agreement even from critics of Sethi's specific method:
- Plan before you delegate. Multiple commenters described using the agent to draft a plan first, reviewing and revising that plan themselves, and only then letting the agent implement — separating the "what should happen" decision (kept human) from the "type the characters" step (delegated).
- Use the AI as a rubber duck, not just a generator. Asking "is there anything I'm missing" before implementation catches design issues earlier and cheaper than reviewing finished code.
- Constrain scope aggressively. Several developers reported success asking for small, single-file, easily reviewable changes rather than sprawling multi-file features — closer to reviewing a colleague's small PR than auditing a 1,000-line drop.
- Match the friction to the stakes. Nobody in the thread argued for retyping boilerplate or test scaffolding — the debate was specifically about code you need to own and maintain long-term, versus disposable or well-covered code where speed matters more than deep comprehension.
The honest bottom line
Sethi's retyping ritual is a real, if extreme, data point in a much bigger conversation the AI coding world hasn't settled: how much friction should you deliberately keep in a workflow that's designed to remove it? The mechanism he chose is contestable — HN's critics have a fair point that mindless transcription isn't automatically comprehension. But the underlying instinct, that unreviewed AI output creates debt you'll eventually have to pay down in the exact moment you can least afford it (a 3am incident, an unfamiliar stack trace, a security review), is hard to argue with.
Why "just review the diff carefully" isn't automatically enough
A frequent rebuttal in the thread was some version of "I don't need to retype it, I just read every diff carefully before merging." That's a reasonable practice, and better than blind acceptance — but several commenters pointed out a subtler problem with relying on review alone: reading code and being able to reproduce or debug it from memory are genuinely different cognitive tasks. It's the same gap language learners hit between recognition and recall — you can read a sentence in a foreign language and understand it fluently while still being unable to produce that same sentence unprompted. Passive comprehension while reading a diff doesn't reliably transfer into active recall six weeks later when a bug report comes in and you need to locate the relevant code without an AI's help.
This is why some of the more experienced commenters converged on a middle position: review is necessary but not sufficient, and the missing ingredient is usually testing your own understanding, not just reading. Concretely, that means being able to answer "what would happen if I changed this constant" or "why didn't we just use the existing retry helper here" without going back to the model — the same kind of probing questions Tao asks an AI about mathematics apply equally well to a developer interrogating their own accepted code.
The generational angle nobody in the thread wanted to say out loud
A quieter but recurring worry running through the comments was about junior engineers specifically, not senior developers using AI as an accelerant. Several team leads described new hires who could ship tickets quickly with AI assistance but, months in, still struggled with fundamentals they'd never had to internalize because the model always caught it first. That's a different failure mode than Sethi's personal cognitive-debt concern: it's not about one experienced developer choosing to slow down for their own side projects, it's about an entire cohort of engineers potentially never building the debugging instincts that used to come from years of manually chasing down bugs without an AI safety net.
Whether retyping code specifically fixes that problem is genuinely contested. But the broader instinct — that some deliberate friction needs to exist somewhere in a junior developer's early years, whether that's retyping, writing tests first, or working through a bug without AI assistance at least some of the time — has much stronger consensus than Sethi's specific method does.
Related on explainx.ai
- 2x, not 10x: realistic coding gains with LLMs
- AI-driven de-skilling: why vibe coding produces developers who can't debug
- AI advice and cognitive surrender: the "I don't know" study
- Why LLMs reward expertise more than "good prompting"
- Ethan Mollick: prompting is a science of specs, not tricks
- AI demo to production: the final 10% of the dev cycle
- What is loop engineering?
Primary source: Ankur Sethi, "Prevent cognitive debt by manually retyping LLM-generated code," ankursethi.com · Hacker News discussion thread
This article reflects the essay and discussion as published through August 4, 2026.
