The question sounds like it’s about productivity. It’s really about where understanding lives. Every line in your codebase is either something you understand well enough to debug, extend, and explain — or something you’re renting. AI moves lines between those categories very quickly in one direction. A deliberate hand/AI split is how you keep the load-bearing lines in the first category while still taking the speedups.
The split, case by case
- 01
Let AI write it: boilerplate and glue
Configuration files, CRUD endpoints, migrations, import statements, test scaffolding, that logging wrapper you've written forty times. The cost of not understanding this code is near zero because you've understood it in every previous job you've had — it transfers. Delegating it is exactly what a power tool is for.
- 02
Let AI write it: well-understood patterns you can verify at a glance
Sorting with a custom comparator, a debounce function, a date formatter, a standard retry loop. You could write these, and you can review them in seconds because you know exactly what correct looks like. The verification cost is trivial — which is the entire justification for delegating.
- 03
Write it yourself: the core logic of what you're building
The algorithm inside the feature, the state machine, the pricing calculation, the parser. This is the part where a subtle bug costs the most and where understanding is the product. If you can't re-derive this code on a whiteboard a week later, you don't own your feature — the AI does, and it has moved on.
- 04
Write it yourself: anything you'd debug at 2am
Concurrency, caching invalidation, timezone handling, anything touching money or auth. When these break in production, you will be reading them without an assistant's full context and under pressure. Code you may have to fix live is code you should have written, or at least rewritten by hand once after understanding it.
- 05
Write it yourself: when learning is the point
New language, new framework, new domain — if the goal is to internalize it, generating your way through defeats the purpose. The struggle of producing code by hand is not waste; it's the encoding process. Delegate after you've built the mental model, not before.
- 06
Hybrid: AI drafts, you rewrite the parts that matter
The most underused pattern: let the assistant produce a first pass, then rewrite the core functions by hand before merging. You get the boilerplate for free, keep the load-bearing logic in your fingers, and the diff between draft and your version is a precise map of what you didn't know.
The rule underneath the cases
Every case above reduces to one question: what does it cost later if you don’t understand this now? Boilerplate has almost no carrying cost — you’ve understood it since your second job. Core logic, concurrency, auth, and money have enormous carrying cost, because the bill arrives during incidents, extensions, and interviews, with interest. Delegate where the carrying cost is low; write or rewrite where it’s high. If you want a single heuristic to remember: if you couldn’t re-derive it on a whiteboard next week, either write it or rewrite it.
This is also the honest answer to “will I lose my skills?” — you lose the ones you stop practicing, and you choose which those are every time you delegate. The mechanics of skill decay and the evidence are covered in does using AI make you a worse programmer?, and the daily habits that keep the split healthy in how to avoid over-relying on AI when coding.
Keep the split honest — with Covate
Whatever you delegate, the review has to be real. Covate is a free, open-source MCP tool that plugs into your AI coding assistant (Claude, Cursor, Copilot and others), watches what actually changes, and turns your real diffs into short, targeted quizzes — blocking further generation until you answer — so every delegated change still passes through your understanding. Sessions sync into the free learning ledger on covate.org: sign in with GitHub and see every synced session, your running accuracy, and the topics you keep getting wrong. Nothing to buy.
Free · no card, no waitlist
The MCP is free and open-source (MIT). So is the learning ledger on covate.org — sign in with GitHub, nothing to buy.
FAQ
How do I decide whether to write code myself or use AI?
Use two questions. First: what does it cost me if I don't understand this code later? High (core logic, money, auth, anything you'd debug under pressure) — write it yourself, or rewrite it by hand after the AI drafts it. Low (boilerplate, glue, patterns you've written many times) — delegate freely. Second: is understanding this the point of the exercise? If you're learning the language or domain, write it yourself regardless of convenience. Deciding by 'what's fastest today' instead of by these two questions is how developers end up shipping code they can't explain.
Isn't it always faster to let AI write the code?
It's faster to produce, which isn't the same as faster overall. For boilerplate, yes — the review cost is seconds and there's nothing to understand. For core logic, the time you 'save' writing is partly moved to later: debugging code you don't fully understand, reviewing changes you can only rubber-stamp, and re-learning your own system before every extension. Teams also discover that the second and third feature in the same area go faster when the first was written (or rewritten) by someone who now understands it deeply. Speed is the right metric; you just have to measure it over the whole lifecycle, not the authoring step.
What kinds of code should I always write by hand?
A practical always-hand list: anything you'd have to debug live during an incident; concurrency and anything with ordering or timing assumptions; auth, permissions, and anything touching money; the core algorithm or state machine of the feature you're building; and anything in a language, framework, or domain you're still learning. These share one property: the cost of not understanding them is paid later, at interest. Everything else is a candidate for delegation — with a real review.
Does writing code by hand still matter in the age of AI?
It matters in a changed way. Producing syntax quickly is worth much less than it was — the assistant does that adequately. What's worth more is everything around the typing: decomposing a fuzzy requirement into a design, judging whether a proposed solution is right for your system, debugging, and explaining code to teammates. Hand-writing selected code is the training method for those judgment skills, not an end in itself. We cover the shifted skill set in 'Should you still learn to code in the age of AI?'
How does Covate fit into the hand-written vs. AI split?
Covate doesn't decide for you — it makes the cost visible. It's a free, open-source MCP tool that plugs into your AI coding assistant (Claude, Cursor, Copilot and others), watches what actually changes in your codebase, and turns your real diffs into short, targeted quizzes, blocking further generation until you answer. When you delegate, the quiz verifies the understanding you'll need later; when you write by hand, the ledger on covate.org (sign in with GitHub — free, nothing to buy) tracks your accuracy and weakest topics, so you can see which hand-written practice is actually paying off.
Related