I came across this fun article asking whether software engineering salaries exhibit the same bimodal pattern found in other well-paid professional occupations, e.g., doctors and lawyers:
Sadly, a glaring lack of data itself renders insights inconclusive, but the author does raise an interesting question at the end of the essay: why are software engineers compensated so well, particularly in comparison to other engineers or to licensed professions that actively restrict the number of practitioners?
I’ve been thinking about the same question as well, as friends and family with high-school-age kids ask for college and future career advice in the software industry. The idea that the same 4 years spent studying computer science—even when compared to any other STEM subject—unlocks jobs out of school that well above other majors’ salaries is tremendously attractive, and no doubt is fueling some of the current boom in CS class enrollment1.
My theory to explain the bimodal distribution is that it follows the same general pattern as these other professions, in that the jobs clustered at the top are both much more difficult to get, and those who do those positions are truly a few multiples (not 10x, though) more proficient and capable compared to the cluster of folks who make up the lower hump of that bimodal curve. Sports are an apt comparison; if those who play in professional and popular leagues occupy the upper hump of the curve, even the worst players in those leagues make a great living, particularly compared to everyone else further down the line.
The average software engineer in the Bay Area—across all experience levels—is paid $125k, an amount that’s routinely paid out to new grads from well-reputed software companies. That is one major differentiator between the average encompassing all of “tech”, and the more rigorous subset of folks who—while still numbering in the tens of thousands—often get to choose their next jobs from the best-paying companies. The price of entry is passing an interview process that’s still one of the most rigorous I know of in any occupation, and inbound demand for even low-level software engineering jobs has only grown with bigger graduating classes of computer scientists.
So membership within this elite group explains some of the premium, but it’s still a class of engineers that seems to be much bigger in sheer number than that of comparable professions. My other explanation actually harkens back to the “software is eating the world” credo: when software acts as a more efficient substitute for labor, even as it drives costs down, it gets to capture that value and split it among a much smaller number of software developer. That is,
Software firms reduce the cost of supply and in turn increase demand, and do so with much smaller teams who get to reap a greater share of that value.
Of course, this is hardly an unique revelation; the entire drive towards mechanization, automation, and technology has been for the sake of increased efficiency, and their Luddist opposition has been rooted in protecting the working folks for whom such efficiencies displace. In 2018, this plays out as self-driving cars vs. Uber drivers, NLP systems vs. paralegals, and roboadvisors vs. financial planners. The fear of automation and its tendency to drive occupations—some of which are themselves very highly-paid—extinct has been well-documented.
Software is special because it’s right on the technological stack where specialized applications of software development captures business value. Just underneath the software providers are the hardware manufacturers who don’t really get to share in their success. They’re at a point where the products have been commoditized, not to mention that their production incurs per-unit economics that cuts into profits; hardware is hardly ever credited for its role in replacing work. If a secretary is replaced with a dictation service, the business value goes to the dictation software more so than the PC its running on or the microphone used to record the speech.
All that said, this arrangement happens to be the period of innovation we’re currently living through, and there’s nothing that guarantees it’ll stay this way for the application of software and hence the financial well-being of its developers. When software eats the world, it cannibalizes its own as ruthlessly as those in other industries: the job market for webmasters and website operators has come and gone, a function borne by the internet and eventually facilitated by code instead of people. If there is ever artificial intelligence that can understand the model the world as code, then expect the software engineering field to follow the same destructive curve.
Sadly, a whole lot of them won’t pan out.↩