I tried Joel's salary scale method, and the results were... mixed.
alumnit.ca
alumnit.ca
But then, I think that's the whole point of Joel's system. Sales people are paid on commission because it's a direct reflection on their skills. Likewise, I think that assistants and tech support staff probably should be allowed to negotiate since negotiation is a key skill to their position. Where Joel's system works is that a programmer's primary skill set does not involve selling and does not require negotiation/interpersonal skills (at least, not as a primary concern).
I think the only problem the author really had (aside from the apparent disinterest in seeing the system through) was one of messaging.
And he's right. This works really well for programmers who like things to be algorithmic. It doesn't necessarily make much sense to the non programmers. That doesn't mean it's wrong, just "different" for them.
We do audition style interviews... meaning when you come to interview for a programmer position you write code all day. If you come to interview for a sales position, you will be selling all day during your interviews. If you come to interview as an office manager, you will be doing those tasks during your interview. We don't sit and have long conversations about where you see yourself in five years.
I can tell you that we've never had a single programmer that thought this interview style was strange. We had two office manager interviewees walk out during the middle of the interview. That style of interview was just strange to them and freaked them out.
I'm sure it works amazingly at his company, but his is almost always the exception to the rule.
At Fog Creek, there are several levels that no developers have achieved yet. I'm fairly certain that if someone did achieve those levels they'd rearrange the system to create a few more levels, so that everyone has something to reach for and some idea of how to continue to improve themselves.
If he'd had a much bigger vision, he probably could have (as you indicate Fog Creek has done) included future levels for growth.
You motivate the best and supply them with concrete goals by asking them to try to teach--which ultimately sets them up to be better managers down the road.
I think the key is to leave several levels at the top empty, open to advancement.
Wow - I couldn't disagree more. That's the absolute worst problem you can have. Anything that encourages your best programmers to leave is poison.
Humans are this way. We are a jealous and want-it-all-even-if-we-dont-deserve. It's not a problem of salaries or level, it's a human problem.
Said that, I say that Joel's method seems a better to me.
Whereas in this case the ranking was just related to the respect of your peers. Also, once you become extremely competent in something your skill becomes mostly unconscious. So basically these top employees were told that for reasons they did not fully understand, they deserved to be pay more than everyone else. So while the salary was simple, it probably came across as extremely subjective to those people.