Why I Use AI

Let me start with one critical point: I am NOT an Artificial Intelligence evangelist.

We clear? Got it? Good. Moving on…

I use AI. I am an AI user. I leverage AI in (not quite) my daily activities to address the shortcomings in my own knowledge and experience.

We clear? Got it? Good. Moving on…

I am a former developer. I say that because I haven’t done any extensive development in years. I impart experience, I help direct solutions, I advise, I provide insights. But I don’t program. And that’s because my experience asks me to do things that is beyond the task of sitting down and plugging code to make something work. Don’t get me wrong, I can do it, I’m just not as good as developers who spend most of their day doing it.

As little as three years ago, this would be the end of me in terms of providing useful assistance in development. I’ve rusted so much that I would struggle for a few weeks to get the skills back, the patterns back, fit to spec, and so on.

Now? “Hey, [insert AI of choice here], I need you to create a new function to extract the data contained in the postmeta key-value ‘UTM source’ appears in the log file when exported.” (No joke, I did something like this not too long ago.)

Is this cheating? No. Is this dangerous (for me) to do this? Also, no. Now bear with me, ‘cuz I’m about to make a claim that many are going to object to: I can do this because I know what I’m doing.

WAIT! Didn’t I just say that I can’t program as well as others?! How can I possibly make such a statement that I know what I’m doing?

I’ll start with a general statement: I’m old. I’ve been programming since the mid-1980s. I’ve forgotten more languages than I currently know how to code. And I’ve not kept up with the newer frameworks.

We clear? Got it? Good. Moving on…

Now, just because I don’t know off the top of my head how to put something together, doesn’t mean I can’t read it and understand what’s been done. And that’s the advantage that comes with experience: I’ve seen a LOT of code. I can absolutely tell you if something’s been done well, or if it needs to be fixed. I can tell you how to approach it, even if I can’t actually write it myself. And that ability allows me to tell an AI what to do.

The AI coding models rely very heavily on the well-documented standards and the litany of examples available through a nearly endless supply of websites, code repositories, and other sources we don’t know about (AIs have looked in some interesting places). In a way, the best possible source for quality code is an AI – if you know exactly what to tell it to do.

This is where most “vibe coding” fails miserably. It’s garbage in, garbage out: if you don’t know what to clearly explain what an AI needs to do, it’ll just do what it calculates it needs to do. As has been mentioned so many times in so many articles before, LLMs are not actually intelligent, they just have a exceptionally large prediction models.

(This is what I was alluding to three years ago: AI will not be able to take over the jobs of trained, skilled people. Everything is derivative. Although there is a substantial amount of irony in that a lot of developers jobs went extinct in the process, with companies finding that the turn to AI ended up costing more.)

It doesn’t help that “programming” isn’t a particularly well-defined term. Merriam-Webster says it’s “the process of preparing an instructional program for a device (such as a computer)”. And since that’s horrifically vague, allow me to give you two terms to help:

And that distinction is important: code is small and simple, software is large and complex. AI can write code, but writing software requires a human.

I’m sure there’s a long line of bros who’ll want to challenge me that AI can write software. I have a longer line of software engineers who’ll tell you where to stick it. We clear? Got it? Good. Moving on…

I can write software: I understand architecture and dependency, I know how parts need to interact together to create an outcome. And while I can write code, I’m not as good as I used to be. What I can do is clearly define an expectation and an outcome to an AI, which can then do it for me. And yes, I can tell if an AI did it well.

Does that mean I’m going to develop software and have the AI write the code for it? In truth, probably not. And it’s not because I can’t, it’s because I simply don’t have the interest. I’ve been programming since the mid-80s. I’ve learned a lot, I’ve seen a lot, and I have far more interest in teaching others.

That said, I can’t be completely hands-off, not when I’m leading developers in delivering a solution. And I can’t be trundling down my old, antiquated path that doesn’t align with the work that’s been done (we’ll assume for the moment that the work is well-architected and following standards). While I might not be at front of the design, I sure as heck need to ensure I fall in line. And AI does a brilliant job of identifying patterns: it sees what’s been done and can mimic it accordingly, not to mention reference the work that’s already been done.

And that’s why I use AI: to make up for my lack of current skill. No, it’s not perfect, but I know that. And yes, I will always have another human check the work (even if I think it’s good), because that’s the way it should be done.