I tried Joel's salary scale method, and the results were...
Joel Spolsky recently published an article about the public salary scale system at Fog Creek Software.
At it happens, I've been following Joel since he first wrote about that system back in 2002 or so, and my software company at the time used a salary system modeled after his. Here's my story.
The NITI Employee Level System
Joel has plenty of rationale for his system. You might agree with him or not, but we only needed one reason to adopt it. Programmers love algorithms but are terrible negotiators, so turning your salary calculation into an algorithm is a receipe for instantly higher employee satisfaction and less Stupid Management Crap. Right? As I was in the Stupid Management Crapper at the time, this seemed like the perfect plan for me.
And you know what? It worked.
"Worked," in this case, meant that people generally didn't complain about their salaries, and especially about their salaries relative to other people. Whenever people hear about Joel's scheme, they always bring up an odd concern: that this only changes the basis of salary negotiation, so instead of "negotiating your salary," you'll be "negotiating your employee level." Well... yes! That's exactly what you want! Money is stupid and meaningless. Your employee level is one step closer to the quality of your output, and as a Manager who is trying to not be Crappy, I'll be happy to discuss your output and how to improve it, and by extension, how to get you to the next level.
Another concern people have is that a public level scale will encourage people to start comparing themselves to others and getting jealous. Well... yes! That's exactly what they did. Or rather, they started comparing themselves to others, with an emotional response that had to be carefully managed.
When you start talking about the relative value of one person versus another, it has serious emotional and social ramifications. You have to manage it carefully so it doesn't go wildly off course.
That's true even if you don't have a public scale. If you want to learn about jealousy, try paying different salaries to different people at the same qualification level, just because one guy negotiates better and you think you can get away with it. Trust me, someday someone will find out, and it won't be pretty.
But back to jealousy. The problem of jealousy was foremost in my mind when we brought in the new system. Speaking of which, bringing such a system into an established company with traditional secret salaries is tricky!
It was important to set the tone from the start. The way we did this was to take a survey of everyone: we asked each person to name two people in the company that they thought should be at a higher level than them ("betters"), and one person that should be at the same level as them ("peers"). Note that we didn't ask anyone to name someone who should be at a lower level; that's bad form, plus the math would give us that answer anyway.
We did a quick topological sort (after dealing with a couple of inevitable loops in the graph), and what did we find? The results were, in fact, extremely interesting. There were almost no disagreements about relative level. In fact, as I recall, there were only two people who "mistakenly" chose someone below their level to be in the "betters" pile; those two people were the ones who ended up at the maximum level, so as it turns out, they had no choice. (They each chose each other and one other person. As statistics go, this experiment was pretty convincing.)
Yes, yes, but I can tell you're still waiting for the jealousy.
So all those people who named people as "better" to them. They were jealous, right? I mean, it's sort of like signing your own execution order or voting in favour of a tax hike; you know that you're basically giving away money by playing this game. Someone you selected is going to end up getting paid more than you.
But amazingly, that wasn't a problem. We were a company where people respected each other, and we played the ranking game on the basis of respect. If you respect someone enough to identify them as someone who's better than you, you're not going to be jealous of them. You're going to try to be more like them, so that one day you can be as good as them, and then (incidentally) get paid as much as them.(0)
It worked. Human productivity, to a surprisingly large extent, seems to thrive on low self esteem. Feeling like there's something to live up to makes you work harder.(1)
There was a flip side to this, however. We had spent so much time making sure that people at lower levels wouldn't be jealous that we forgot what it would be like for people at the highest levels. In fact, for us, that was the biggest problem of all with the public salary scale: managing the people at the top.
It's kind of like giving out an "employee of the month" award; the results of those awards are demonstrably negative. It might make the person at the top feel important - although usually it makes them feel singled out, vulnerable, and embarrassed - but it devalues the idea of hard work. You're at the top, now what?
This was really hard. Think about career growth. For people at lower levels, we could (and did) encourage everyone to choose a mentor or role model; someone at a higher level who had a skill or skills that they could try to improve on.(2) People at the top, however, had no such easy goals. What do you need to do to progress to the next level? I don't know. What does the next level even look like? I don't know. What does the next level get paid? I don't know.
We only had one developer ever resign while working for me. He was at the highest level; he quit because he felt he wasn't being challenged and thus didn't feel as productive as he thought he should be.(3) He also thought the level system was stupid; I remember that he was quite insistent that he shouldn't be ranked so highly, and I reminded him that literally everyone else in the development group thought otherwise, including me. And I honestly didn't know what he could do to feel more productive.
So anyway, jealousy. Don't worry about jealousy. As long as you're ranking fairly - and don't worry, with a public scale, people will gladly tell you when you aren't - then jealousy is not your problem. Your problem is finding ways to help your best people stay happy and achieve levels you haven't invented yet. That problem is the one that defeated me, but I'd rather have that one than any other.
And then we stopped
Eventually, we ended up switching away from the public salary scale back to an old-fashioned private one. We did it for lots of reasons, and we learned a lot from that process too.
One reason is that I was working pretty hard to make myself irrelevant; I'm a company starter, not really an empire builder, and it was important to find someone more suitable to manage a large number of people. We found someone like that, but he didn't like the public level scale; he was more of a traditionalist.
Also, the rest of the company (ie. all the non-engineers in our head office) did not have a public salary scale. Joel has it easy; it sounds like almost everyone who works for him is a programmer. But how do you compare someone in sales, or marketing, or tech support, and rank them on the same salary scale as a programmer? Can you even put tech support people on a scale? And salespeople prefer commission, is that a scale or is it different? Anyway, they weren't too happy with our programmer salary scale, largely because they were getting paid less than our programmers. Not that they expected to be paid as much as our programmers, but... what if I'm the only one? What if everyone else in my whole department, all with private salaries, is getting paid way more than me? I mean, everyone in programming, even the junior developers, gets more than me. Am I a chump?
In other words, partially public salary scales are not a good idea.
And combined with all that, finances started getting tight. That meant we couldn't scale up the salary scale effectively - not even to handle the effects of inflation. When you don't have the money to pay someone at the level everyone knows they're worth, what can you do? If it were up to me, I might have thought hard about really serious action, including layoffs. After all, wouldn't it be far better to lose someone from the bottom level than to make someone at the top feel that they were being treated unfairly?
But it wasn't up to me, and it might have been a bad idea anyway. We took the easier route: we took the salaries private again. I was busy in other departments after that, but my understanding is it went exactly as you'd expect. The people who threatened to quit got big raises to try to retain them; the people who didn't threaten to quit didn't see any raises at all.
Eventually half the department resigned, and the other half was forced to leave when we closed our Montreal R&D office. And that was that.
(Lest you think this is an entirely unhappy ending, several of our former developers have gone on to work at Google, and others have founded companies like Navarra, EQL Data, hbus.ca, Carillon Information Security, and more. NITI itself was sold to IBM last year and is now known as Lotus Foundations.)
I'm now working at a totally different software company that's a spinoff of a bank. The bank is expertly managed, and filled with highly competent people across all roles. But I don't know if those people are getting paid fairly, unfairly, or exorbitantly: the salaries are kept private.
And you know what? It works fine.
You can argue about salary scales all day, but the fact is, none of it actually matters. What matters is that people are happy with their job, and they feel like they're being treated fairly. The best way to achieve that is to treat people fairly. If you don't have anything to hide, then you don't have to worry about whether it's hidden or not. Just get your job done.
(0) Of course, by then, you hope they'll have been promoted. Nobody actually wants to catch up with their heroes. It's depressing.
(1) I personally wasn't assigned a level, unless you counted the fictional "level 13." Let's face it, there was just no way to do that objectively. Even if there were, it would have been entirely counterproductive if I was objectively less productive than someone else (which I quite possibly was), and thus got assigned a lower level. What better way to destroy someone's faith in a company's leadership than to tell them outright that the best people aren't the ones in charge?
(2) Our employee self-evaluation was a 2-page form with essay questions. Some people said it took them all weekend to fill it out, because the questions were really hard and they had to think a lot. As much as our evaluation scheme was unpopular with some people, I remain really proud of it. Your skill level, what you want to improve, who you can learn from, and why, are all serious questions that you should take a couple of days to think about every now and then. I filled out the whole form for myself in half an hour, and I'm proud of that too.
(3) He was right.
ssh+2FA to all your machines, anywhere, without opening firewall ports.