They say that one of the reasons to write is to find out what you think, and looking over my previous blog posts it seems I spend more time thinking about Artificial Intelligence than I knew. I am a spectator to that world, someone who finds it fascinating as technology and as cultural phenomenon, as well as portent for our future, but I am not an AI practitioner. Given the current resurgence of interest and applications of AI, and in particular the interest—and in some cases fear—generated by large language models such as ChatGPT, I decided to give it a test drive. While the technology behind these applications is outside my sphere of understanding, I do have some strong initial impressions, the strongest of which are that the UX of natural language for information retrieval is an exceptionally good one, and that it may not be long until some of us will need to develop a proficiency with this mode of computer interaction.
ChatGPT
ChatGPT is, in simple terms, a type of program called a chatbot, in the same family as the humble Eliza. But whereas Eliza, along with the average chatbot that peeks out at you from the bottom right corner of many websites, works by a simple procedure of pattern-matching input and producing a templated response, ChatGPT is a whole other animal. Having an enormous corpus to pull from, it is able to produce output with a level of relevance and detail far beyond anything that we have seen so far. Not only that, but it is able to engage in dialogue; a ChatGPT session will include your feedback into its subsequent responses.
After spending just 20 minutes or so with it, I’ve found that it is capable of providing information about all kinds of things, mostly accurate but with a sprinkling of errors. I’ve asked it to describe a famous author, to write a story in the style of that author, and then to write a review of a garden hose in the same style, and in each case what it produced was perfectly coherent, if not inspired. This certainly is impressive, and, as many have acknowledged, likely signifies something new in the history of human-computer interaction.
What I like about interacting with this robotic interlocutor is how well it plays the part of a helpful servant; it may not be able to give you exactly what you want, but it will do its best and point you in the direction of further information on the subject. A lot of work must have gone into the UX, meaning the ability to not only to produce useful output, but to obey the Gricean maxims of conversation. For example, I asked ChatGPT to write a Tetris game in Brainfuck, and it politely informed me that Brainfuck probably is not the best choice for this project, gave me a brief overview of the language, a bit of information about what would be involved if I did want to undertake this task, and then wished me luck. What great service!
ChatGPT as a Toy
Generations of philosophers and science fiction writers have thought about the serious implications of AI, both desirable and abhorrent, and while I am sure that there are many serious application of the latest generation of these technologies, it is also interesting to observe how applications like ChatGPT and DALL-E have become toys that allow for tinkering and satisfying your curiosity—”check this out, I got DALL-E to create an image of Elon Musk flying an X-wing dressed as Captain America drinking a margarita!”
It turns out that AI can be a toy as well as a tool; you can ask ChatGPT to produce all kinds of playful verbiage. For example, I asked it to “Write a story about Clippy turning into an evil AI”—I had to have a little chat with it to clarify that I meant Microsoft’s infamous little helper rather than an actual paper clip—and it spit out something that, at the least, provided a bit of entertaining reading. To some degree it is a “dancing bear” phenomenon: you are impressed not that the bear dances well, but that it dances at all. Similarly, ChatGPT does not compose great stories, but the fact that it can produce these little bits of coherent narrative based on your prompts, no matter how absurd, is a recipe for some idle time spend seeing what tricks you can get it to do.
Search vs. Chat
Of particular interest to me, and to the software development world in general, is the fact that ChatGPT can write code.
While ChatGPT does seem to be a significant innovation that could change the way software development is done, there is a sense in which it is simply providing a better interface for what we have been doing with web search for as long as it has existed, and before that with libraries (the book kind, not the code kind).
Don Norman’s book The Design of Everyday Things discusses the idea of “information in your head” vs. “information in the world”; that is, the difference between what you know well enough to mentally access when you need it, and what you need to track down somewhere outside of your head. Programmers need to be adept at tracking down information, as there is no way to get even a fraction of the information you need on any given day permanently stored in your memory, not given the huge APIs, deep class hierarchies, and constantly changing platforms that we make use of regularly. And so we develop a workflow for tracking down the right information when it is needed, generally starting with Google, and then moving on to Github or Stack Overflow or a tutorial that someone has put on their blog or whatever information trail looks most promising to follow.
While Google does make it easy to access essentially unlimited amounts of information, it is not exactly an oracle for answering your questions. People use it as a question answering oracle, certainly, and search engine companies have been working on providing more semantic results to queries, but the basic model is still a matter of returning a list of links based on a set of keywords provided by the user, whereas what people want search to be is more like a conversation: they ask a question, the engine provides an answer. And this is exactly what ChatGPT provides.
For some queries, Google still beats ChatGPT, such as the fact that if you Google “What is the temperature”, it will give you the temperature in your area, whereas ChatGPT will inform you that as an artificial intelligence, it does not have access to temperature information for your current location. It is likely that, as language models like ChatGPT gain traction in various fields, search engines will have to respond to the new competition by doing the job of search better, or possibly by incorporating this functionality into their interfaces.
How Will ChatGPT Effect Software Development?
When you do a Google search, you are expecting to fish out some useful information from the vast sea of information that people have been so thoughtful as to provide in the form of documentation, tutorials, videos, etc. You access that information in the form of links, which you then have to follow, ignore all the ads, skim through all the preliminaries where the author explains a bunch of stuff you already know, and hopefully find the snippet of code that provides an example of what you are trying to accomplish.
With ChatGPT, on the other hand, you ask for some code, and it provides. And not only does it provide the code, but explains it as well.
For example, when I ask Google, “how do you write a WordPress plugin,” I get a results page with a sponsored link at the top, a “People also ask” section, a list of three videos, then the regular links start with what looks like a promising article on smashingmagazine.com titled “WordPress Essentials: How To Create A WordPress Plugin.” Likely if I followed that link I would find what I’m looking for, and if not I’d move along to the next option.
When I ask ChatGPT the same question, on the other hand, I get a short set of instructions for the files I need to create, along with an example of the code I need to write, ready for copying and pasting into a file that can be edited for my own use. It explains how to proceed from where it left off and then gives a few suggestions about where to look next. What the OpenAI people have accomplished with ChatGPT is to make accessing information—at least some type of information—as easy as asking a question.
Are We Obsolete?
There are two ways that I can imagine the programmer-apocalypse. In one scenario, these interactive AI interfaces get savvy enough that an entrepreneur with an idea can turn it into a reality using nothing but the services provided by various AI systems. The other is that the AI’s will themselves be applying for programming jobs, handily beating us meat-bags at the coding challenges in their technical interviews.
I’m only half serious here, but it is natural that over any discussion of AI hovers the specter of human obsolescence: are the code writing robots going to take my job? There may come a time when there will be a platform that the average, non-coding person can ask to implement the functionality they want, arrange the UI, model the data and everything else that currently requires a team of developers, QA testers, UX designers, and the rest of the development parade. On the other hand, that time may be so different from our own that it is beyond our current ability to imagine.
For now, the fact that we have one more way to access information should be a boon for people responsible to making software. I do think that it will not be too long before natural language interfaces are incorporated into development tools and become a natural part of your dev workflow (I believe something like this is currently available with Github Copilot, but I have yet to try it out).
Conclusion
There will certainly be challenges to adapting to this new way of working. Now that we are interacting with our machines in ways similar to how we are used to interacting with each other, we are going to apply the same set of expectations to our machines as to other people, and when our devices fall short of those expectations, we experience a sense, not simply of disappointment, but of betrayal. We have already seen some people being convinced that their computer is alive, as in the high profile case of a Google engineer. These incidents are likely to increase in occurrence as we find ourselves descending further down into the uncanny valley.
As I’ve said on this blog probably enough times to start sounding repetitive, the dream of AI is the friendly, bipedal robot that has been depicted in so many movies, and if today all we have is a chatbot that does a pretty good job of responding to questions, then that is just the next step on the journey.
I’m sure it won’t be perfect. I’m sure we will use it anyway.