What should a developer do when AI can write code?

If you as a manager or technologist at the start of 2023 don't have your head around figuring out how AI can improve, streamline, replace or be the basis for your existing business idea, you've probably been living under a rock. Many probably hope deep down that this is a storm that is going to blow over, and will stand strong in this belief for as long as one can. Unfortunately for them, more and more people in the meantime are becoming more and more adept at learning how to use tools like ChatGPT and its further developments in their daily work.

There are currently new startups that build on AI technology almost every day. Whether their business ideas are good or not I'll let time decide, but to me it's obvious that tech companies that don't have some form of AI in their toolbelt are going to be as outdated as those that still employ typewriters within a short time. For our use, at least, I see the obvious space in an extension of where GitHub's Copilot operates. If someone should have been asked to implement FizzBuzz at an interview and had spent more than ten seconds — for example, “Create a fizzbuzz implementation in typescript” in ChatGPT, or “function fizzbuzz”, tab, tab, tab, to finish Copilot — they show that they are wasting everyone's time. The same goes for all other school examples on algorithms and coding tasks.

So we now know that ChatGPT can help us with trivial programming jobs, of the kind where most experienced developers know beforehand what the solution is going to look like. Fortunately, the projects we solve are quite a bit more complex than that. What can be seen, however, is that some of them may resemble each other on a superficial level in terms of modeling and functional requirements. Are you going to have a system to manage users, groups of users, locations, and goods flowing between locations? Do you need a system that will compile information from three different external sources, transform the data, and present it in an API? This sounds like something someone has made before. Why then should you remake it, if you can describe it on a general level and let an AI service write the code for you? In a few years, let alone months, I imagine that one can slam into a description of the system you want with a couple of sentences, and seconds later one will have the first prototype, written in the languages and frameworks you have chosen, running in the cloud service you prefer. If things don't turn out right in the first round, you can throw in some friendly points in the right direction and try again.

Many pieces of this puzzle have been around for a while. I remember the first time I saw a demonstration of Spring Roo, a CLI tool built on Java and Spring where one could enter names, fields, and relationships of the entities in the model one wishes, and it will scaffold up an entire system for you based on these. Back then, it was impressive and a fair starting point for a smaller project, but also limited in what it was able to create for you. If you needed something more than what the narrow design and relational models allowed, you had to fine create it yourself. This type of tool will sooner or later adopt the capabilities of AI tools to derive larger contexts and text based on user input. For example, if one asks such a tool for a digital marketplace where people can buy and sell one or another good or service, it will have seen enough such systems to create something that is both reminiscent of already existing services. At the same time, it will customize the solution for your personal twist or target audience. Although this is only a fantasy today, it is our job to keep abreast of the opportunities we have today and tomorrow.

All this I reckon is familiar, especially if you've already turned your head around hoping to find a glimmer of hope for your own business in the next few years. I'm not going to invoke in-depth expertise, but my hope, nay, my prediction, is that the job as a developer will take a turn toward more fun and interesting tasks if we first open our arms to these new tools. There are a lot of things AI's are good at, but there are a few areas where humans are still superior: Imagination, surprise, and interest are some of them. ChatGPT can tell you in detail about every part of the body you can name, but if you ask it to tell you something that it finds exciting or surprising about the body, it won't have a clue. Because what exactly is a fun funfact that most people don't know, and what is common knowledge? An AI is unable to distinguish this, because for it a fact is (for the time being) only a fact. Unless it is just something it has made up, which it also has an ugly tendency to do relatively uncritically.

And if you lean on this tendency to make up untrue things and ask it to make up a statement that seems plausible but isn't, it can at best tell you things like, “Pi is exactly 3.14,” which are neither particularly fictional nor plausible. It's just inaccurate and incorrect, and obviously so. So the previously mentioned basic human qualities such as imagination, interest and surprise are not today's text generators particularly good at.

So what does this mean for us? When I look at new projects, I tend to look forward to those areas where we are moving in more uncharted waters. Where developers, designers and users may need to test different approaches, where we explore the space of possibilities for what we can do with the available data, where we experiment with creative solutions, untested tools and where new things are discovered through the process. Through this, we get the opportunity to create something completely new, and together think thoughts that no one has thought before. It's just a shame that many projects end before one gets to, or not nearly through, this phase.

You dream of getting there in your startup, but time, money and priorities go a different way as you work your way through yet another system where you have to extract some data from a database, filter based on personalization, apply some makeup, and finally present it to the user. Imagine how much fun it would be if you didn't have to take this whole detour, but rather spend your energy on them difficult the problems? Outline some models, interactions, design prototypes, feed this to an AI tool and to the first demo showcase a production-ready system that solves the customer's immediate needs. A system written with documented, readable, testable, maintainable code, ready for further development. A good foundation to attack the exciting and unknown.

This is what makes me look optimistically at the future of developers. The vast majority of the people I've worked with are smart, creative people who are driven by pushing the boundaries of what is technically possible. Over the years, we have further developed the tools, from punch cards with CPU instructions to high-level programming languages, from reading single bits on magnetic tape, to globally accessible real-time databases. In this sense, perhaps only the natural solution is that the future will be even more high-level than today. With the combined knowledge of thousands of projects, millions of lines of code, hopefully in the future we will be able to focus energy and brain capacity on finding the unique and innovative approaches.

Because unlike an artificial intelligence, I am actually interested. I am curious about what I can achieve and how to solve a problem no one has solved before me. That's the funny thing about the job I chose. And the fact that this could be my future makes me optimistic about using AI in the future. Not to outperform me, but to do what I could have done but couldn't be bothered. I no longer write on a typewriter, and have appliances that take care of dishwashing and heat management. And I'll let ChatGPT write fizzbuzz for me.

Skrevet av
Ola Morseth-Nordbryhn

Andre artikler