I remember many, many years ago my boss at IBM explaining that I did not qualify for a raise because I was just over the industry median pay for my band. Honestly, if they had just kept giving me 3% raises every year, it might never have occurred to me to wonder whether I could be making more elsewhere.
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.
Yup. Our team is only allowed to have one person with "Exceeds standards." One. A bastard form of stack ranking. So the mgr picks based on his gut feelings, and then justifies it with a vague review.
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.
I'd take 5% in a heart beat. But I'm not willing to run the interview gauntlet, especially as I get older. There's age discrimination, and everyone wants/expects you to be an expert on ephemeral technologies.
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."