An enormous amount of ink has been spilled lately because of the release of ChatGPT. You can pop over there, right now, and have a couple of fun minutes getting a computer to generate some text that approximates, with varying degrees of success, the thing that you wanted. When you’re done with that, you can return to this argumentative little piece that hasn’t been generated with any help at all from any sort of AI.
My initial reaction to ChatGPT was one of startlement. I’m a professional software developer and pretty open-minded about the use of technology in our lives. So when I saw a machine producing code that, on the face of it, looked plausible enough to work and solve a problem, I was intrigued.
As I went looking further afield, all sorts of claims began to crop up:
“Look! It found a bug in this code and suggested a fix!”
“I was able to type in a request and get a working example back out!”
“I used it to generate some scaffolding for an application.”
In fairness, it does those things! Sometimes it doesn’t do them very well, so you ask again or subject it to some degree of manual verification and correction. This was exciting to me because I felt like I was witnessing the birth of a powerful new tool to assist me with coding – which amounts to the least interesting part of my job as a dev on a daily basis.
As I thought about it, incessantly, over the course of the last week, I arrived at some conclusions that took the wind out of my sails. Namely, we’ve had tools that do this sort of thing, already, for decades. We have code generation tools, templates provided for us, libraries that perform various kinds of common tasks that we reference, compilers that notice bugs and offer suggestions on fixes, analysis tools that can catch other kinds of bugs or unexpected behavior, mountains, and mountains, and mountains of documentation and code examples to get common things up and running quickly, etc….
Ultimately, I decided that in its current state, it’s not likely to be anything but a tool that further refines things I’m already well familiar with. That, in itself, is a perfectly fine tool to have! With that in mind, though, there are some things that make what it produces suspect.
An Illusion of Understanding
We, as humans, are quick to anthropomorphize things because it drags those things into a realm that we’re comfortable working in, one of human-to-human contact. So it’s very tempting to ascribe some degree of understanding to this machine when, on the face of it, it seems to be able to interpret your natural language question and produce a more-or-less reasonable result.
However, what it’s actually doing is way more mundane. It’s just doing that mundane thing on a grand, hard-to-comprehend scale. When you submit some text to it, it comes up with things that are historically likely to follow that kind of text.
That is, of course, a tremendous simplification that does a bunch of disservice to the work involved. It is a useful viewpoint to adopt when trying to understand the behavior of this machine, though. You can’t view this artificial intelligence through a human lens, nor should you want to! As soon as you start ascribing emotions and feelings to the machine, you’ve gone off-track and you need to back up to re-calibrate your reasoning.
What Computers Are Great At
Or, maybe more aptly, “what humans are awful at.” If I gave you, the reader, several million books’ worth of text to parse and asked you to search for patterns in it, you’d rightfully balk. That is an impossible task for a single human, and it is the sort of task that would drive you nuts. The better thing to do would be to specify, with exacting precision the kind of pattern your looking for and unleash some program to parse it out. Since I said “several million books,” you may wish to find something else to do while that program runs. Maybe write a book of your own, have a snack, take a vacation, etc… depending on the computing power available to you. It will grind away with a singular focus while you go about living your life.
The takeaway from that is that machines have no compunction about doing a really onerous, garbage task like that because they’re physically unable to have that kind of feeling. We can also set them up to be really, really good at that kind of task. I imagine some sort of room full of GPU units hooked up to a program designed to take advantage of that parallel processing power.
We’ve been attempting to turn those kinds of tasks over to machines for quite a while now, and we’re honestly pretty successful at it as long as we can clearly define what the problem is, what kind of input we’re working with, and the kind of output we expect. We haven’t run out of tasks like that, and I don’t necessarily think that we ever will. Knowledge work like that isn’t some finite resource that we can use up. There are always new lines of inquiry that we think will result in some kind of benefit, and there is always some tedious chunk that we should turn over to a machine.
So, What Do We Do With Software?
Successful software, and we’ll lump any artificial intelligence into the category of “software,” solves a problem. Every kind of software you’ve ever interacted with, from your phone’s operating system (that you’re generally not aware of) to Microsoft Excel (that you may be painfully aware of) was built with several well-defined problems in mind. It takes a bunch of resources to produce this stuff, from developer time to money, so we tend towards trying to extract value from it. Whatever that value may be is pretty abstract – some research projects exist not because of monetary gain but because they will advance some field of knowledge in some way, so I’m not talking only about cash, here.
However, you can’t escape the discussion of monetary value in this case. Businesses don’t exist altruistically. If they did, they’d be called something else. So when a business is evaluating whether or not they want some software, it has to have a business value.
The main things I’ve seen AI doing, throughout 2022 are:
- Maybe helping writers produce content for advertising something.
- Assisting students with cheating, maybe.
- Producing code in some sort of autocomplete fashion that may be totally unusable.
- Making a lot of images that are neat to look at, sometimes.
I doubt that’s the full list, but that’s what has been making headlines. I’m almost 100% certain that there are AI projects taking place that aren’t garnering any kind of attention that don’t fall into those general categories above. That said, can you imagine any business value that would be commensurate with the enormous cost of building one of these things arising from those categories?
“It Does” versus “It Could”
I’ve seen some wild extrapolation spun out about the inevitable exponential growth of the power of AI and how it will undoubtedly, in the near term, make an indelible mark on the kinds of work we do. So I want to provide a useful distinction for how to determine when something has a use case versus when it has a bunch of unhelpful hype attached to it. Simply look for the phrase “it does” instead of “it could.” Or any variations on that, I don’t much care to enumerate all the ways that it can show up. The essence is present tense versus future tense.
That is, if I wanted to sell you on a well-known program, all I have to do is tell you the features: those are things it does. It does them immediately so that you will see an immediate return on your investment and an immediate, positive change in your work.
How skeptical would you be if, instead, I told you all of the things that it could do, one day, maybe, if circumstances were right?
We have the gift of retrospect in this case. Let’s look back at the dawn of the internet! Networked connectivity on demand had some pretty obvious uses right away. You could view and share information (because we’d worked out file transfer long before the internet). That sounds really mundane by modern standards but that solved a whole category of problems in one swoop. In fact, that’s all we’re really doing to this day. It’s just that the nature of the information we’re sharing has changed, somewhat, and we don’t really think about that when streaming a video. As soon as a couple of machines were connected, this started taking place. It falls firmly in the category of “it does.”
Much of the buzz around AI centers on things that it could do. I understand that image generation has probably impacted artists and designers to some degree already, but I’m going to confess that I’m out of my depth with regard to images and say only that I can’t believe someone sane would want to attach any sort of branding or value to the image that an AI produces given the amount of readily visible mistakes or the things it generates that are just plain weird. Much of what I’ve seen would require a knowledgeable artist to clean it up, anyway, and in some cases, I’d be willing to bet that it would’ve been faster to just let them work it up from the start anyway.
As for optimistic, forward-facing predictions about the exponential growth of the power of AI? I strongly doubt that people saying that have a true understanding of what “exponential” actually means. I don’t doubt that we’ll see some growth, though.
How to Work With It
One of the issues is that this natural language interpreting machine is built to be non-deterministic. That means that it isn’t guaranteed to produce the same output for a given input. This means that two people working on identical projects with the same input can’t be certain that they’ll get the same quality of output. That non-deterministic nature also means that it’s a bit of a harder sell, currently, with regard to business value. You might spend a bunch of time working with it only to get results that you’ll spend even more time validating. You might also hit paydirt on the first attempt and feel really good about things.
Currently, the best thing that you can do to work with it is to have it generate a bunch of stuff up front that you can then go refine elsewhere with your domain-specific knowledge and actual human-level understanding of what you’re trying to achieve. It’s telling that even ChatGPT warns you that the AI may not produce anything good and you shouldn’t be using it in that fashion. Essentially, don’t trust it.
How It Could Be Improved
I need to preface this section by saying that I know these aren’t the goals of ChatGPT. However, it was a fun thought experiment to see where I would end up if I were given some carte blanche to work with a fictional, highly-powered AI.
First, I would prefer to have the ability to specify whether or not I wanted deterministic output. Sometimes non-determinism is fine and it might well be what I was looking for. Being able to fold that into my request would be a really good addition.
I would also try to capture my intent in some kind of unambiguous language. English has a bunch of ambiguity baked in, and that’s a good thing because it offers us the ability to construct rich metaphors and lyrics and poetry and jokes. Confusion and ambiguity aren’t great when you’re trying to generate some concrete value, though. Maybe I would borrow some concepts from mathematics so that I could precisely specify what I wanted!
It would also be nice to be able to freeze the behavior of the model so that I was assured that things would work in the future the same way that they work now. Or, if things had to change, enough understanding of the inner workings of the model so that I would have some confidence that I could update my work to continue to deliver the value I was after.
Lastly, I’d like to wrap this stuff up into some kind of file so I could share it or modify it in the future. If I was using it to do some kind of common computation, it would be nice to be able to share it to help speed up the kinds of work that others are doing.
Looking back on that list, I believe I just invented software development. I may be a bit biased.
Look, I will make no argument as to the future of AI. I do believe that there will continue to be research and new, interesting developments that come from that space. All I’m concerned about is taking an honest assessment of what we can do right now instead of adding to the pile of hype that I am starting to strongly believe is unfounded.
At the moment, I feel like trying to use AI to do something is a weird combination of useless and offensive, sort of like hiring someone to fart in your waiting room or lobby. Just because you can do this doesn’t mean you should, and it doesn’t really deliver any business value.
I’ve seen discussions around tools like GitHub’s CoPilot and I have no strong negative feelings about that. In fact, it’s something that is likely in my future but that’s because it would help refine my work to some degree or another.
If you put the screws to me and demanded a prediction, I’d suggest that the next generation of AI projects will deliver more, and this generation will give us useful advances that we’ll build on. As soon as we incorporate those useful advances, we’ll stop calling them “AI” and cause AI developers and researchers to tear out just a little bit more of their hair.
And I’ll reiterate that this wasn’t generated with the help of any AI, at all. Because I didn’t need it.