Mourning My Loss
To say I have conflicted emotions about AI coding is an understatement. It’s like I’m going through the stages of grieving.
At first, I was dumbfounded. Incredulous. You can see it in my article AI Coding is Finally Here. I didn’t know what to make of it. I still don’t.
It’s been a few months since I wrote that article, and I’ve still been using AI. I’ve found some things it’s really excellent with, and some things it’s not so great with. I still write some code by hand, but usually when I go in to type something out, I think, “it would be faster to prompt this.” And so I do, and it is.
Today, that made me sad.
It’s a Murder
I am starting to miss the days when there was really only one way to get programming done, and that was doing it all by hand, and becoming an expert in the syntax and the form and what letters to type. I’m missing the days when I had to google for documentation, read it carefully, and filter out the useful information from the stuff that didn’t apply. I’m missing that learning process. I didn’t appreciate that it was necessary learning back then, and now I’m sad that it’s not necessary any more.
It feels like I lost a friend. I liked the explorative, learning, creative work of coding. Even worse, it feels like that friend died of unnatural causes - it feels like they were murdered. Taken from me. And, to add salt to the wound, the murderer got away with it using some of my intellectual property.
It’s fair to say that with AI you still have to learn things. It’s true. With AI coding, you can’t just let it rip and not look at the code, not understand anything, and not worry. You get into hot water really fast going down that road. So, you still need to understand how the system works. But, the exploration, if there is any, isn’t deeply technical any more because any questions you have about how to implement something are already answered.
But, I liked the detailed technical exploration. I liked answering questions myself like: What’s the best method for this? What’s it’s signature? Is that how most people use it? Oh, that doesn’t return what I thought, let’s try a different one.
When you had those types of questions in the past, you had to read and find out for yourself. That learning process got more information into your head and you became more proficient at the tool you were using.
All that kind of exploration? Gone. It was murdered.
Replaced the Wrong Parts
At work today, I needed to migrate a large chunk of code from one repository into another. It needed to get moved along with all of its tests, any dependencies, and some utilities that had it securely nested in the larger codebase which we were breaking up. I didn’t really do any of that work. I pointed OpenCode at the problem, explained where it needed to move the files, told it to move them first and then solve errors after (doing it the other way blew the context window too fast) and then I let it rip. I went to a meeting in the mean time.
When I was done with the meeting, OpenCode was done with the migration. I checked it. I tested the code. It all ran just fine.
This was not a trivial task. There were 80 files moved from the old codebase. A suite of 150 tests to migrate. It all works.
Did I read the whole PR? No, it’s 80 files for crying out loud! I just ran the code, saw that it worked, looked at the folder structure, and trusted it. When the PR got approved, I threw my head back in my chair, face in my hands, and said out loud, “I’m so cooked. What are we doing?”
More sadness came when I realized that I had just replaced the fun part of my job with a meeting.