AI For Development

I occasionally tinker on my computer after work hours on personal projects, albeit infrequently, especially when compared to the magnificent work done by some of the engineers I follow. Most of my time currently is wrapped in building a community makerspace, but there are some quiet evenings I find myself writing small utilities, or working on this blog.

Since the time I have and am willing to spend on computer-related projects outside of work is dwindling, I want to go from idea to product as quickly as possible. I love having the know-how to make things with just a computer terminal and a browser, but if I'm being honest, I'd rather spend my free time away from a desk. At my job, copilot-type assistants haven't been approved for use by engineering. But I have started incorporating them in my personal development workflow. I've found Zed to be a compelling IDE focused on modern techniques and AI for development (but if anyone from Zed reads this, please improve your vim emulator!). I've tested out ChatGPT-4o quite a bit using the Chatbox GUI. Alfred also has a handy ChatGPT workflow (this has fallen out of favor for me as my requests to these chatbots have become more verbose).

What I want out of LLMs is a way to work faster. I don't expect it to do my work for me, but if it can just get me started sometimes I'm able to get things done quicker. It's doing a bit more than covering boilerplate, and a bit less than implementing APIs. But ultimately, if I can just get things done faster, I can do more of the stuff I love. Sometimes that stuff is building more software projects, but a lot of the time, it's getting away from my desk. A lot of the programs I write are to make my life more fun or functional, like adding light strips with custom firmware to my room, or, to borrow a phrase from Al, automating the boring stuff. I've found LLM's to be really poor at implementing new code, but it can usually get a refactor about 80% correct. So, that's 80% less time I have to spend refactoring (minus maybe 10% for the time it takes to review the bot's changes). That's a win. That's a speed improvement that makes me more likely to attempt something. It also means when I run into speedbumps because I don't know how to do something in a particular language, or I can't debug a stack trace, I'm able to get through those quicker.

I think Simon Willison has one of the most realistic grasps on LLMs for software development. He writes really great quality long-format and short-format articles on the topic. He also references others in the field, so in a way the blog is a bit of an aggregator for content. I'd also give this article from Jamie Brandon a read on why speed matters in software engineering projects. It's one of the very few fields where throughout a career you can expect to improve your productivity by a factor of 10.