EssayOctober 2025, revised October 2026
Reading code again
Leaning on AI for every change made me worse at the job. The fix was not quitting AI; it was reading every line it wrote and doing the hard parts myself again.
For a while I used AI assistants for nearly everything: writing functions, explaining errors, explaining my own code back to me. Output went up. Then I noticed I could no longer debug something without asking first, and I did not fully understand parts of the systems I had shipped.
The problem was not the tool. It was that I had stopped reading.
Reading is the skill
Writing code is the visible part of programming. Reading it is where the understanding comes from: how data moves through a system, where the edge cases sit, which patterns the codebase already uses, why a bug is possible at all. Accepting generated code without reading it skips all of that. You get the change without the understanding that should come with it, and the gap compounds.
When I went back to reading every line the assistant produced, two things happened. I caught real problems: extra layers of abstraction, handled cases that could not occur, missed cases that could, and patterns that did not match the rest of the code. And I started understanding my systems again, because reading the generated code made me hold the surrounding code in my head.
What I changed
- Read before writing. Before any change, I read the code it touches until I can explain how it works.
- Read everything generated. If I cannot explain a line, it does not get merged.
- Debug the first pass myself. I form a hypothesis and test it before asking for help. Often that is enough.
- Do the hard part by hand. Boilerplate and lookups are fine to hand off. The design and the tricky logic are where I want to stay sharp.
It was slower at first, and frustrating. It got faster as the understanding came back, and the assistant became more useful too, because I could tell it exactly what I wanted and recognize when it was wrong.
Where AI fits
I still use it every day. It is good at exploring an unfamiliar API, drafting code I am going to read anyway, and suggesting approaches I had not considered. It is a poor substitute for knowing how your own system works.
The rule I settled on is simple: I use AI to go faster at things I understand, not to avoid understanding them.