AI-generated code takes are all the rage these days! I’ve somehow managed to go the last few years without having an LLM write code for me. I enjoy development, and I don’t usually feel bottlenecked by coding speed. I was at DiceCTF Finals a few weeks ago and watched Claude Code used to more or less correctly generate microcontroller firmware (We won watt wars :D ). Wow, am I out of touch? This certainly required the expert work of my teammates — after all, it was a competition which we won — but I was left with a much higher impression of the caliber of work AI models can do.
I thought a little about which projects on my pending list would be a good fit for an experiment… and decided to go for a Rust EPUB library. There are a handful published already, but none that fit my needs exactly — I want to be able to ergonomically read, modify, and write changes to an existing EPUB with as much compressed data reused as possible. I’m also busy and don’t usually want to spend my evenings doing even more development, so it’s been sitting on my TODO list for months.
After years of avoiding AI coding assistants, which one should I use? I picked Claude Code instead of the alternatives largely arbitrarily:
I’ve put in a few evenings working with Claude Code and am already feeling opinionated. Maybe in a month I’ll have refined my views, but you all get my hot takes after 96 hours.
I was pleasantly surprised at how effective it was. I wrote effectively no code and got a basically effective library in one night. There was and is definitely more work to be done — additional validation, cleaning up interfaces, etc — but at this point I’m pretty confident I’ll get a library that I’m fine using faster than I would have written it myself.
An understated benefit is the mental effort required. MVP EPUB isn’t especially complicated, and I’m not sure writing this with an LLM was that much faster than I could have written it. However, with a few evenings of prompting occasionally while watching television, I did get work done on it, which is more than I can say of my last few months.
It’s also important to note that, as a task, this is pretty close to ideal. Creating and parsing EPUB is a well-defined problem space. In fact, one of the first things I had Claude do was write differential tests with another Rust EPUB library. I rapidly settled into a sort of iterative test-driven design flow, which I think was as effective as it was because it had a very clear validation story.
I was impressed at how effective it was at generating boilerplate tests, especially property-based tests. I found it quite good at converting natural language to proptest strategies and iterating on them. I wonder if we’ll see increased research and work on ergonomically expressing the correctness of a program.
I remain unconvinced it’ll be useful for my professional work. I spend relatively little time writing code and much more time thinking about the design and implications thereof. In my experience, the aspect of development which is hardest and consumes the most time is slowly growing your understanding of the problem space and relevant trade-offs.
One of my biggest concerns with AI development agents is that the biggest strength — that they can generate large amounts of approximately correct code — is also their biggest weakness. I have little confidence that AI-generated code will be correct, little confidence that a correct solution will be optimal, and little confidence that we as engineers will be able to adequately review large amounts of AI-generated code in a codebase we are not the primary authors of.
With all that said — I have a lot of potential projects that I want done, don’t find especially interesting technically, and where correctness is not critical. I think I can get $20/month value out of Claude Code using it for this class of work. We’ll see how I’m feeling in a few months but I’m planning on maintaining a subscription.