Why aren’t there more software engineers?

One perennial area of debate in the tech industry centers around who’s in it (and who’s not). The constant background noise about the supposed scarcity of developer talent has led to any number of new approaches aimed at bringing more skilled candidates online. All manner of “bootcamps,” career-switcher programs and innovative approaches like Lambda School have emerged to meet labor market demand for skilled software developers, with varying levels of success.

A lot of people have wondered why more people, particularly young people just beginning their careers, don’t go into computer science. Dan Wang wrote what is probably the best summary of the common reasons proffered: that CS is hard, it’s unwelcoming to women and minorities, the degree isn’t strictly necessary, etc. These are all true points.

There’s a bigger question at stake, though – are there, in fact, “too few” software engineers? I’m not convinced there actually are. And if you do grant that this is true, then the reasons for it seem clearer from outside the Valley bubble.

It’s not at all clear to me that the big shortage of talent that the tech industry constantly whines about actually exists.

“Shortages”

There’s a somewhat philosophical question about what a “shortage” of some type of labor actually means. In economic terms, after all, “shortages” don’t exist in a competitive labor market. Labor supply meets demand at some level of wages. If wages are high, then it’s because that is “market price” of that kind of labor. This is true whether you’re talking about software engineers, skilled tradesmen or agricultural workers, all occupations currently experiencing so-called “shortages” of labor. Somehow, neither Google nor Costco seem all that affected by these shortages, in large part because those employers are known to compensate their employees particularly well. Those companies can hire pretty much whoever they want, whenever they need them, and retain those employees very well.

Obviously, not every company is Google or Costco, or has the same financial resources. At least in the tech sector, however, I would argue that most companies who whinge about “talent shortages” are really misdiagnosing their problem. After all, there’s plenty of skilled tech talent in the labor market today, across every demographic. If your firm can’t seem to hire them, it’s a little weird to blame the market.

What the tech industry is really experiencing is a lack of 20-somethings who want to move to San Francisco or New York for jobs at a certain wage level.

There are several layers to this. The ageism of tech hiring is so well-documented and uncontroversial that it’s hardly worth going into anymore. By clinging to co-location of employees in San Francisco (or NYC), tech firms bake in a powerful bias against new candidates who are unable to relocate into the Silicon Valley ecosystem. Those new candidates who are likely to opt in not only possess the material means to do so (effectively requiring several thousand dollars in liquid cash for rents, security deposits and more), but they also leap with a high degree of uncertainty. More than anything else, this is what keeps the Valley affluent and mostly white and Asian, even before all the cultural barriers that ecosystem creates around itself, like the myth of “meritocracy.”

And what about the money, anyway?

As it stands, software engineering is a highly lucrative occupation with salaries that tend to creep into the six-figure range, but it’s rarely “retire early” kind of money. While tech twitter is full of stories about engineers pulling down $500k to $1M at Google and Facebook after a couple of years, this is a bit like gawking about NBA compensation. Vanishingly few software engineers, even outstanding ones, ever manage to board a rocketship like that. Obsessing about those who do encourages young developers to think that they, too, have a good chance of becoming another LeBron or Kobe, and to structure their careers the same way. This turns out to be a disservice to most.

Most software engineers and developers (a distinction I don’t care to parse here) don’t actually stay in those jobs for most of their careers. A large majority of them transition out to non-engineering roles after not too many years coding for a living. There are a lot of reasons for this that are well-covered by others more knowledgeable, but I mostly chalk it up to the natural human inclination to not do the same thing for your entire career.

How do people choose careers?

The most lucrative college major you can pursue today is not computer science. It’s petroleum engineering.

The question of “highest-paid college majors” is extremely difficult to answer in any rigorous way. But among the people who try it, the majors that top the list most consistently are what you’d expect: petroleum engineering, chemical and mechanical engineering and health sciences (physician’s assistants can make $80,000 just a few years out of college!), with computer science somewhere in the mix as well.

The way young people choose careers is far less rigorous or data-driven than grown-ups tend to talk about it, as pretty much any of us can confirm if you think back to your high school or college days. For most people, family or community pressures play a huge part in pointing them in a given direction. This is infamously the case in professions like medicine, law, academia, law enforcement, the military, entertainment/media and politics, where family legacies play an outsized role. I would nominate tech in that list, too. The tech industry is obviously far younger than those, but given its growth and cultural cachet, I believe it’ll begin to play a much bigger role over time.

That last bit on cultural capital is also pretty meaningful. The reason no one cares at all about “talent shortages” in petroleum engineering or agricultural work is because membership in them is attached to almost no cultural prestige. The software industry faces exactly the same “shortages” of talent in the same way as these other fields, yet no one seriously considers starting bootcamps for petroleum engineering or nursing.

But the biggest and least-discussed element here is simply accessibility of jobs. This is a major consideration, especially for those people who, like most, have only superficial exposure to how the tech industry works. Lots of little girls and boys want to be astronauts, but once they realize how unlikely a prospect that is, most of them give it up. Likewise, I’d be willing to bet that the perceived inaccessibility of many careers in software engineering without uprooting one’s life and moving to a far-away coastal metro dissuades many people from pursuing them. Why learn about cloud engineering technologies if you have no desire to ever move to the west coast? Better to study something more “practical” and better-connected to jobs and long-term careers that are actually viable in the place you desire to live.

I truly love watching a thousand flowers bloom in the tech industry’s search for a viable business model to teach people marketable skills coding. I particularly applaud those approaches that have gone out of their way to connect previously excluded people and communities from these high-wage jobs. Yet in a big way, this is a five-dollar solution to a dime-sized problem. Using the internet to distribute knowledge worker teams geographically is the obvious answer. Each day that Big Tech resists this, the sillier it will look in the years to come.

Related posts:


I send out a semi-regular update with the most interesting stuff I've read recently, as well as a digest of my own blogging. Learn more about it and read old issues, or just sign up below. I won't spam you - promise.