> Why not give everyone the same bonus based on company performance? Make it collective good.
I don't know whether this is common in other industries, but at top American law firms, salary raises and bonuses are lockstep. That means everyone gets paid based strictly on seniority. At many firms, this even carries through the partnership ranks.
There are benefits and disadvantages to such a system. The benefit is that it reduces competition between workers, and reduces unproductive credit-seeking. When you rank people against each other, the focus ultimately shifts to optimizing to the ranking metric, which is inevitably different than actually optimizing job performance. Such systems favor people who are good at taking credit, not people who get the best results. Lockstep systems also increase cooperation: nobody avoids helping someone else or avoids working on a stronger team for fear of the zero-sum nature of rankings.
The downside is that strict lockstep systems keep you from giving superstars extra compensation. This can be a liability if you don't have a uniformly high quality of employee, because superstars will leave for companies that offer individualized compensation. That being said, the advantages of individualized compensation decrease as it becomes more difficult to achieve true measures of individual performance. Nobody complains about individualized performance ratings on Wall Street, because it's easy to compute how much money a trader made for the firm or the value of the deals an investment banker worked on. The relevant metrics are objective and hard to game. It's much more difficult to evaluate a programmer's contribution to a development team.
The most troubling thing to me about stack ranking is not ranking per se, but the fact that stack ranking is applied by HR departments. This issue has come up before in the context of hiring, and what I said then is the same thing I'll say here: HR should not be involved in hiring, or firing! It's perfectly okay to identify weak performers and fire them, but it should be an organic process that happens based on the decisions of technical leadership. HR folks are administrative people. They're there to fill out W-2 forms and keep you from getting sued by disgruntled employees. They do not have domain expertise and do not know what makes for an effective technical employee.
This is an area where tech companies need to take a page from Wall Street rather than traditional Big Corps. At an investment bank, a banker decides who to hire and who to fire, not some HR person who has no understanding of banking. To make this system tractable, firing decisions are made at a low level, early and often. That prevents getting into a situation where the organization builds up a glut of weak performers that need to be fired in some comprehensive and systematic culling.