Technology people are without a doubt the most inept group when it comes to negotiating for compensation. There are two major problems that dog them. The first is that they usually actually like their jobs. As long as they get to work with the cool tech and the neat toys, they’ll sleep under their desks if they have to.
The second is that they are spectacularly bad at estimating their own market value. Not knowing how to negotiate compounds these problems and it is not rare to see the ‘lynchpin’ tech guys in a company make about half of what the salespeople make.
Typically, sales people justify their salaries by looking at their value for the company, rather than the lowest amount of money they can get by on. Your average programmer approaches salary negotiations like this:
(1) I need ‘x’ to survive.
(2) It would be nice to save a bit.
(3) I need to pay my taxes.
Work out a gross salary based on those components and use that as the basis for the negotiations. It is not about what you need. It is about what you are worth.
The company you work for is more than willing to pay you based on the value you bring to the table, not on your costs. It’s an easy mistake to make, and very understandable, but your costs do not figure into it at all.
Typically, in a mature company the salaries of the dev team are a rounding error on the total operation. A good starting point is to take the scarcity of your knowledge (how long does it take to train a replacement?), the size of the team, and the corporate financial position. Another big factor is how active the market is. If there is a lot of unemployment in your area and sector, then you’ll have a much harder time getting a raise than when labor is scarce.
If the company is swimming in money, you can play a harder game than if they’re living month-to-month. Knowing that you have options is also a good way to increase your value. So, go and polish your resume and shop around for a bit, it can’t hurt to hear what other companies think you’re worth.
Then, when negotiating, factor in such things as workplace environment and additional perks. Free food when you work overtime does not count :) Double pay when you work overtime does.
After establishing your market value in these different ways, notify your boss that you want a raise. Tell him how much and why. If they’re not willing to move towards you in a significant way, you have to be prepared to hand in your notice, so make sure that any jobs that you have lined up are ‘solid’.
Then, once you are at ‘parity’, every year you should index your salary, a 12 month review cycle is a pretty realistic schedule. Every year a 5% increase really adds up over time, and small steps are a lot easier to negotiate than jumps.
If you are making too little and the company is leaning on you to take one for the team, totally ignore it. They have no obligations to you and you definitely (as the smaller party) have no obligations to them. Stand up for yourself, if that means this company can not afford you then too bad, there are others that may be able to.
If they can’t pay you what you’re worth, consider being paid in part in stock, but only if you truly believe in the product, the management, and the company as a whole.