Code isn't an asset or commodity, it's a liability and ongoing maintenance expense. — Kvysteran, a programmer
Wowee, I made a thing! — Me
Lately, I've been trying out AI coding for small projects, like simple webapps and prototypes. I feel pretty positively about this, as I can have things made with very little coding knowledge for less time than it would take to find an engineer to volunteer to build things for me. It's pretty easy to get something good enough for my own use, like a pomodoro timer that plays Youtube music on loop.
While doing this, I've been talking with software engineering friends about my experience, many of whom work more on the backend. A lot of them are very skeptical about how useful AI coding is for their professional work. These aren't just Luddites who have refused to try the tech; several of them have done actual machine learning work on an academic or hobbyist basis, and one of them actually does use AI coding at work due to office politics there. Overall, they expressed concerns that AI code is inefficient, that it scales badly under the strain of hundreds of thousands of users, and that the way it is created makes it hard to maintain. They could barely hold back judgmental reactions when I told them that I still find it useful anyways.
What accounts for this gap? Many things, a lot of which come down to different capabilities and ideas about what code can be used for.
I'll start with the obvious: I can't code by myself. My previous track record was that I learned enough once every few years to copy things out of Stack Overflow and randomly guessed at what to change until I ended up with something vaguely in the shape of what I wanted. Now, things like Claude Code are helpful to me because I can get roughly what I want very quickly, and after that have enough knowledge to tweak visuals on the front end. At no point in this process do I understand my codebase, but then again, even with Stack Overflow I wasn't understanding my codebase either. The actual production of the code, turning it from however-well-thought-out pseudocode on paper to a programming language, is a barrier for me. AI helps me get over that barrier.
My engineer friends, obviously, are in a very different boat. For them, producing code is trivial. The hard part is figuring out how exactly to produce it, deciding what hard tradeoffs have to be made, and looking for elegant solutions can reduce the need for those tradeoffs. For them, it isn't enough to make code that does some task; the code has to do the task efficiently with hundreds of thousands of users, and good security for user information, and minimal downtime from bugs or maintenance, and across many different operating systems and devices and browsers, and be easy to understand so that when something inevitably breaks (and it will!) the fix is as simple as possible. AI is bad for making maintainable code.
In other words, my engineer friends are concerned with making enterprise-ready code, whereas I'm pleasantly surprised that the code even works. For me, having code that has to be entirely redone a year after it is first deployed is a huge improvement over having it never work at all. Viewed from these different lenses, we have radically different relationships to the idea of something that can quickly produce reams of code without oversight.
There's another difference, coming from our workflows. As a designer, I'm trained to create multiple iterations that can be tested among users, with rounds to go back and revise, before handing off my work to company engineers with instructions on what they should build. (The actual reality in the professional world, especially in resource-strapped startups that want to move fast, can look different from this.) I'm very comfortable with the idea of creating disposable prototypes barely held together with string and glue behind the scenes, that only last long enough to get the user feedback I need.
Similarly, when handing off materials to engineers, I don't need to build a fully functional, working product, I just need to build something good enough to communicate my vision. Occasionally, I have made Figma mockups that consist of screenshots of the existing product with parts covered up with a rectangle tool and the new design plopped on top. The expectation is that the engineers will rebuild the equivalent in code as properly as they need to — we all know this is not a serious proposal for the next release to be made of a screenshot and CSS rectangles. If I hand off an interactive, clickable prototype hosted on Vercel and I tell engineers that the new feature needs to look like this, I don't expect engineers to incorporate the actual code there. It's just a tool on the way to the final product.
I don't think my engineer friends are used to treating code as disposable in such a way. This makes sense, because generally you build on the codebase you have, instead of ripping it all out and redoing it wholesale.
I don't actually have any stake in getting people to use AI coding professionally. As I've established, I'm paid to think about very different things, and I will leave it to the engineers to decide how useful AI coding is for the things they need to do. What I would like people to consider is that even if AI code is an inefficient, bloated mess that is impossible to maintain, there still are uses for that. Not all of us are creating things that need to be held to enterprise-grade standards.
For those who are worried about a tidal wave of buggy, unmaintainable slop software being unleashed upon the world, the most useful way to go about it is an honest discussion with non-technical people about where we can get away with AI code we don't understand, and where we can't. I've learned a lot from listening to my engineer friends talk about all the considerations they have to make! Alternatively, offering resources so that non-technical people can become slightly more technical can help. Even just counting time spent manually fiddling around in VS Code, I've spent way more time coding this year than I have for the last three combined. I'm trying to learn about Git and NPM so I can figure out what the AI is doing when it makes all that code, or at least give more intelligent instructions. Anything that helps me make more stuff is cool! I don't dispute that AI code might be low quality — frankly I don't understand it enough to tell either way — but I still think there are uses for even low-quality code, as long as everybody making it is aware of its limitations.