I’m pondering about software engineer salaries and efficient markets.
What intrigues me is how often new software engineers are changing jobs to get significant raises 1, 2, and 3 years outside of school. I see a lot of resumes and it’s actually somewhat unusual if I don’t see a new job every ~2 years on average. That seems to be a lot of wasted domain expertise and skills, as its an immediate net loss when a productive engineer leaves an employer to go be a training burden on a different one.
It seems like it’d be better, overall, if engineers switched jobs less often, because then they wouldn’t be constantly throwing out experience and domain knowledge from their old employers all the time, and the economy would be bigger from all that extra accumulated productivity. So why is this not the case?
One reason I think the observed behavior makes sense: Relevant real world experience dramatically changes the productivity of a software engineer, and the early gains can be the steepest. And I’ve mentioned before that I suspect many engineers at many companies aren’t being re-leveled fast enough to keep pace with the increase in their productivity early in their careers. So maybe the engineer has become much more productive and does the rational thing by jumping to an employer that is willing to share more of that value with higher compensation. I would expect this to be true in thick markets like SF, NYC, and Boston (but haven’t yet found data to back it up).
Also — and I recognize this is true because the dot-com bust happened before I started working — the entire market has been expanding for basically my entire career (OK, markets were in free fall in 2008, but software merely hit the pause button compared to the rest of the economy). So maybe there’s some kind of wage elasticity / stickiness problem…I think in labor economics it’s understood that when demand goes down, it’s very hard to straight up cut employee salaries, so correspondingly, salaries don’t magically move upward when the market moves up. Actually, now that we mention it, many firms are still coming out of Great Recession mode, where it seems like everything is on the table except raising salaries. Combine that with the fact that demand has been ahead of supply for a straight decade, and that seems like an environment with lots of natural incentives for engineers to hop around every year or two to get raises (really, just salaries at the new market rate). And so then you get tables like this:
And then there’s the typical whining about millennial job hopping, how they’re the least engaged generation in the workplace, etc. Employers have become less attached to their workforce in the past generation and vice versa, so there’s probably a self-reinforcing loop there, but also…that isn’t specific to the software industry so it’s not super interesting to talk deeply about. But the pain of interviewing and starting a new job just usually doesn’t make sense unless 1) you’re making more comp / advancing your career, or 2) you’re optimizing for something else, like lifestyle or geography or deciding you need your career to be rewarding and fulfilling because if I’m checking my email and answering pagerduty on nights and weekends I want to not hate every moment of it. Maybe there’s some deeper cultural thing here that’s really hard to untangle and there’s nothing anyone can do about it ¯\_(ツ)_/¯
So I guess there are a few not-exactly-exclusive reasons the current state of the world makes total sense:
- It’s a “multi-armed bandit” problem, where engineers job hop even if they are satisfied, exploring if they might be even more satisfied somewhere else.
- Demand is outstripping supply slightly (and in some markets, a lot), but employers are in denial because they kind of had it easy from roughly 2008 to 2011, and aren’t responding to market conditions fast enough. There’s some evidence of this if you look at quit rates over a recent 10 year period:
- Engineers get more productive with experience and for some self-sabotaging reason, firms are making it easy for their own engineers to get a raise by switching employers.
The other fun thing to note is that developer salaries are definitely headed up, but outside of a few metro areas the rise in national salaries has been relatively modest and not that far ahead of inflation:
But also, the industry has roughly doubled in these years, so account for the likely fact that the seniority of the average developer has dropped during this observation period.