Posted on :: 744 Words :: Tags: , ,

I have a confession to make: I've been test-driving AI tools a bit in my work lately. I haven't pushed it to its limits, but I have been occasionally impressed with its ability to get me over humps in the road when it comes to software development.

In my off time, I also used it to get up and running with a complete personal website re-write. It hit a lot of edge cases where it couldn't seem to figure out the right way to do stuff, but it finally got me started on a project I had been putting off for years.

My coworkers have been espousing all the seemingly amazing things they've been able to accomplish thanks to their use of AI tools, and I've admittedly been extremely skeptical, but you could almost say I'm coming around to it having some useful applications.

...And yet...

Sometimes at work I find myself stuck and banging my head against the wall, and asking an AI a few questions can help unblock me when my coworkers are all busy trying to complete their own work. One might say that this is an unfortunate side effect of capitalism; the need for companies to "grow grow grow" at all costs means a team of developers can't just stop working on new features and focus solely on supporting each other and fixing bugs, lest they stagnate in the eyes of the shareholders.1

But I digress. The point I want to make is not something I can prove yet, but it's a bit of a hunch and a fear that I have.

Sometimes banging my head against the wall for a bit, leaving, and coming back allows my brain to get some distance and perspective and forge a new neural path. This new path can then serve me in the future the next time I work on something similar.

At other times, I might not know entirely what I want, but I'll just start writing some code to get the juices flowing, and before I know it I've mostly implemented my solution. I end up thinking through the solution through the act of coding.

When AI does the job for me, I miss out on both of these benefits. I don't get to form new neural paths, and I don't get to think through the problem.

"But June," I hear some imaginary AI apologist saying, "your coworkers do this as well. You delegate tasks to them and they write the code and you give it an overview, but you don't think through the solution or form those neural pathways there either!" Well yeah, but someone does. Someone has to think through and form the brain connections when they write it by hand. (Not to mention, I trust my coworkers as human beings. I do not trust the fancy black box autocomplete machine.)

Even if it's arbitrary tasks, when no one writes the code, no one has that depth of understanding of it. And when that starts to pile up, even in tiny, almost unnoticeable increments, things start to fall apart.

In A Philosophy of Software Design, John Ousterhout writes about "strategic" vs. "tactical" coding, "strategic" meaning forethought and planning is put into a chunk of code, "tactical" meaning "it's hacky but it works, let's get this merged." Tactical coding, when it piles up over time, tends to lead to complexity and tech debt, according to Ousterhout.

Vibe coding is tactical coding taken to the extreme. Again, I don't think we have enough data yet, but anecdotally, I've already started to hear some of the horror stories about AI programming being taken too far, and I'm very weary of even small amounts of this. As progessional software engineers, in the coming years, we're going to have to be very careful about how we approach AI tools, and make sure we maintain a strategic approach to the code that we put out as our own.

...And I didn't even get to any of the environmental effects of rising LLM usage, the plagiarism issues, the devaluation of human ingenuity and rise of anti-social attitudes, the general lack of taste. AI is a minefield in ways that I don't think many of us anticipated. Tread lightly.

1

I'm certainly not saying that about my own work, no sir, I would never, I love my job and everything about it at all times, all hail Adam Smith