Crafting with AI, Writing by Hand
The other day, I wrote Java by hand for the first time in a while.
I’ve worked in Java for years. Lately, though, most of my code gets written by AI. There are deadlines. It’s faster. I read what it writes, ask about what I don’t understand, have it fix things. That’s been enough to keep everything moving.
Then I decided to write a somewhat involved piece myself. It’s not that I couldn’t. But my hands didn’t remember. The next line wouldn’t come the way it used to.
Ah — so it’s true, I thought. The shock was small.
It was small for a reason. I’d been through a sharper version of it before.
I once had AI build a small tool in Rust — a language I barely know. It worked. And then I realized I understood none of it. Why that structure, why that type in that place — I couldn’t explain any of it.
In hindsight, obviously. Have something written in a language you don’t know, and nothing stays with you. But at the time, I’d assumed something would. Build a working thing, and surely some of it sticks — even a little. It didn’t. That one landed hard.
And yet there’s another obvious fact sitting right next to it: without AI, that tool would not exist at all. A working program, in a language I barely know, sitting in my hands. Nothing stayed with me — and I built it anyway. That experience has both faces.
Working with AI has widened what I can make.
I’ve always been bad at web UI. For years I threw CSS frameworks at the problem, and it never quite worked. Now I have AI write the CSS from scratch — and it works. I did not expect a lifelong weakness to get resolved like that.
Even in backend work, my home ground, there are places where my understanding is fuzzy, where my implementation is thinner than I’d like. AI covers those places well. Working alone, I had no choice but to carry my doubts forward with me. Not anymore.
My own experience and ideas, combined with what AI can do — and things I could never quite build alone start taking shape. I feel this as I build my own product right now. It’s genuinely interesting.
Still, what the Java moment showed me doesn’t go away.
There’s a kind of discovery that only happens inside a particular loop: write, get stuck, wring something out, fix it. The moment a structure surfaces on its own. Have AI write the code, read it, understand it — and that moment never comes. Understanding stays. But that’s all. It slips away from the hands.
So I sort my work into three territories.
Where I write the code myself, even when it’s slow. Where AI writes it, but I dig in until nothing is left that I don’t understand. Where I let AI handle it, even if my grasp stays loose.
The third is easy to assign: places where breakage shows up fast and costs little. The second: wherever deadlines press. And the first — the structural core of a design, plus anything I’m simply interested in. Efficiency has nothing to do with it. I keep those in my hands for one reason only: I don’t want to let them go.
These lines aren’t there to protect something from AI. Some things only grow when my hands do the work. Other things only come within reach when I work with AI. The lines exist to give each its place.
There’s the feel of writing code by hand. And separately, there’s the feel of making things with AI — knowing what to delegate, what to question, where to step in — settling into my hands a little more each month. I’ve come to think of this as embodied knowledge too. Hole up in the first, and my reach stays short. Drift into the second, and I lose those moments of discovery.
The two don’t replace each other, it turns out. So I grow both, and keep moving the lines. The Java moment moved them again, a little. They’ll keep moving.
Where this settles, I don’t know. For now, the search itself is the interesting part.