We're at that time of year where we go through everybody's salary and makes sure it's reasonable. We're up to about a dozen in-house software developers, and we'd been paying them based on a compensation system developed by our cousins at Fog Creek, which is different enough from Stack Exchange that there was some chafing.
So we sat down and thought out developer compensation from basic principles, and came up with what we feel is a pretty robust way to pay great people. Here were the core principles on which the system is built:
The development team at Stack Exchange is an amazing group of programmers who live up to our motto of “smart and get things done” every day. We want to offer them compensation that is fair, easily understood, transparent, and competitive. _Fair_ means no games. Our compensation is not based on how well you negotiate or how often you ask for raises—it’s based on a repeatable predictable system. There’s no forced ranking, so other people don’t have to do badly for you to do well. We don’t have a range of possible salaries for every level, we have a single salary, so everything about the system is algorithmic. _Easily understood_ means that any developer can figure out what their salary should be according to this system. They can see what they need to do to move up in their career. And different managers can figure out how to pay their team members and get consistent and fair results. _Transparent_ reflects Stack Exchange’s core beliefs about running our business in the open, without secrets. It means that if a list of everyone’s salary suddenly appeared on Wikileaks, nobody would be surprised enough to be upset. Transparency is essential to insure fairness. _Competitive_ means that you’re earning at least as much at Stack Exchange as you would earn elsewhere. It’s critical to being able to attract and retain the kind of developers we want working for us. If our compensation system isn’t competitive, we won’t be able to hire the people we want without giving them an “exceptional” salary, and exceptions defeat fairness.
One important principle of Stack Exchange is that we do as much as we can publicly, and we try to leave public artifacts of all the work we do. In that spirit I've uploaded a complete copy of the current compensation plan so you can see what goes into compensation decisions at Stack Exchange. The only thing that is not public is the actual, final computation that determines each individual's paycheck, because we have to balance our own philosophy of openness against the individual developer's right to personal privacy.