Trying to put together a promotion packet with items or projects that are often orthogonal to "real daily work" feels daunting. "I need an x type of project or contribution for getting promoted" - while at the same time you might feel that if the company hired you fresh, they could hire you at the next level.
The game the company is playing is trying to walk the line where the amount they're underpaying the risk averse who don't leave more than makes up for the turnover cost.
From an engineering perspective we know this leads to worse outcomes in terms of velocity and code quality, but those things are not quantifiable in a way that satisfies the bean counters.
If my manager (lead of 15 devs) went to his shareholders that we want to adjust people's salaries so that they are more likely to stay longer (let's say this cost 300k a year), they would not approve it even if it meant we could reduce the number of devs leaving from 4 to 2.
If he said we need 300k for hiring two devs, it would be approved without a question.
Back-of-the-envelope math based on European salaries.
If turnover is low, leadership will often assume people must be fine with their current compensation, since their data indicates the market continues to clear.
More than once I’ve seen startups go and do a round of comp adjustments after an uptick in turnover.
Sometimes we romanticize tech company too much that we forgot that they are, at its core, just like any other company, and an engineer is just a headcount. Faang sometimes has the ability to steer away from that perception, but it remains true for almost all non-faang. Everyone below leadership is replaceable
That's kind of tangential to the point of this conversation though. They're forced to do so via turnover rather than proactively raising wages, which hurts them far more in the long run.
I’ve seen people go from “irreplaceable” to “not a good fit” when a new CEO comes in.
I’d argue companies are aware that good talent costs money and they are happy to acquire it internally or externally when the arise needs. If no need, then business as usual.
I've been at three companies that have implemented pay equity (and one of those I was the one implementing it). I wrote up a guide to implementing pay equity here: https://www.rubick.com/implementing-pay-equity/ and it's basically as you describe -- have new and existing employees get paid the same rate, with no manager or recruiter discretion.
really? I tend to get worn out and bored after 3 years actually.
For me it usually in 3-6 months I'm able to make complex changes to the existing code. In 12-24 months I'm able to make fundamental changes and demolish some of Chesterton's fences.
If you don't hand out raises automatically then you know that those who change jobs are the ones who would have deserved more. That's an instant loss where you gain nothing from your knowledge. However, if other managers in other companies play the same game, then you have created a tool to judge the quality of your workers.
I don't think compensation should be used as a reward for effort. If you do that, you'll end up creating an incentive for people to only do stuff that looks great for a promotion -- and people who maintain software and don't create flashy new features will end up being under-appreciated.
If you don't think a person "earns" a raise then they shouldn't be working in your team. In a great team, everyone "deserves" a raise because teamwork is the result of the entire team. If a person pulls that teamwork down then they shouldn't be in that team.
IDK, manage? I let go of anyone who is determined to have been a 'hire [that] was a failure.' I also look back and try to figure out what failed in the hiring process. Luckily I haven't had too many failures, because it sucks to let people go - even if they deserve it. Admittedly, I also have never had to hire at the scale of a FAANG.