Your host

I’m Joel Spolsky, a software developer in New York City. More about me.

Search

Read the archives in dead-tree format! Many of these articles have been collected into four books, available at your favorite bookstore. It’s an excellent way to read the site in the bath, or throw it at your boss.

Careers

Need a better career? We’re bringing together the best software developers with the best companies on the Joel on Software / Stack Overflow Job Board. You can search job listings or even file a CV and let employers find you.

Want to hire a smart programmer who gets things done? The best ones are at Stack Overflow Careers. Info for employers.

We make FogBugz, a bug tracking system that actually works and can be used to manage everything your development team does, from bug tracking to customer email to feature management to project scheduling and more. Try FogBugz now.

I’m designing the compensation package for programmers at Fog Creek Software, and I could use your advice!

Here’s the tentative plan. I’d love to hear your feedback and discussion on any and all aspects of it.

Fog Creek Software hires programmers at six different levels, Level 9 through Level 14, which roughly corresponds to their level of experience, seniority, and initiative. Programmers are assigned a level when they are hired, and may move up or down in level at any point in time.

Levels are set approximately as follows. These are merely guidelines; the real way they are set is by comparing groups of people at various levels and then adjusting based on a consensus of how good they are.

Level

Years of experience

Technology exposure

Initiative and architectural skills

9

0

Two programming classes and incredible aptitude

Can develop code with significant mentoring and review. Intended mainly for summer interns and high school kids.

10

Recent grad – 1 year

Coding for one OS like Unix, two or three programming languages, no API experience

Can execute on a plan or write code that someone else specified, requires some mentoring

Can work independently on a feature and can suggest improvements and shortcuts

12

3 – 5 years

Enough different technologies to be able to make excellent choices of architecture

Can design and architect a feature independently; given an interesting problem to work on, can architect, lead, and build the whole thing; can mentor less experienced developers

13

5 – 10 years

All the above, plus, knows enough about other disciplines to be able to lead specialists in those areas (e.g. networking, wireless, hardware, datacenter, telecom, etc)

Can conceive, design, architect, and lead a team to implement an entire product or company. CTO-like skills.

14

10 years plus

Significant experience inventing and architecting new technologies which are widely used throughout the industry

A “Fog Creek Fellow”: Invents whole new programming languages like C++; extensively known through books and articles.

This level is reserved for hiring people like Bjarne Stroustrup or Linus Torvalds, or promoting geniuses to an independent research position.

Compensation consists of:

Salary

Annual bonus

Benefits

Stock options

Startup bonus

Salary is intended to be very egalitarian, fair, and transparent. Fog Creek will have a simple schedule of salaries (set competitively) based on level. For reasons of fairness, there will be no variations on these salaries from person to person. Everybody knows what the guidelines are for levels; everybody knows what level they are at; and everybody knows what the salary is for their level.

Annual bonus is also intended to be equitable. Each year, Fog Creek management will determine what total dollar amount should be awarded in bonuses. This amount will be prorated according to salaries and percentage of the year that they worked, so every employee will receive a bonus amounting to an equal percentage of their salary: if I get a 11% bonus, everybody gets an 11% bonus. It is our explicit philosophy that bonuses are rewarded based on the performance of the entire company, not the individual. (Also, there is no penalty for quitting the company before bonuses are paid: if you do this, you’ll still get your prorated bonus for the part of the year that you worked. This policy is to prevent getting a wave of people quitting every January and screwing up our lives).

Benefits are equal for all full-time employees. (We may end up with categories like intern and temp with more limited benefits). Some employees may get more “value” out of their benefits than others (e.g., if they use the health clubs).

Stock Options are weighted heavily to compensate the people who take the most risk, namely, the people who join Fog Creek when it’s just a wee tiny company. As the company grows, the initial package of stock options offered to new hires will be lower and lower. At any given time, stock option awards are equal based on level.

Since the basic compensation is set in stone, for the purpose of fairness and equity, the only tool we have to lure people who have great offers elsewhere is with a Startup bonus. This can vary wildly from new hire to new hire. It is mainly intended to compensate for cases where the normal benefits package does not appear to be competitive to a candidate who, for example, has an offer from another firm that is disproportional to their actual “market” value. As a typical example, suppose we’re currently paying level 10s (new college hires) $60,000 a year + $5,000 startup bonus, and we think that’s about fair. If we are having trouble luring a particular hire that we really want, because he or she has an offer from another company for $70,000, we’ll just add $10,000 to the startup bonus and keep the salary at $60,000.

To summarize: as a company, we are very concerned with equity and fairness in salaries. We think it will be extremely valuable to maintain salaries, bonuses, and benefits for programmers at equal levels rather than negotiating individually with everyone and then having people upset that they are not getting a “fair” salary. So, at the point of trying to hire someone, if they simply wouldn’t be happy with what the rest of the team is getting, we’ll dazzle them with a startup bonus but set their actual salary where everyone else’s is set. And if we’re having trouble hiring because of low salaries, we’ll raise the salaries for everyone, even the people we’ve already hired.

So, what do you think? Am I crazy? Is this naïve? Should I hire “compensation consultants” to charge me more than I bill annually just to set salaries? Let me know!