Or why an AI will replace software developers.
Software Engineer (noun): someone whose job is to create computer programs. Synonyms: programmer, coder, computer programmer, developer.
Until a few years ago, hearing the answer “software developer” or “programmer” to the question “what do you do” was common. More recently, almost everyone will reply instead “software engineer”.
As the name suggests, a software developer is a human that develops software. Usually, that means translating more or less vague instructions given in a human language (e.g. “sort this array of numbers”) to a language understood by a computer.
Recent years (see fig. 1) have seen the rise of Software Engineering. Everyone is a software engineer nowadays, whether they write a short script in YAML or design and program complex business logic.
The traditional disciplines of engineering (for example mechanical or civil engineering) require solid academic and scientific foundations. No one allows you to design a bridge, or a building, without studying the science and physics behind it. Moreover, usually, those professions come with some responsibilities [1].
According to some surveys, one third of software developers don’t have computer science degrees [2].
Computer science, tough, has a solid theoretical foundation, from Alan Turing to Claude Shannon, from John von Neumann to Marvin Minsky, to name a few examples.
However, writing code without knowing anything about asymptotic notation, computability, graph theory, or matrix algebra is possible. Even kids can do it.
In fact, most of the time, the code we write does not involve complex problems like finding a Hamiltonian path, but is more down to earth like “update the cart with the total amount due at checkout.”
So most of us are indeed software developers or better, software artisans. And exactly like artisans we becomes better at it day after day, learning on the job.
En passant, I do not advocate any barrier to enter the job of programming. I saw many times, though, that having a solid theoretical background helps you solve complex problems and develop optimal solutions.
Writing code is effectively like translating from your native language to a computer language. We use the same word, language, or programming languages, to describe the instructions a computer understands, and we have several different programming idioms.
If talking to a computer is talking a language, then it is very well replicated by an Large Language Model, LLM [3], as we have seen many times recently.
There have been many cases of an AI writing code very effectively. You do not need to be a genius to be an artisan, but you need to learn on the job day after day. Current LLMs learn on the job at a speed that is not humanly possible, with an amount of input that is not humanly possible, obtaining results comparable with humans, if not better.
The next generations of LLMs will completely disrupt software engineering jobs, pardon, software programming jobs. How is hard to say now, but in the first step, humans will focus on breaking complex business logic into small tasks, each programmed by an AI instead of a human programmer.
References
[1] Programmers: Stop Calling Yourselves Engineers, The Atlantic, Nov. 2015, retrieved Mar. 2023
[2] Levels of formal education for software developers, worldwide, as of 2022, Statista, Jul. 2022, retrieved Mar. 2023
[3] What is a Large Language Model (LLM)? MLQ.ai, Jan. 2023, retrieved Mar. 2023