Wanted: Product Engineer - Ruby on Rails at Kickball (Palo Alto, CA). See this and other great job listings on the jobs page.
Here's some feedback from my original programmer compensation article. Based on this feedback, I rewrote the policy: the new one is here.
Also - the 10 years plus fits a great many people - like myself. If anything, those are the people with the CTO-like skills. Level 13, CTO-like skills with 5-10 years of experience...well, that's partly why so many "dot coms" are "dot going away."
Personally, I like performance-oriented compensation. And companies that are slow to hire and quick to fire stand a better chance of insuring they have credible, reliable technology staffs.
I'll probably have some more useful comments later.
- David Geller
Of course, you've removed almost all individual incentives, which may or may not be ok.
Might I suggest a radical approach when it comes to the stock options? Silicon Valley craziness has made granting stock de rigeur, but it doesn't really accomplish what it's meant to. Usually, only founders and top management own enough stock to make them care deeply about the company's fate and problems. With later-term employees, they own a bit to make them feel franchised, and can be incented through promises of more.
Unfortunately, it's with the early employees that stock options tend to fail. They have too much for subsequent grants to make much of a difference, and too little for them to be committed to the same extent that management or founders are.
Also, if you mis-plot the risk curve that determines how quickly option grants scale down, there's almost nothing that you can do to rectify the situation later (short of granting a boatload of options to the later people and destroying your stock structure forever).
I'd suggest a different approach, that doesn't apply forever - profit sharing. You can share a very large percentage of the company's profits when the company is young, and slowly bring the percentage down over time as the company matures. At the end of the day, it amounts to the same thing, as the discounted profit stream is the equity value of the company. However, you avoid irrational temporary market swings, and more importantly, if you make an allocation mistake, you're only stuck with it until next year, not forever.
The situation that you're trying to avoid is having someone mediocre but early sitting on a ton of options whereas someone who has joined much later but is doing a great job has far less stock. Best intentions aside, it happens ALL of the time, unless you've been a genius about keeping the risk / reward ratio sensible.
Of course, options have positive tax benefits over profit sharing, but you get my drift.
- Naval Ravikant
People who do/try different things could also have the edge over those who exclusively program - for instance, I reckon that my 10+ years as an analyst programmer working on different systems certainly helped me be a better dba.
Also be wary of the person who has had superficial exposure to heaps without being expert in any - they abound.
I am sure that you know where you are going with this and will succeed admirably. You should know your market and what you need to pay/offer to get the right people.
- Dale Goopy
However: your startup package exhibits a flaw. By inflating the appearance of compensation rather than actual compensation, you draw certain types of individuals, don't you think? Consider your case of the new college hire. She (to pick a random gender) is offered a position for $70k / year by a competitor. You counter with $60k / year, plus $15k startup. "Woo-hoo!", she thinks, "I'm rich! $5k extra!" After two years, howver, the competing job would have grossed her $140k while yours grossed her $135k, and this delta increases by 10k / year. She is probably one of three types of people, it would seem:
Do you really want any of these people working for your company?
Also, your equality of salary increases the granularity of your system. This generates a stair-step: an employee knows not to expect a raise (at least one unequal to that your coworkers receive) until he or she crosses a certain threshhold. It leaves the employee in the situation of saying "I made level 13 eighteen months ago, so I probably have (on the average) three and a half years left until my next significant pay increase." This person may foresee greener pastures, methinks.
On the whole, I think this plan has significant merits. I do think it requires some tweaks, however.
- Joshua McGee
I wish I knew the answer to these questions. I think you're right on having an open and fair policy, I tend to believe that an open book is essential for fairness. I'd guess that the issue of the startup bonus incentives offered can then be influenced by the group of programmers you already have (often loosely referred to as 'the team' ;).
If (following your example) the potential new hire understands your system, but goes on to take the other position anyway, at least they may be tempted back after they're in place & get over the honeymoon period. (not that you'd want to make this a habit of the hire ;).
I think one of the big things that's missing from many organisations is that when someone accepts a position, there's a whole plethora of lifestyle issues to be covered. Where the applicant can see that the new workplace welcomes their lifestyle, and offers a balanced merge between the lifestyle and work, then you're bound to have them being settled in working productively sooner.
- Ray Goopy
I think the salary ranges should be based on the market and location. For instance, I live where 40k a year is a nice salary. I have been recently offered a job in San Francisco for 74k but up there that isn't very much.
Or, are you basing the salary on your area?
Also, you mention college grad. Does that mean all your levels require some college?
As far as signing bonus, if I were going to re-locate a signing bonus is very important.
Just thought I would provide some input.
- Scott Burton
- Sid
But then, after 13 years in the corporate world, I've found I'm much much happier being freelance, so what do I know? <g>
- Dori Smith
I assume you got these levels from somewhere else you've worked.
Why not just cut through the obfuscation and make 'em 0-5 (or 1-6 if you feel bad about someone being a zero)? If you're keeping slots open for administrative, QA, and janitorial types, why not just put 'em in another class entirely?
You've got interns on the list, and you've got team leaders, but you have no spot for a senior programmer who has no desire to lead a team. There are lone-wolves like this who simply don't work and play well with others. Maybe you're not interested in hiring them, but if you are, you should account for them somewhere.
You also don't seem to have a place in your matrix for a teacher. By that I mean a mid-level to senior programmer whose strength is being able to teach others (including more senior people) skills they don't already have. Especially if you're planning on hiring interns at any point, you'll need this sort of person. A good teacher may not be extremely productive in developing new code.
Another one you've omitted is the professional maintenance programmer. The person who comes in and can debug a complete dog's dinner of code. The person who can see that there are three ways to fix code: 1) massive rewrite; 2) minor rewrite of a function or two; or 3) one-line change with a heavy comment about how someone might wish to rewrite the code later. There are very good reasons for each of the approaches, and knowing which to pick isn't something everyone is good at. For that matter, some folks are much better at debugging, while others are born architects. The skill sets needed for the two positions are very different. How do you reconcile the two? If you're being hired guns, it's quite possible the person with better debugging skills will actually bring in more revenue to the company. I've seen this overlap with the teacher position more frequently than other types of programmer.
Compensation consists of:
You left out time off (though you may consider it part of benefits). The reason I'm running my own business is that no company was willing to hire me on the terms I was looking for. I was looking for a job that was roughly full-time (but in fewer, longer days per week) for about 3/4 of the year. I'd have been willing to take 3/4 (or even slightly less) of full-time salary in order to have the time to enjoy things other than work. In most companies, the only way to do that is to work a year or two, and then either take a leave of absence or quit, knowing you'll have to look for a new job when you return.
Benefits are equal for all full-time employees.
I think a better solution is to have a shopping-bag concept of benefits. Employees get a certain amount of benefits, and can apply them to different types of benefits. A single employee will spend less on health-insurance, but may want to spend more on the health-club or a tuition-reimbursement program. A married person with children will need to spend more on health insurance and day care, but may not have time for the health-club. There are a lot of variations, and one size does not fit all.
One thing I've been pondering is simply punting on fixed benefits and saying "You have n% of your salary to use on benefits. You can allocate it among the following: health-insurance, dental insurance, 401K, ESPP, vacation time, discounted hardware purchases, tuition reimbursement, valet service, tax preparation, etc..." That can be tricky tax-wise, but it's even trickier for the employee to figure some of that stuff out. Spend a few extra $$ to have the corporate accountant figure out how to make it work, and save the employees the hassle.
Stock Options....
Feh! on stock options. They interest me little if at all. If the company is publicly traded, a good ESPP is more interesting. If the company is not publicly traded, stock options are worthless scraps of paper, and may actually cost me money in taxes for a net-negative. Of course the company may go public and do well, but it also may fold before reaching IPO.
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.
One way of looking at salaries is asking yourself: "What would I have to pay to contract this programmer back six months from now after she leaves because we don't pay her enough now?"
The answer to that question can be pretty illuminating. One company I quit was simply unwilling to pay to contract me back after I left, even though they've had two problems I could have walked in and fixed rapidly. Instead, they wanted the security of having someone on-staff who had spent the time to figure it out. Good for them.
Another company that wouldn't meet my desired salary has since contracted me for almost six months worth of that salary for two months work. I suspect they're regretting their decision, but they do have more flexibility now.
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
I think if you truly want to be equitable, you're going to find out that there will be enough special cases, that your pay-parity will quickly evaporate. I've mentioned a few, but there are more that I'm sure I haven't thought of. Being fair is a good ideal, but because of the special cases, equal pay is unlikely to be fair.
- Dave Polaschek
- Ahmed Badr
Editor's note: I don't really believe in individual bonuses or performance incentives, because I've heard a lot of research that says they don't work:
Incentive Pay Considered Harmful
But, to answer your question more specifically, if I really had one programmer who was simply much more productive than usual and wrote code much faster, we would probably just bump them up a level even though they don't meet the other criteria. I don't want the criteria to be hard-and-fast, just general guidelines. - Joel
I do have to disagree with using large startup bonuses to bridge an offer gap. It creates a mercenary ethic from the start. If a salary of X doesn't make me happy now, as an "unknown risk" to your team, I'm going to be less happy with it down the road once my value to the team has been well-established. I would cap the total startup bonus at $10k and extol the value of the benefits package. Vacation time to me is worth at least twice it's straight salary value, and it's a benefit that most American companies (esp. tech!) are stingy and inflexible with.
(I'm working with a guy who wasn't able to use all of his vacation time last year, a serious no-no in Germany, so he's wound up with 8 weeks for this year. Being on our American payroll, I have serious vacation envy! Not enough for me to switch payrolls, but you can be sure that it will be the only compensation matter discussed at my next review ;-)
- Bryce
- Chris Markle
Editor's note: Construx's stuff is exactly what I was trying to reconstruct. Steve got the idea and copied the ladder from Microsoft, and I did do, but I was trying to reconstruct it from memory! - Joel
You don't mention it specifically, but I'm assuming that it will be public knowledge what everyone's level is and how to progress to the next one. This is a key factor. I like the consenus approach about setting levels, so long as the employee gets a chance to present their side of it.
What about annual raises? I think everyone expects some sort of annual raise even if you can still hire new programmers at the same wage level as the old ones. And honestly, someone who's worked for you for a year is worth some degree more than someone with equal skills who doesn't know anything about your company or your software.
Perhaps it is a bit of utopian, but one would hope that if an employer adopts an open and fair salary policy, they would fully grasp being fair and open and a corporate policy.
- David Benson
- Kevin Postlewaite
I'd like to advise you to go ahead with your compensation ideas based on my experience with companies that have done things that way. Sadly, I can't. Every company I've been in has kept these things secret. Instead I urge you to do it simply because I'd like to work at a company with those policies.
I work for Dictaphone (private), which was recently bought by Lernhout & Hauspie (public), so we're getting stock options soon, but it's supposed to be a big secret how the amounts are awarded. We got mail with our share amounts saying do not discuss this with coworkers! What's up with that? Amazingly, many members of my team went along with it! Fortunately a few of us did an "I'll show you mine if you show me yours" session, and we were able to figure out that it's simply based on salary grade. Big deal. Why not just publish that? Secrets do more harm than good.
I suppose that there will always be resentments and perceived injustices with compensation policies. You have to accept that. But keeping it open and telling everybody up front that it's open will, I believe, keep it from interfering with the work.
- John Sands
#1 - Personal pressure and help: At the time, there were two levels of management in between myself and the CEO. Both were dysfunctional. The CEO cared more about the project than about "dis"ing the two middle managers and set up a weekly status meeting between himself and me to go over the status of the project and do risk assessment. No one wants to disappoint his/her CEO, thus, boy was I on top of the project. Also, if I was having trouble with resource issues he could cut through any red tape and make things happen for me.
#2 (relevant to the bonus question) - at the first status meeting he gave me a massive bonus (options that are currently worth about $150,000) and said that he likes to give bonuses BEFORE the success - he finds it's much more concrete motivation. Now this is a bit of a dirty trick but it sure does work. I plan to try it with my team next real crunch.
I really like your approach to salaries, though you need to have a certain amount of flexibility with the ranking. One of the biggest sources of tension we have in the department is due to people think other people are getting paid more than them. One of the biggest headaches we have when hiring is dealing with people who are good but would throw our salary scale of kilter. Your suggestion solves both very elegantly. The one question I have is what do you do with salary reviews? Over here, people expect a 10-20% raise every year (in addition to any raise due from a "rank" promotion). Would you only give people a raise if the raise in rank? Or maybe instead of a salary raise have an individual bonus at the time of the salary review that would do the same as the start up bonus?
- Anonymous
You’re reading Joel on Software, stuffed with years and years of completely raving mad articles about software development, managing software teams, designing user interfaces, running successful software companies, and rubber duckies.
I’m Joel Spolsky, founder of Fog Creek Software, a New York company that proves that you can treat programmers well and still be highly profitable. Programmers get private offices, free lunch, and work 40 hours a week. Customers only pay for software if they’re delighted. We make FogBugz, an enlightened project management system designed to help great teams develop brilliant software, and Fog Creek Copilot, which makes remote desktop access easy.