If you give some people promotions and not others, you're ranking people.
In an ideal world 'promotions' should be a) a completely separate discussion from pay rises (as in a promotion is not automatically connected with getting a pay rise and ideally you should have to prove yourself in your new position before you even get to discuss pay) and b) not based on how good you are at your current job, but how good someone thinks you might be at the job you're promoted into.
I've seen several cases where the best engineers get promoted into positions of greater responsibility simply because they're the best engineers and completely floundering in the new role because it's largely unrelated to what they're actually good at. On the same note I've also seen fairly mediocre engineers get promoted and excelling in their new role since the new role fit them a lot better.
If you're great software engineer you should be able to spend 20 years at a company as software engineer with the job title software engineer and still get regular pay rises and end up earning the same or more as the senior managers.
I really like the way it's commonly done in German industry. You will typically see a union negotiated compensation table with a very wide range of set pay grades. The entire table (i.e. ever employee) gets a raise every year to stay competitive with the labor market. When you enter the company, you get assigned a grade appropriate for the position (plus whatever additional pay you negotiated). As your value to the company rises, you advance to higher grades.
Actual promotions in the org chart are entirely seperate from that. This can and often does lead to situations where an average engineer makes more money than his team lead.
In an ideal world 'promotions' should be a) a completely separate discussion from pay rises (as in a promotion is not automatically connected with getting a pay rise and ideally you should have to prove yourself in your new position before you even get to discuss pay) and b) not based on how good you are at your current job, but how good someone thinks you might be at the job you're promoted into.
I've seen several cases where the best engineers get promoted into positions of greater responsibility simply because they're the best engineers and completely floundering in the new role because it's largely unrelated to what they're actually good at. On the same note I've also seen fairly mediocre engineers get promoted and excelling in their new role since the new role fit them a lot better.
If you're great software engineer you should be able to spend 20 years at a company as software engineer with the job title software engineer and still get regular pay rises and end up earning the same or more as the senior managers.