In November 2022, Open AI released ChatGPT 3. It quickly went viral. Social media is still massively flooded with screenshots and screencasts from the chat. Until now I calmly observed the situation sitting in the corner. But I have recently watched a non-technical video in which the speaker shared his opinion that now developers will lose their jobs, as now ChatGPT can do their tasks. The speaker was not an IT expert in any sense, but that was his impression, and he was sure about what he was saying.
No-code tools
This is not the first time, I have heard about the end of programming made by educated software developers. Actually, even the same year, 2022, I saw posts on Facebook about some tool, whose name I do not even remember, that allowed building computer software without coding. There were such catchy titles like "build an app without coding", "do not waste time on learning programming" etc. I do not remember those statements exactly, but I stick to the sense of the message.
By the way, does anyone remember such wizards like Borland C++ Builder, Borland Dephi, old Microsoft Visual C++ that allowed building a user interface by dragging and dropping? Or CA Gen, which was a set of high level tools to build applications without knowing languages like C, C++ or Java. I do not even remember the names of numerous WYSIWYG tools to build websites. Their vendors claimed that a website could be built by anyone after a few hours of training. I still remember vivid discussions of me and my friends in teenage years, if it makes any sense to learn HTML as there are such great tools.
It was difficult 15 years ago to find a non-startup IT company that did not have its own magical tool for building software with as little coding as possible. And guess what! You actually know the answer - nothing. All these tools are unanimously called "legacy" and "evil". They are the sign of the 90's and 2000's in software companies. We felt the pain of using these tools and maintaining their products. Never again! And fortunately, the IT industry draws conclusions and barely any company tries to build such builder-like tools.
Libraries era
The builders are gone. We have been there, done that. Now, instead of trying to invent a magical builder, we use libraries for the most commonly created code. The industry noticed that while coding we surprisingly often repeat the same tasks:
- deserialize JSON value to an object,
- write a log entry to a file etc.
Some good-natured developers spent their time and properly wrote such methods, packed them into libraries, and now we can just call a proper method from commons-io or jackson. A number of such libraries is so enourmous that whatever repeatable tasks you need to do, there is probably a library for it. You can just import it and use it.
In Java, Spring family climbed a little higher and has whole solutions for security, REST, SOAP and other high level areas. That was not enough. Configuring all those Spring and not only Spring products may be to tedious for humans to do that, so we have Spring Boot. It can handle checking which libraries have been added to the classpath and set the most commonly used configuration values for us. So we could really focus on the unique parts of our projects - tiding it all up to create a business value.
Developers are not needed?
Do you think that those libraries take our jobs from us? Are you afraid that because of Spring you will not be needed? Of course, you do not! Most of us (probably all) are grateful for these libraries and frameworks to exist. The least attractive code is already written for us and we have more time to write more creative code. Wait! Does it mean, that now one developer can implement more features than 10 years ago? Oh, yeah. That is true, and what is wrong with that? Look around. An average software system had fewer features 10 years ago than it has today. Earlier, we did not have software in vacuum cleaners, washing machines. Our phones had just a few basic applications, now 8 GB of operating memory in a smartphone is a standard. Because there are so many advanced apps in that tiny computer in our pocket. The software market is growing rapidly and fast. I will risk a statement that every year, more software is released than the year before. Whatever "more software" means.
Such progress is possible only because we improve and speed up the software development process. Agile, libraries, frameworks, functional programming, TDD, BDD. They all participated in reducing development costs per standard (?) feature. If we want to continue increasing speed, there is no other way than finding shortcuts in programming. Theoretically, we could educate more programmers. Which is happening, but the number of people is limited, so we cannot fully rely on that.
Industrial era lesson
I remember from school a history lesson about the industrial era that started in the 18th century. At first it was perceived as a serious threat to employees. Machines could do more in less time for less money. Now, in the 21st century, when we have more machines and devices around us than any time before, we can clearly see that the unemployment rate is way lower than before the industrial era. Whats more, average working conditions are far better.
How is that possible, you may wonder. Again, look around. We are surrounded by goods. I can afford a car, a laptop, a smartphone, furniture in the house, and so on. Because they are cheap thanks to automated production. That would not be possible without engaging machines in mass production. I remember my childhood. My grandmother had an old rusty washing machine that was often failing, pouring water onto the bathroom floor. She could not afford to buy a new one. 30 years later, manufacturers found cheaper and faster ways to produce washing machines, so my grandmother has a new shiny one.
Future
I believe it will be the same with artificial intelligence in programming. It will help us speed up, deliver more in less. Maybe it will increase quality by peer review. I am not sure if and how soon it will make a huge change, but I am not afraid of AI steeling my job, so shouldn't you.