Reviewing My AI-Generated Code
I started using AI coding agents in March of 2025. I’ve always had personal projects before. But adopting AI agents completely changed the scale of my codebase. I am writing tools, web apps, and automations that I never would’ve had the time or energy to write myself. Today, I have more AI generated code in my codebase than code I wrote myself.
This is what Claude says about the growth of my private repos.
Six and a half years of history across three private repos, and it splits cleanly in two. From 2020 through 2024, you wrote between 6,000 and 25,000 lines a year, with long silent stretches. 2024 was the quietest year on record: 6,618 lines across 33 commits. Then 2025 came in at 34,074, five times 2024. And 2026, not yet eight months old, is at 109,564 lines across 432 commits, more than 2020 through 2025 put together.
I was a self taught programmer. Working on personal projects was how I learned OOP, design patterns, type systems, test driven development, functional programming, and many other things that helped me write better code.
When I stopped writing code myself, I also stopped learning. I started to notice I did less and less teaching to AI. I don’t remember the last time I scrutinized code generated by AI. As long as the result worked - I didn’t think about what the code looked like. This sent my spidey sense tingling.
Last weekend, I got curious and decided I would go back to study the code AI generated. I asked my AI to do this:
/mattpocock-skills:grilling Act as a Python teacher. Look at the changes since commit …… and walk me through the Python changes to the system. Skip the basic stuff, I am quite fluent with Python. But I want to become an expert Python software engineer.
I spent the next three hours studying two months of AI-generated code. I found a lot of things that I didn’t like. It wasn’t that AI code was bad. It was more that the code felt incoherent and inconsistent. I ended up with a large list of things I planned to refactor. And, as a bonus I also learned a lot.
- I got more familiar with Python’s “Mixin” classes and a better sense of when to use them and a particular pitfall. (What do you do when two classes evolved to be entangled with each other?)
- The different approaches to “macros” (code generation) between Lisp, Rust, and Go and their trade-offs.
- Using
pytest’s parameterized tests fixtures. - Pitfalls with using
pytests’s text fixtures. - Shipping a reference test bench for your framework – whether you should do that at all.
Does learning programming still matter? I’d like to think it does. It is tempting to just delegate all coding to AI and forget about the code. But I think that is a mistake. At the end of the day, you own the code your AI writes. If you don’t know what is in your codebase, do you really own it?