Skip to content
Rezha Julio
Go back

Bell Curve Promotions Are Broken

7 min read

Here’s a system that a lot of tech companies use for promotions: take all the engineers on a team, rank them against each other, and force the results into a bell curve. A fixed percentage gets “exceeds expectations,” most land in “meets expectations,” and someone has to be the bottom. The quota is set before anyone looks at actual work.

I have a problem with this. Several, actually.

The math is wrong

A bell curve describes natural distributions in large populations. Height, test scores across thousands of students, manufacturing defects in a factory producing millions of units. It works when you have large sample sizes and truly random variation.

An engineering team is not a large population. It’s 6 to 15 people, hired through the same interview pipeline, filtered by the same bar. You’re looking at a pre-selected group. Forcing a normal distribution onto a small, filtered sample is just bad statistics. If you hired well, most of your team should be performing well. That’s the whole point of a hiring bar.

A 2012 paper by Ernest O’Boyle Jr. and Herman Aguinis in Personnel Psychology analyzed over 600,000 observations across multiple industries. Their finding: individual performance follows a power law distribution, not a normal distribution. A small number of people produce outsized results, and the rest cluster much more tightly than a bell curve would predict. The bell curve assumption is wrong even at scale. At team level, it’s fiction.

It punishes good teams

Say you’re on a team where everyone is genuinely strong. Maybe you hired well, maybe the team has been together long enough that everyone has leveled up. Under forced ranking, someone still has to be at the bottom. Not because they’re bad, but because the spreadsheet needs a name in that slot.

I’ve seen this play out. A solid engineer doing good, consistent work gets a “below expectations” rating because someone had to. Their morale craters, they start interviewing, and within a few months you lose someone you didn’t want to lose. All because a distribution model required a sacrifice.

The reverse is also true. On a weak team, mediocre work can earn a top rating because relative performance is all that matters. The system doesn’t measure how good you are. It measures how you compare to the people sitting near you.

It kills collaboration

Here’s the part that really gets me. If my promotion depends on being ranked higher than my teammates, why would I help them? Every hour I spend unblocking a colleague, mentoring a junior engineer, or doing thankless infrastructure work is an hour I’m not spending on visible, promotable work.

The system creates a zero-sum game inside the team. Your gain is my loss. That’s a terrible incentive structure for engineering, where the best outcomes come from people working together. You want engineers sharing knowledge, reviewing each other’s code thoroughly, stepping in when someone is stuck. Forced ranking makes all of that irrational.

Ed Lazear at Stanford documented this in his research on tournament-based compensation. When workers compete directly against each other for fixed rewards, sabotage and information hoarding increase. He studied sales teams, but the dynamic applies everywhere. Put people in a tournament and they play the tournament, not the actual game.

It rewards performance theater

When you know you’re being ranked, you optimize for visibility, not impact. You pick projects that look impressive in a review packet. You make sure your name is on the high-profile launch, even if your actual contribution was small. You avoid the risky cleanup work that might not pan out.

I’ve watched engineers avoid taking on critical tech debt work because it’s hard to explain in a promotion review. “I spent three months making the deploy pipeline 40% faster” doesn’t sound as good as “I led the redesign of the recommendation system.” One of those has more impact on the team’s daily life. The other one gets promoted.

The system selects for people who are good at looking good, which is a different skill from being good at engineering. Over enough cycles, your senior ranks fill up with people who optimized for the game rather than the work.

Manager discretion becomes kingmaker

In practice, forced ranking comes down to your manager arguing for you in a calibration meeting. If your manager is good at internal politics, you get a better ranking. If they’re new, or quiet, or have too many reports to advocate for individually, you lose out.

This means your career progression depends less on your actual engineering output and more on your manager’s social capital. Two engineers doing identical work on different teams can get wildly different ratings because of calibration room dynamics. The system pretends to be objective, but the rankings are produced through negotiation between managers with competing incentives.

What companies say vs. what happens

The stated goal of forced ranking is always the same: differentiate performance, reward the best, and manage out underperformers. It sounds reasonable in a slide deck.

What actually happens is that people learn the meta-game. Senior engineers time their project deliveries around review cycles. People hoard credit and avoid shared ownership. Teams develop unspoken agreements about whose “turn” it is. The process consumes weeks of management time that could be spent on actual work.

Microsoft used stack ranking for years and famously abandoned it in 2013. Former employees described a culture where people spent more energy on internal positioning than on building good products. Kurt Eichenwald’s Vanity Fair piece on Microsoft’s “lost decade” pointed directly at stack ranking as a factor. When they dropped it, multiple teams reported improved collaboration within months.

The alternative isn’t “everyone gets a trophy”

The common defense of bell curves is that without them, managers would rate everyone highly and nobody would be held accountable. And yes, rating inflation is a real problem. But forced distribution doesn’t fix it. It just replaces one distortion with another.

Better alternatives exist. You can evaluate people against defined criteria for their level rather than against each other. You can separate performance feedback from compensation decisions so the review process isn’t contaminated by budget constraints. You can use peer feedback and work artifacts instead of manager-mediated rankings.

Some companies do this already. The ones I’ve talked to engineers at tend to have higher retention and, anecdotally, less internal politics. It’s more work for managers, which is probably why many companies default to the bell curve. It’s easier to administer. But “easy to administer” is a weird reason to use a system that makes your best people want to leave.

The real cost

Every time a forced ranking system pushes out a good engineer who happened to be on a strong team, or promotes a mediocre one who happened to be on a weak team, the company pays for it. In hiring costs, in lost institutional knowledge, in the slow erosion of trust that makes people stop taking risks.

I keep coming back to this: the bell curve is a model for describing populations, not a tool for managing people. Using it to decide who gets promoted is like using a thermometer to decide what to have for dinner. The instrument isn’t designed for the job.

If your promotion system requires that some percentage of good engineers be labeled as underperformers, the system is broken. Not the engineers.


Related Posts


Previous Post
The Skeptic Who Got Benchmaxxed: What Actually Changed About AI Coding Agents