Stack Overflowed
I remember what it was like when I first started making things on the computer. I can’t even say they were websites or even code at first. I recall using a program called ResEdit on my dad’s Mac Plus to mess with icons and game resources. Tweaking randomly until something worked. I couldn’t reproduce the patterns that led to success but tried very hard to make sense of them.
Recently, I started working with my daughter on a Raspberry Pi hooked up to a kit car. The directions weren’t great; the most helpful piece of documentation was a YouTube video that moved too fast and was out of date. But we eventually got it working. I shared with her the thrill of repeated failure leading to a flash of success. The 10,000 ways to not make a lightbulb, until we did.
I had a similar experience the other day. I was working on some code and asked an AI agent to build a starter project for me. It worked like magic. I looked it over and wanted to tweak the colors a bit. I poked at it myself but ran into another issue, so I gave it back to the agent. Of course, anything I updated was tossed out. Any slight improvements were one-shot over by the AI. And in some cases, it didn’t even retain its own previous work. I haven’t tried every AI agent or assistant available, but there’s a larger point here.
I was a solo developer in this case, trying to keep my own context while letting the AI write a large chunk of the initial project. If you asked me to explain how the code worked after multiple AI rewrites, I couldn’t without rereading the codebase and reacclimating myself to all the pieces. You often find engineers, and I am not immune, who optimize for code-writing over code-reading, and it was no different here. If I had been on a team, there would have been even more changes evolving the codebase in ways that could cause previous features to disappear. Something I understood yesterday could look completely different today.
This has been a bit of a gripe session about AI-integrated software development so far, but like I said at the beginning, there’s still some magic. For agencies and contracts built around one-shot projects, it’s a perfect fit. Need a website for a one-time event that no one ever needs to maintain? Perfect. Understand that, as has previously been the case, we may need to incur technical debt because of present market pressures? Okay. Need some inspiration or help with a particular error or library feature? Go for it (though I’ve often found that just reading the documentation is more helpful so far).
AI-integrated software development is what everyone is talking about right now. Autocomplete has been a staple of the software engineer’s toolkit for years, and an even smarter autocomplete will be that much more helpful. Tab-completing all the standard method and class documentation? Yes, please. This integration process will be an interesting adventure, one that will require iteration, just like everything else professional software engineers do.
Let’s start iterating, learning, and having our minds blown when things go right (and when they go wrong). I’ve always believed you should understand something before you tear it down.
There exists in such a case a certain institution or law; let us say, for the sake of simplicity, a fence or gate erected across a road. The more modern type of reformer goes gaily up to it and says, “I don’t see the use of this; let us clear it away.” To which the more intelligent type of reformer will do well to answer: “If you don’t see the use of it, I certainly won’t let you clear it away. Go away and think. Then, when you can come back and tell me that you do see the use of it, I may allow you to destroy it.” - G.K. Chesterton