The weird thing about paying at the 50% line is that it means that your policy is, in effect, "we do not want any above average programmers."
Honestly being given anything under 2.5% is just insulting. Pay freeze or COL adjustment in line with inflation is for a few years in bad recessions imo, like 2009-10 or, probably the upcoming 12-18 months.
Being given 3% is in the neighborhood of "better than nothing", but nowhere near what it should be for an employee trying to get ahead and putting in the required effort.
The lucky team member gets a 5% raise, everyone else is usually ranked as "Meets standards" which merits a 2.5% raise. A few people who need time in the penalty box get a 1% raise.
So what happens is your actual performance doesn't matter unless you make the boss look great, or look terrible. He's a non-tech person, so he can't effectively evaluate you on any other criteria.
This leads to employees doing enough work to avoid being fired, or (as is usual with Stack Ranking) sabotaging other workers.
But then you’d have to run the interview gauntlet again, and frankly that’s just so distasteful that I don’t want to.
1. Your internal leveling scheme for SDEs needs to have been sorted out. External titles like "senior" are pretty meaningless, so one reasonable solution is mapping SDEs to an internal numerical tier so you can differentiate between "senior" and actual "senior".
2. Radford data comes with a trillion job titles. You need to identify the relevant ones and how your internal tiers map to them.
3. In markets where compensation is exploding (Seattle a few years ago), compensation data is a trailing indicator of what market rates you need to pay for new hires. You get fresher, but noisier, signals from candidates who reject your offers and from your personal network.
As a manager, one way to get yourself some wiggle room in the situation you mentioned is using that strict policy against them. Request as detailed a list of roles and compensation bands as possible[2], then creatively interpret the job duties such that you can justify opening the requisition with whatever role provides the most favorable "70th percentile" salary band to attract the talent you want to bring in.
Success varies between companies, but it's not uncommon for larger companies to have latent roles/titles set up in the system that are rarely used, but exist in the benchmark data and have far more favorable salary bands than the roles you'd typically use for your reqs. Or if you can get the full benchmark data itself, you can look through it all and try to get HR to add a net new one to the system based on what you find.
[1] https://radford.aon.com/surveys
[2] https://apps.adp.com/en-US/apps/79131/benchmarking-powered-b...
They will deviate if the field is hot enough and it translates to money for them. They were paying FAANG money to AI/Data Science fresh out of college.
The McKinseys/Gartners/etc of the world talk about the coming advantage...exec hears it and they become more open to these "critical sectors"
I think if software engineers ever decide to collectively bargain, and they want to include comp as an area to bargain on, the easiest thing to do is buy these same datasets and share with members.
This leads to the same phenomenon where you need to work for 2 years to get promoted but if you jump ship your new manager will set your level in line with your salary expectations. And of course the levels are largely meaningless outside of compensation and office politics.
At my original company I was performing Senior-level work (like, literally according to the staff level formalism from HR). But I was told by my manager that to be classified as a Senior-level staff, you have to have been performing Senior-staff level work for at least a year. Therefore being promoted within the organization is a long process. Moreover, with the usual 1-3% raise, you're still in the (low-end) of the pay band for Senior staff, so from management's point of view there's no real problem.
.. and then of course, if you're hired in, you just have a few phone calls, couple of interviews, discussion with the hiring manager and you're at a pay-level and job-level far ahead of existing employees even with identical experience.