I occasionally hear the odd person in the tech industry grumbling that the quality of software developers is “in decline”, or expressing a complaint along the lines of, “it’s getting harder and harder these days to find the good developers”.
How much of this is groundless nostalgia for “the good old days”, and how much of it, instead, is a fair assessment of the state of the state of tech industry?
A large part of these complaints, I believe, can be dismissed as nonsense. In the booming and largely unregulated field of tech, people will often find themselves being hired by recruiters and/or managers who don’t know how to code, and who lack the appropriate expertise to judge the quality of a software developer.
These people will hire based on matching key-words in the CV, and on coding tests which may well be misconceived. They will be impressed by candidates who can code quickly rather than by those who take their time to think about the problem, and they won’t always know how to recognize true talent in programming.
Many of the complaints about the “decline” of software developers come from that part of the industry, and can safely be ignored. A few others, however, come from more authoritative sources, like C++ creator Bjarne Stroustrup, who famously said that the “effective formal education of the average software developer has declined.”
What are we to make of these claims?
Let’s go straight to the point: these arguments are broadly correct, but they need to be put in perspective. Taken out of context, they appear to legitimize an attitude of elitism, while in reality they should be doing exactly the opposite.
First of all, a few facts. That of the developer is a very new profession; it only came into existence in the late 1950s, and for many decades it remained exclusive to people in the richer countries working on super-advanced technological projects.
Today, it is estimated that there are over 25 million developers in the world, including people in developing countries. It is a simple statistical fact that for any sample of people, the larger the pool you have, the more likely that the average person in your sample will resemble the average person outside of it.
Furthermore, the farther back in time you go, the more does coding technology become rudimentary, unintuitive, impractical and difficult. The earliest developers needed tremendous innate intuition and technical preparation to code what by modern standards would be elementary applications. They also needed a strong aptitude for mathematics, which is where the false myth – which our students have disproved again and again – that you can’t learn to code without being a mathematical wizard comes from.
By contrast, much of the technology involved in coding today is about making coding itself easier. Making your vision come true on a computer is easier today than it ever has been. A game developer, for example, doesn’t need to code her game engine from scratch – she can simply use Unity, which is free, and which can do all the heavy lifting while the developer dedicates herself to the more creative aspects of the game.
Inevitably, then, many more people are entering coding professions because there are more outlets for a normal career path, rather than because they happen to be inordinately talented at something nobody else can do. But the essential caveat is that this growth is not coming at the expense of the more brilliant programmers. Much like the fact that football being played by everyone in the world has led to professionals in the sport being much better than they were when the sport was only played by the British gentry, likewise outstanding developers are far more numerous and more skilled today than they were in previous decades. The lower average ability of the person who can code today is a clear sign that the industry as a whole is moving forwards, not backwards.
It should also be noted that the professional domains where an ability to code is useful are growing exponentially, and in the process absorbing tasks that are relatively mundane. Whereas computer code used to be necessary only to calculate the trajectories of advanced military rockets, nowadays it can help ordinary people working in schools, hospitals and public services. These jobs don’t always require the most brilliant minds to be performed, but let me say this once again, this is a good thing. It reflects the simple fact that more members of our society are profiting from the rise of software.
So in conclusion, yes, it is true that the average quality of the professional software developer is in decline, has been declining for several decades, and in all probability will continue to decline.
This, however, is not due to a general decline of the discipline or the industry, but to their continued progress. It is the result of an ordinary process of statistical adjustment.
This perceived decline has nothing to do with an erosion of the elite class of programmers, but to the expansion of that same elite coupled with the fact that coding is no longer just for the elite. For all us, except perhaps the grousy, underqualified recruiter, this should be a fact to celebrate and not to deplore.