Over the last few years I've randomly run into articles and/or posts (example, example, example, example, and others) that assert definitively that software developers/ engineers are paid too much for the work that they do. The "TLDR;" is that the jobs are considerably easier than many technical jobs (Doctor, Electrical Engineer, Lawyer, etc), and often so is the training, so it seems almost unfair that software engineers are paid the way they are. Especially considering that many software jobs are working on seemingly trivial details such as optimizing buttons or forms.
In general, I've held conflicting opinions about this thesis. On the one hand if you're getting paid $250K/year to update the css for a button yeah maybe the pay is a little high (seriously though who leverages their people that way?)... but on the other hand some software engineers are up there with the greatest minds on the planet right now and they probably aren't capturing a fair amount of the value they are generating for the businesses that they are working for.
The latter point of the two made me wonder:
What if developers are actually underpaid?
While it may seem a little odd to question if individuals making 2X-8X the average US salary are being underpaid I think there's actually a reasonable argument to be made. For starters, there tend to be lots of of theories around developer pay that focus on on labor market efficiency (danluu identifies a number of theories in "Is dev compensation bimodal").
Aspects such as: the limited supply of developers or increased demand as the technology sector continues to grow (i.e. "software is eating the world"). Another theory is that software engineering salaries can be high because certain individuals are actually just more productive (i.e. the mythical "10X developer"). Because of these heroic individuals programming salaries are anchored to a higher position than the should be or put another way companies are fighting for talent (where the argument that dev salaries are bimodal comes from). There is yet another theory that Software Companies are just worth more and so the people that know how to build them are therefore worth more.
Personally, I find many of these theories can provide some explanation but I think the macro economic environment is a better explanation.
The US loves Venture Captial
Over the last 30 years the number and size of US Venture Capital investments has increased dramatically. In 1991 $3.4 billion in venture capital was invested by US venture funds (ref: SBA Trends in Venture Capital Funding ~1997)... in 2019 there was $136.5 Billion invested. Put another way: "there's a shit load of money in the system"
[Note: I am very aware that not all companies are Venture Capital backed. I am focusing on Venture Capital backed companies because they are the "rising tide that lifts all boats"... meaning other companies have to compete with VC backed companies for the same employee talent pool. If you want a pretty solid explanation on how Venture Capital works read this article]
The reason that there is a shit load of money in the system is because technology companies, and more specifically, software companies have had great return on investment for the last 30 years. Sorry did I say great? I meant mind-blowing returns (example). How do they get returns like that?
Simple. They only invest in high-growth, high-return businesses (like software).
To restate- there's more venture money than ever being invested in (software) companies, with the sole condition that they grow like crazy or die (e.g. the Gumroad story is very illuminating). This state of affairs has influenced the developer labor market by raising developer salaries for those with experience and consequently making it more difficult to break into the industry which furthers the developer "shortage".
... but is there method to the madness?
Let's say you're a founder (software) and per your deal with the VC you have to grow fast. To do that you have to build your product fast, which means you need experienced people to build it (because you don't have time to train new people). You go out and recruit looking for talented engineers, but everyone already has a job. Not just that, but they all have good jobs because this VC cash has been flying around for 30 years already. So you finally find someone, and they say they're only willing to come over to a high-risk startup for an extra $30K above market comp for their skill level. Well you look at your situation and you have tons of money but no time... your answer is almost certainly: "fuck it... hire them."
...And this is the state of the industry.
Hell, only ~25% of US STEM graduates even work in STEM jobs (link) - no doubt at least a few of them would be smart enough to be retrained to do software engineering.
Here's the thing though, we don't need more STEM people or more programmers... we need more EXPERIENCED programmers because our industry doesn't have time to train new people. So long as there are enough over-sized returns going back to venture capitalists, software developer salaries should continue to go up.
To some extent developer salaries are influenced by the fact that:
- We don't have enough experienced people building software to meet the demand
- Software is eating the world and/or more software is still needed to be built
- Experienced engineers are actually more productive than people manually doing it or multiple junior engineers
- Software companies are worth more (and they return more)
... but as true as these points are, $140 billion is being spent basically telling founders to ignore the "rounding error" on compensation when hiring an engineer and get building your business.
Which brings me back to my main point...
Assuming you don't completely disagree with the aforementioned state of the industry (I totally get it if you don't agree).
- Venture Capitalists need software companies to get their returns.
- Software companies aren't software companies without software
- You can't have software with out software engineers.
So are software engineers being underpaid?
Yes, or maybe.
Venture capitalist returns have been fairly consistent and Software Company founders have enjoyed an asymmetric risk/reward payout when they succeed... it feels like labor is missing out on their chunk of the pie when considering their leverage and the actual work being performed.
Now, I totally get that there is a labor market and that the returns for an individual startup could be hard to predict... but I think we also need to be realistic that many of these businesses are simple conversions of analog businesses into digital businesses. It is reasonable to believe that the market could actually bare higher developer salaries as a whole if employers thought that they were receiving adequate value for their money. And if the market can tolerate it why then wouldn't we expect the labor market to react in turn?
I'll start by saying I don't know the answer (not to mention that would be a whole other article on its own), but my guess is that the labor market is just inefficient - which is something that software engineers could possibly take advantage of. I think we all know (anecdotally) the industry is really bad at evaluating developer productivity (the way project estimation is conducted should be all the evidence that you need). The industry is also really (really) bad at interviewing and evaluating talent opportunities. Things could be confounded further because engineering culture doesn't value soft skills (such as negotiation) nearly as much as technical skills. This arguably causes engineers to "leave money on the table"... by not maximizing their compensation opportunity.
The last thing I want to add is that VC related macro economic trends probably aren't the only thing making us FEEL like engineering compensation is a bit high. A missing asterisk with all these discussions is that US hasn't seen any noticeable wage growth for what, 4 decades? Compare that to a 75% increase in Entry level wages at the larger tech firms over the last ten years (~$80K in 2010 to ~$140K in 2020)... yea things are going feel a little off. If wages across the country were up 40% like we experienced between 1947 and 1960 I feel like the narrative would be different. Other historical periods that compare well to the "information age" saw wages grow considerably (the industrial revolution, post-plague europe, post-WW2, etc.), so why is this transformational period different? I don't know but we certainly are feeling it more.
Obviously this is an essay not a research study, but if you are going to take anything from this:
I think its reasonable to assert software engineers are actually commanding reasonable wages that probably seem inflated more than they actually are inflated. Similarly, I would guess that the industry could benefit from building a better understanding of developer productivity/ how to train engineers rather than just throwing money at the problem... which would probably benefit a lot of engineers too. Chances are they are probably worth more money than they are currently being paid but have no way to know it.