Iâve been skeptical about AI coding tools for years. As someone who spent five years at Glitch watching people learn to codeâreally learn, from scratch, making mistakes and understanding whyâthe idea of tools that âwrite code for youâ felt like it missed the point.
But Iâve been using AI agents daily for a few months now, and Iâve changed how I think about it. Not about the importance of understanding, if anything, I believe in it more than ever. What Iâve changed my mind about is what these tools actually are.
Mikayla Maki at Zed (my fav IDE!) wrote a fantastic post about working with agents that crystallized something Iâd been feeling but couldnât articulate. The framing that clicked for me: LLMs automate typing, not thinking.
Thatâs it. Thatâs the whole thing!
What I Mean By âTypingâ
Hereâs how I think about it now: imagine you have a collaborator who types incredibly fast and knows every API and syntax by heart, but has the attention span of a goldfish and the judgment of someone who just started their first week on the job.
You wouldnât hand them a vague spec and disappear for a week. Youâd sit with them, explain what youâre trying to accomplish, watch them work, and course-correct when they start wandering off in weird directions. When they finish a section, youâd review it carefully before moving on.
Thatâs what working with AI agents is. Youâre not being replaced. Youâre being given a very fast, very literal-minded pair of hands.
Keithâs LLM Rules
Iâve landed on a workflow thatâs been smoothed out over months of trial and error. It comes down to three things.
Plan First, Always
The temptation is to just start prompting. âAdd a feature that does X.â âFix this bug.â âRefactor this module.â And sometimes that works! For small, well-defined tasks where you already know exactly what the implementation should look like. For most tasks, it will work 80% and you wonât realize the 20% that didnât work.
But for anything substantial, Iâve learned to start with planning. Iâll write a PLAN.md file (or ask the agent to help me write one by interviewing me) that includes: what weâre trying to accomplish, what constraints weâre working within, which files are relevant, and what success looks like. This isnât just documentationâit becomes context I can reference throughout the work.1
This is very much my âwrite a 20-page document before touching any codeâ energy that made me a bad fit for growth teams. Turns out it makes me a great fit for working with agents, who absolutely need that level of explicit context.
The planning phase is where I do the thinking. The agent helps me research, asks clarifying questions, points out things I might have missed. But the decisions are mine. By the time we start writing code, I should be able to predict roughly what the implementation will look like.
Break Things Into Small Pieces
Hereâs where I diverge slightly from the âmove fastâ crowd: I keep tasks small enough that I can review everything the agent produces in one sitting. Not because Iâm paranoid (okay, a little paranoid), but because agents have this tendency to quietly wander off course in ways that compound.
Youâll be three files deep into a refactor and suddenly realize the agent decided to âhelpfullyâ restructure something unrelated, or left TODO comments where actual code should be, or solved a problem in a way thatâs technically correct but completely wrong for your codebase.
Small tasks mean small blast radius. When something goes sidewaysâand it willâyou havenât lost a dayâs work.
Review Like Itâs Someone Elseâs Code
This is the part people skip, and itâs the part that matters most.
Every line of agent-generated code needs your sign-off before it ships. I treat it like a PR from an external contributor who doesnât know my engineering practices or values. Because thatâs essentially what it is. The agent doesnât know that we care about accessibility, or that we have strong opinions about error handling, or that a particular abstraction exists for reasons that arenât obvious from the code alone.
Your name is on the code. Make sure you can stand behind it.
This Is Still A Craft
Hereâs what I want to push back on: the narrative that AI is going to make programming obsolete, or that you can just vibe-code your way to a working application without understanding what youâre building.
During the government shutdown, I built crawlers to pull benefit information from state websites using AI tools. It was genuinely faster than doing it manuallyâwhat would have taken weeks took hours. But I couldnât have done it without understanding web scraping, data cleaning, the structure of government websites, and how our users would actually use the information.
The AI handled the typing. I handled the craft.
Thatâs the opportunity here. Not âprogramming is deadâ but âI can focus more on the parts that matter.â Writing thorough tests, building clean abstractions, thinking through edge casesâall the things that used to get squeezed out when you were racing to ship. The boring mechanical work gets faster, which means you can invest more in the parts that require judgment.
But only if you stay engaged. Only if you do the planning. Only if you review what comes out.
When To Be Skeptical
Iâm still skeptical about a lot of AI claims. The âbuild an entire app with no coding knowledgeâ demos are impressive until you need to debug something, or handle an edge case, or integrate with a real system. At some point, someone has to understand whatâs happening.
My rule: only use agents for tasks you already know how to do. If you couldnât write it yourself (slowly, looking things up), you canât effectively supervise an agent writing it for you. You wonât know when itâs going off the rails. You wonât catch the subtle bugs. You wonât be able to maintain it later.
This isnât gatekeepingâitâs just practical. Learn the thing first, then use tools to do it faster.
What I Actually Use
I get asked about my setup a lot, so hereâs whatâs working for me right now.
Claude Code is my daily driver. Itâs a command-line tool that lets me work with Claude directly from my terminal, and the agentic workflow means I can delegate larger chunks of work while staying in the loop. Iâve built a lot of project-specific skillsâcustom instructions that tell Claude how this particular codebase works, what patterns we use, what to avoid. Itâs the planning-first approach, encoded into the tool itself.
For batteries-included structure, I use Superpowers by Jesse Vincent. Itâs a skills framework that automates the workflow I described above: it forces the agent to ask clarifying questions before writing code, builds implementation plans you can actually review, and maintains a todo list that can be pulled back into context when things get complicated. The subagent-driven development process means Claude can work autonomously for longer stretches without wandering off course.2 The fact that it enforces true red/green TDDâwrite failing test, watch it fail, write minimal code, watch it passâis also extremely my jam. Tests arenât optional when an enthusiastic agent is writing your code.
Use new models when they come out. This sounds obvious but I see people sticking with older versions out of inertia or cost concerns. The models are improving fast, Opus 4.5 is wildly better at planning and maintaining context than previous versions. Yes, I still review everything. But the baseline quality keeps going up, which means I spend less time fixing obvious mistakes and more time on the interesting problems.
Read Simon Willison. Simon has been documenting his AI experiments in real-time for years now, with the kind of rigor and skepticism thatâs rare in this space. Heâs not trying to sell you anything; heâs just figuring out what works and sharing it. When Iâm trying to understand a new capability or figure out if something is hype or real, his blog is usually my first stop.
The Craft Hasnât Changed
Twenty years ago I was FTPing PHP files onto a shared hosting server and just seeing what happened. The tools were simpler but the fundamental work was the same: understand what youâre building, write it carefully, fix it when it breaks.
AI agents are just the latest in a long line of tools that promised to change everything. And like every tool before them, what they actually changed is the balance of where we spend our time. Less typing, more thinking. Less boilerplate, more design. Less mechanical work, more craft.
Thatâs a good trade. But you have to hold up your end of it.