Tomorrow’s Tech, Today: Innovation That Moves Us Forward
- Use the Manual Retyping workflow: ask the LLMs to show edits, then type every line yourself to preserve understanding.
- Typing forces slowdown, helping detect hallucinations, refactor, and adapt code to your project's conventions.
- Manual typing builds a spatial map of the codebase, reducing cognitive debt and easing maintenance, security, and future changes.
- Set clear system prompts, use chat to preview edits, type deliberately, ask questions, and document changes as you adapt code.
We’re living through a curious paradox in software development. Coding assistants powered by large language models have made it easier than ever to generate code quickly. Yet many developers report feeling more disoriented and less satisfied with their work than ever before. The culprit? Cognitive debt — the accumulation of incomplete understanding that compounds over time, making future changes increasingly difficult and error-prone.
Using LLMs to one-shot entire features leaves developers unsatisfied and disoriented. While these tools can fast-forward through boring parts of projects, allowing them to roam free creates a colossal amount of cognitive debt. You might hate the idea of poring over documentation to figure out how to implement a feature, but you still fundamentally want to understand how it works. Just because a problem is boring doesn’t mean you want to fully offload your understanding to a machine.
The Review Problem
The conventional wisdom suggests that developers should review every line of code that LLMs produce. This is what most developers are expected to do in 2026: robots raise pull requests, humans review them. It’s a brave new world, or so we’re told.
But here’s the uncomfortable truth: reviewing AI-generated pull requests is not fun. Poring over hundreds of lines of overly-defensive, badly-commented, subtly incorrect code is tedious and error-prone. Most developers would grudgingly do it for an employer — while making sure that employer becomes an ex-employer as soon as possible — but few would voluntarily do it for personal projects. Personal projects must be fun above all else, and the joy of working on them comes from the process, not just the outcome.
So what’s a developer to do? How can you offload boring work to LLMs without ceding control of your own work and cognition to the “slop machine”?
The Solution: Manual Retyping
One developer has come up with a solution that’s grossly inefficient and perhaps slightly comical: ask the coding assistant to generate code in the chat, then manually make all the edits yourself.
This approach involves giving the LLM explicit instructions:
I want to understand every line of code that goes into this project. Never create, edit, move, rename, or delete project files unless I explicitly ask you to do so. Instead, show me every proposed edit in the chat so I can type it in manually.
Do not run commands that modify project files, install dependencies, or change repository state unless I explicitly request that action. Instead, show me those commands in the chat so I can run them manually.
I’m an experienced developer. Do not explain syntax, APIs, programming concepts, or implementation details unless explicitly asked.
This workflow allows developers to work faster than not using LLMs at all, but slower than those willing to let the machine think for them. Instead of being 10x faster, you’re probably only 2x faster. But what you lose in speed, you gain in understanding.
Why Manual Retyping Works
As you manually type every single line of LLM-generated code into your editor, you build up a mental model of how it works and how it fits into your existing codebase. If you don’t understand an API or algorithm, you can stop to look it up, or ask the LLM to explain it. This forced slowdown has several benefits:
Detection of Hallucinations
Typing the code yourself forces you to slow down, which means you’re more likely to detect hallucinations or bad design choices the LLM might have made. You can catch these errors before they become part of your codebase.
Code Cleanup and Adaptation
You can clean up the code as you go, reorganizing it, refactoring it, adding comments, and generally adapting it to your own taste and coding standards. This ensures that the code reflects your project’s conventions and style.
Building a Spatial Map
Most importantly, this workflow allows you to build a spatial map of your codebase. You know where every bit of functionality lives. When you need to make a change, you know exactly where to make it. This not only helps you work faster within your projects, it also makes it easier to better prompt and instruct the LLM in the future.
A Lesson from Programming History
This approach echoes advice that experienced programmers have given for decades. When learning to code, you were often advised to never copy and paste code into your projects. If you were learning from a book, you were advised to type all the examples into your computer and make sure you could run them. If you were learning from a blog post or forum answer, you were advised to type it out and adapt it to your codebase so you understood it completely.
Manually typing LLM-generated code into your codebase feels like the exact same learning process. It might not be the most efficient way to work with an LLM, but it prioritizes comprehension over productivity.
The Efficiency Question
Some might ask: where are the efficiency gains if you’re spending time retyping code? The answer lies in understanding what efficiency really means. Yes, you’re slower than someone who just accepts whatever the LLM produces. But you’re faster than someone who writes everything from scratch, and more importantly, you maintain understanding of your codebase.
The real efficiency gains come from:
- Faster iteration: Because you understand your code, you can make changes more quickly
- Fewer bugs: Understanding your code means fewer subtle bugs slip through
- Better design decisions: You can guide the LLM toward better solutions because you understand the problem domain
- Easier maintenance: Future changes are faster because you know where everything is
- Better collaboration: When you need to explain your code to others, you can do so clearly because you understand it
The Cognitive Debt Problem
The software industry is taking on a large amount of cognitive debt that we’ll have to pay back very soon. There will come a time when we no longer understand how large parts of our digital infrastructure are put together. This is a serious problem.
Consider the implications:
- Security vulnerabilities: Code you don’t understand is harder to secure
- Performance issues: You can’t optimize code you don’t understand
- Maintenance burden: Future developers will struggle with code that has no clear logic or design
- Technical debt: Misunderstandings compound over time
- Knowledge loss: When developers leave, critical knowledge leaves with them
Practical Implementation
If you want to try this approach, here’s how to get started:
- Set up your LLM instructions: Create a system prompt or agent file with clear instructions about your workflow
- Use a chat interface: Keep the LLM in a chat window where you can see the proposed changes
- Type deliberately: As you type each line, think about what it does and why it’s there
- Ask questions: If something doesn’t make sense, ask the LLM to explain it
- Adapt as you go: Feel free to modify the code as you type it
- Document your changes: Add comments explaining the logic
The Broader Implications
This approach represents a middle ground between two extremes:
- Full automation: Letting the LLM write and deploy code without human understanding
- No automation: Writing all code manually without LLM assistance
The middle ground — using LLMs as a thinking partner while maintaining human understanding — may be the most sustainable approach for long-term software development.
Conclusion
The temptation to let LLMs handle all the coding is understandable. But the cost of cognitive debt is too high. By manually retyping LLM-generated code, you maintain understanding of your codebase while still benefiting from the speed and creativity of AI systems.
This workflow might not be the most efficient in the short term, but it’s the most professional in the long term. You can’t change the course of the entire industry, but you can at least make sure you completely understand the software you put out into the world. Anything else would be professional malpractice.
The future of software development won’t be about choosing between human coding and AI coding. It will be about finding the right balance — using AI to augment human capability while maintaining the understanding that makes us effective developers. Manual retyping of LLM-generated code might seem inefficient, but it’s actually an investment in your own expertise and your project’s long-term health.
In case you have found a mistake in the text, please send a message to the author by selecting the mistake and pressing Ctrl-Enter.
Read the full article on the original site

