Software engineering is a great job to have—today. We can see the future by looking to the past and recognizing that a good option today may not be tomorrow.
I grew up in the 1980s. In fourth grade my elementary school got a couple of apple computers, and we had the chance to learn Logo. I still remember making the turtle draw pictures on the screen. We got an Apple II in our house a few years later and I took programming courses in high school before studying computer science at MIT.
When I graduated in the 1990s, I was in the right place at the right time. Programming jobs quickly outpaced the supply of qualified applicants. Programmers who were entrepreneurial could not only get a job but build companies and flip them for tens of millions of dollars or more (even if in some of these cases the company was wildly overvalued).
Despite my own success working as a software developer and now as a CTO, I’m going to urge caution to others considering the field. Past results don't guarantee future performance, but in this case, they give a pretty good warning.
If you graduated high school in the US in the middle of the twentieth century you may have hoped to get a manufacturing job, say at an automotive plant.
If you graduated high school in the US in the middle of the twentieth century you may have hoped to get a manufacturing job, say at an automotive plant. The good wages and union jobs were seen as a guarantee of a middle-class lifestyle. The UAW had around 900,000 members shortly after WWII, peaking around 1.5 million members in 1979. Yet the UAW membership today stands at little more than 400,000 active members (including the US, Canada, and Puerto Rico) according to the UAW website. The website immediately notes that the UAW has more than 580,000 retired members—so more retired members than active members today.
The safe and reliable middle-class automotive jobs have evaporated. While conservative politicians have blamed NAFTA and overseas competition, economic analysis notes that 88% of manufacturing job losses came from productivity improvements. The only way we could have kept those jobs was to tell companies not to use better technologies or processes. In other words, the job losses were inevitable, even if hard to fathom from the vantage point of 1979.
Today software developer jobs are widely in demand. Tech unemployment stands at 1.8% compared to a national rate of 3.5%. For years, demand has outstripped supply causing coding bootcamps to spring up. This is despite the growth of overseas tech labor for the US market, first in India, and now throughout Europe, with nascent offshoring in Africa, South America, and China. As more countries develop economically there will be more tech labor, but also more demand for tech labor.
88% of manufacturing job losses came from productivity improvements.
But there’s another factor that must be considered, automation. When I was a younger developer, I was frustrated by having to rewrite the same code over and over. If you’ve written one user management system you’ve written them all, and logging is universal albeit banal. The internet responded, first with libraries and then whole frameworks to automate these rote tasks. Things that took weeks to build twenty-five years ago can now be done in hours. Not to mention that developers stuck on a bug can quickly search and find answers, reducing solve time for problems.
This isn’t due to AI, it’s from the fact that code, unlike manufacturing, is infinitely reusable. Once someone creates a logging system everyone on the planet can use it at little or no marginal cost. As we get more automation more complex things can be automated. AI may speed this up, but that’s not the point. Automation, from AI and other factors, is marching forward. From the vantage point of 2023 software development jobs may seem like a safe career, but they may not be down the road.
Before going further let me point out that I do think teaching kids to code is valuable. First, it helps with logical thinking and problem-solving skills. These skills will help no matter what their career choice. Second, as software becomes a bigger part of our world, understanding how it works will be as relevant as it is for every adult to understand the basics of human anatomy (e.g., What is blood? What do your lungs do? Why does sleep matter?). We teach anatomy to all children even though most won’t be doctors; the same should be true for software.
Yogi Berra once said, “It's tough to make predictions, especially about the future.” In terms of a career, we’re likely to see continued demand for software engineers (and here I’m using the term generally to include QA, devops, data scientists, and related jobs) for some time to come. Likely for the next decade or two. But inevitably, two things will slow down the demand for tech labor.
Some things get automated to a certain point and then are done. Games and medicine may get more complex over time, automating paperwork won’t.
The first is saturation. Video games will continue to get better and new ones will always be needed. Medical technology will continue to improve for many decades to come. The software to renew a business permit online won’t. Once it’s near fully automated that’s it. There will be some maintenance cost for the software, but unlike video games (what year NFL Madden are we up to these days?), some things get automated to a certain point and then are done. Games and medicine may get more complex over time, automating paperwork won’t.
The second, as noted above, is automation. But automation is cumulative. The libraries and core tools built by one person can be provided to everyone else, whether as free open-source software or commercial, to improve their efficiency. Tens of thousands of us wrote logging code in the 1990s. Now a few hundred people do while hundreds of thousands of other developers benefit from logging code far better than anything we had back then.
Getting into software development today isn’t a bad idea. But it’s not unlike becoming an autoworker in the 1960s. The future was bright, but storm clouds gathered two decades later. Unionized auto workers were reluctant to retrain and, to be fair, the newer jobs may have required them to be uprooted and move to a new city or state. Knowledge workers typically have more location flexibility, especially with more virtual jobs.
Software engineers will need a plan if in twenty years 88% of their job goes away.
Anyone getting into software must be prepared to adjust and shift. In manufacturing, 88% of productivity improvements were due to automation. Software engineers will need a plan if in twenty years 88% of their job goes away.
The key is that the value add isn’t just knowing where to place a semicolon or how to connect a database, but to know how to generate value for the company. Today that value is created through writing code. Tomorrow that same value can be manufactured by the same people, software developers, but using less software and more through other means.
This challenge isn’t unique to software. Many jobs, blue and white collar, are going to be upended by automation. While robots replaced assembly line workers, it’s software that is replacing knowledge workers. Again, it’s not necessarily “AI” but that’s not the point. The point is neither toll booth collectors nor travel agents, mechanical and knowledge workers, had their career paths take a sharp turn, and many missed it, hitting a wall. It’s just a matter of time before software engineers and other knowledge workers do, too. The time to start planning for that sharp turn is today.
It’s critical to learn about corporate culture before you accept a job offer but it can be awkward to raise such questions. Learn what to ask and how to ask it to avoid landing yourself in a bad situation.