Stop Using AI as a Crutch: The "Manual First" Coding Philosophy
The industry is currently obsessed with velocity, and LLMs are the ultimate accelerants. However, there is a hidden tax on developer growth when we outsource our critical thinking to a prompt. After spending a year integrating Copilot and GPT-4 into my daily workflow, I noticed a disturbing trend: my ability to debug complex state issues was plummeting because I was skimming code I didn't actually write.
To fix this, I implemented a "Manual First" rule. The premise is simple: pretend the AI doesn't exist until the architectural logic is solved.
The danger of AI-generated code isn't that it's always wrong; it's that it's often "mostly right." When you accept a suggestion that solves a problem but introduces a subtle memory leak or a race condition, you aren't learning how to solve that problem—you're learning how to trust a black box. I found myself falling into the "Accept Tab" loop, where I would iterate through five different AI suggestions without ever reading the documentation for the underlying library.
To break this, I shifted my workflow to a strict three-stage pipeline:
1. The Logic Phase: I map out the data flow and edge cases in a markdown file or on a whiteboard. No IDE, no AI.
2. The Implementation Phase: I write the core logic manually. If I hit a syntax wall or need a boilerplate pattern, I use the AI, but I force myself to rewrite the suggested block from scratch rather than hitting "Accept."
3. The Optimization Phase: Only now do I feed the completed function into an LLM to ask for complexity analysis or potential edge cases I missed.
The results were immediate. When I stopped letting the AI dictate the structure, I stopped encountering those "ghost bugs" that take four hours to solve because you didn't actually understand the variable scope of the generated code. For example, I recently dealt with a recurring TypeError: Cannot read properties of undefined in a React useEffect hook. Previously, I would have pasted the error into GPT and blindly applied the suggested optional chaining. By forcing a manual approach, I realized the issue wasn't a missing check, but a fundamental flaw in how my dependency array was triggering unnecessary re-renders.
If you feel your skills plateauing, try stripping away the autocomplete for a week. Focus on the "why" before the "how." Use the AI as a senior reviewer who critiques your finished work, not as a junior dev who writes your first draft.
The goal isn't to reject the tool, but to ensure that you remain the primary architect of your system. If you can't explain every line of your PR without saying "the AI suggested it," you aren't the one coding—you're just a glorified editor.
All Replies (5)
Frustrating that we can't trust the sources. How many of these claims are actually verified?
Terrifying how easy it is to fake expertise. How do you actually vet a junior who uses LLMs for everything?
This hit home. How many hours did you waste on those shallow docs before finally breaking something for real?
This sounds like my daily struggle with StackOverflow. Do you actually remember how your curated snippets work?
This is the key part. Which specific frameworks are easiest to learn by reverse-engineering?