In this section we will talk about specific negotiating techniques that work well in my field, and probably many others. The most important negotiating technique is to just do it! You can't get a better offer if you don't ask. Also, the more homework you do, and the more you practice and plan your responses, the better off you will be. A few hours of preparation may get you a 25% improvement on an offer.
Back in the old days, compensation was a highly guarded secret. Companies successfully piggy-backed on our existing discomfort with discussing money to convince people that they shouldn't discuss their salaries with anyone else. Some companies make non-disclosure of compensation part of the employment contract. This is because keeping salary a secret benefits companies, not employees. Almost no one will, upon finding out their colleagues' salaries, ask to have their salary reduced. In this case, secrecy harms the little gal.
Fortunately, nowadays a wealth of information about compensation is available for free - on the Internet. Salary surveys and calculators are incredibly useful tools for figuring out what salary range you should expect. Salary surveys are usually a collection of answers from real people which can be divide up by profession, experience, and location. In my particular case, I found both salary surveys and calculators to be extremely accurate. Don't bother to pay money for any of this information, the free services are just as good or better than the ones that cost money.
Some companies, especially large companies, often publish internal company pay ranges for particular titles, along with job descriptions. These are often so broad as to be nearly useless (one range I saw went from $60,000 to $100,000 for the same title), but you can use them to figure out what an "average" or "top" employee should be making. Beware, managers will often tell you things like "the high range is only there so that people who never get promoted have something to look forward to". Take this sort of argument with a grain of salt.
Finally, don't forget to ask your friends. They are probably as eager as you are to know what other people are making. But be careful: don't compare yourself to people with less experience or skill. Keep in mind also that women on average are paid less than men, and aim for the salary that men are making rather than basing your expectations on what women are making. (For programming in particular, I read a survey that says women are making 95% of what men do on average, vs. 75% for all jobs - a veritable paradise of equality!)
One way to improve your salary is to apply for jobs that pay better. Don't be fooled by a long list of requirements, including 2 more years experience than you have and a couple of specific odd-ball skills that you could pick up in a few months. At many companies, it is far easier to get approval to advertise for a position that requires say, 7 years of experience and then hire someone with 3 years of experience than the other way around. Also, often the person writing the job description has no idea what the job is and ends up writing ridiculous requirements (the classic "10 years of experience with Linux" requirement - in 1999).
Women are especially likely to apply for lower level jobs than they should. Women are far more likely to underestimate themselves than men, and have often been trained not to aim too high in order to avoid disappointment. Aim high! The worst that will happen is that you will end up with the job you attempted to get. Don't let your false sense of incompetence hobble you.
Interviewing candidates for a job is hard work for a company. Don't make it harder on them by making them guess what you are good at, or hiding your qualifications, or downplaying your abilities. The one time you need to come out and tell people exactly what you're good at and why is in a job interview. You are doing them a favor by telling them how great you are, in terms they can easily understand.
Start by sprucing up your resume. I am writing another HOWTO on this, which I will link to when finished. The short version is:
Talk about the most relevant parts of your experience only.
Make it easy to read. People hiring often spend less than a minute reading a resume.
Find a way to get across all the important information about why you are good for the job.
When you are actually interviewing, be prepared to talk about your resume. Rehearse some good stories about favorite projects you did. Dress comfortably but slightly better than the people interviewing you - when in doubt, simply ask your contact person what people normally wear to interviews at their company. Try to look reasonably attractive. Do some research on what interviews with this company or for this kind of position are usually like and prepare for them. Don't downplay your abilities, be "modest", or volunteer information that will make you look bad. This is especially hard for women, as we have been trained to be modest and self-effacing and feel uncomfortable selling ourselves. Practise saying nice (and accurate) things about yourself in the mirror. "I am a good programmer. I can usually find bugs faster than anyone I have ever worked with." If you habitually run yourself down or act self-deprecating, don't, at least for the duration of the interview. The point is not to refuse to admit anything bad about yourself as you'll look foolish if you pretend to be perfect, but to make an effort to present yourself well, as someone who is good for this job.
While you should show your enthusiasm for the job, don't act too eager or the company will figure out they don't have to offer you much to get you to come work for them. A friend of mine once spent several years working at a company during which two interesting things happened: (1) he would regularly exclaim, "I love my job! I can't believe I get paid to do this!", and (2) he never got a raise. Fortunately, he finally realized that this was getting him nowhere and found a mentor who pushed to get his compensation up to a level with his qualifications.
This goes double for accepting an offer. No matter how great the offer is, ask for time to consider it - a day is reasonable time to request. Once I negotiated an offer over the phone, and lost $10,000 a year because I answered "Yes" too quickly to "Would you accept for X amount of money?" If they send you a formal offer letter, you don't have to worry about them dropping the salary, but responding too eagerly can definitely hurt you.
The most important—and difficult to follow—rule is to never ever give out information about your current or past salary until they have named a number or figure of some sort. Companies will try everything to get you to give them this information for one important reason: because then they can offer you less money. Pure and simple. It is not to your advantage to give them information about your salary history. You may hear arguments that this way they can offer you something "commensurate with experience" or "be sure not to offer too low" but in reality they want this information so they can offer you the least amount of money necessary to get you to leave your current job.
Companies will try all sorts of tactics to get you to give them this information. Just remember, how hard they try is an indication of how incredibly valuable this is - to the company, not you. So hold firm. Usually the HR person, or manager, or recruiter will ask you for either your current salary or your "range" Say no. They will ask a lot. Say no a lot. Often there will be a section in the application form for employment history that includes a section for "Salary". Don't fill it out - put "N/A" if necessary. If they claim they need it to process the application, they are probably lying - ask them what they do with people who are contractually obligated not to reveal their salary, or who have no salary history. They will say that they don't want to offer too low. Tell them that if they offer too low, you will tell them and give them an opportunity to correct it. If they don't want to make a formal offer unless they know you'll accept it or reject it as-is, tell them to name the figure they want to offer informally - after all, that's what they want you to do.
I can't emphasize this point enough. Get somebody to name some sort of hard figure before you do, and you've won half the battle. Here are some good dodge phrases:
"I prefer not to say."
"I would rather not."
"I make it a policy not to name the first number."
"I would rather you named your range first."
"I'm not prepared to discuss salary yet."
"My salary is within industry standard range for my qualifications."
Even if you can't think up a good counter-argument for whatever wild new reason they offer for why you should give up the advantage and tell them your salary history, politely refuse to to do it. Quite frankly, it's not necessary for them to make you an offer.
Questions about "salary range" are another sneaky way to get this information, since the bottom of your "range" is usually close to your current salary AND you are basically saying "This is how little I will work for". What's the point of telling them the max; will you turn down an offer that is too high? Don't give ranges. If they want to make sure you would be willing to take the job before they interview, make them name a range and then you can tell them whether it's acceptable to you.
Depending on the company and the position, you may be able to negotiate other things such as bonuses and extra vacation. Companies usually think in terms of a package of benefits, including your salary. When you are interviewing, it is a sign of sophistication to ask about other benefits other than salary. Don't worry about offending them by asking about other benefits - how are you supposed to know what they are willing to offer if you don't ask?
Signing bonuses are reasonably common; this is a one time bonus which you receive shortly after beginning work at the company. Usually signing bonuses come with strings attached, such as a requirement to pay the bonus back if you stay with the company for less than a year. Some companies offer bonuses in after-tax money, some talk about bonuses before taxes - make sure you know which is which when you are comparing.
Stock grants and stock options are also common, but usually difficult to value correctly. A stock grant is stock that is given to you; stock options are an opportunity to buy stock at a certain set price. In almost all cases, stock grants and stock options "vest" over a period of years - the first year you get a certain percentage, followed by more, usually over a 4-5 year period. (These are the famous "golden handcuffs" you've heard so much about.) The value of stock is difficult to judge and you'll mostly have to use your best guess to figure out what you think it will likely be worth.
Depending on the company, you may be able to negotiate extra vacation time, flexible working hours, telecommuting, or other special dispensations. Your best time to be bargaining is before you have accepted a job; your boss is less likely to be accomodating once you've started work and changing jobs would be a hassle.
Some companies offer extraordinary extra benefits, such as Google or SAS. If you are being offered free gourmet food (Google) or on-site childcare (SAS), be sure to calculate the monetary value to yourself of these benefits. Likewise, the difference between a really good health plan and a mediocre health plan can easily be thousands of dollars a year. Don't forget to factor it all in; in the end a job offer with lower salary may end up being the better deal.
Once they do name a figure, or range, you have two possible permitted reactions:
Insulted outrage - if you have done your homework and it IS insultingly low
Non-committal to slightly interested but not excited
If you don't give a company any salary information, it's unlikely they will offer you something below the normal range for your experience and therefore unlikely you will have to act insulted (you should if they offer you something too low - often there's been a mistake such as the HR person thinking you had 2 years of experience when you actually had 5). They don't want to insult you, but they want to get you cheap, so they will aim for the low end on an initial offer. In my experience, companies are very good at offering just barely enough to not be insulting. So don't worry too much about practicing your outrage.
You should practice hiding your glee, though. Even if they offer you 50% more than the top of your personal salary range, act non-committal and say you'll think about it. As above, companies will usually offer on the low end of what they are actually willing to pay. As gargantuan and wonderful as your initial offer may seem, if you can pull this off, you may get an even more gargantuan and wonderful offer. Don't accept immediately. Most companies will give you time to think about it, and it lays the groundwork for asking for more.
Once you have received an offer, if you have managed to contain your glee and not accept right away, you should do your research and decide whether to ask for more, and how much more. The initial offer will give you a lot of information about how valuable you are to the company and what you can ask for. Try to figure out how valuable your skills are and how difficult they are to find to judge how much negotiating power you have. Ask around to find out if they normally negotiate, and by how much. If it is at all reasonable to do so (and it usually is), ask for more no matter what. The worst that will happen is that they will say no.
Sometimes you need to negotiate face-to-face, real-time, such as with a company that makes it difficult to change a paper offer. Make sure you do your homework in advance and know what you are worth and how much you can ask for. Use these same tactics - practice your responses, don't name the first number, don't be too eager, ask for a reasonable amount more. Another tactic in real-time negotiations is silence. Yep. Often the other person will just stay silent, hoping you'll babble something useful to fill the silence, like, oh, "Well, I guess I would take it", or "That's a pretty good offer" Wait them out. Silence is your friend. If it lasts too long, thank them and tell them you'll get back to them later.
Good phrases to practice:
"Thank you, I'll think about that."
"Thanks. I am waiting on some other offers before I make a decision."
"That's at the low end of my range." (Have a range ready to quote.)
"I don't know, that's kind of low for someone with my experience."
If you have received or are expecting other offers, use them to your advantage. If another company offers more salary but you don't want to work there as much, use that offer as a bargaining chip - "Well, company FooBar offered me X..." Don't lie - the last thing you want is to get caught fabricating information applying for a job - but use what you have to your advantage. Talking about what competitors are offering, to you or others, is usually a surefire way to improve your offer.
When you've decided to get a new job, sometimes it's hard not to take the first halfway decent offer that comes along. And sometimes you need a little time to calm down from the excitement of the interview to be able to make the best decision about your future. Take your time if at all possible. Make sure you know what the timetable is for accepting or rejecting the offer and then make the most of it. I once got a 25% raise and a much more enjoyable job by waiting for nearly 2 months for a particularly difficult offer.
Negotiation isn't over once you've got the job. Now you need to get raises and promotions on a regular basis, or you're back to square one - underpaid and undervalued. You should receive a formal review of your performance and a decision on whether to give you a raise at least once a year (if you're getting an informal raise that often, don't worry about the formal part). Many companies have formal policies about how often employees get reviews - although they are often late or ignored by managers. If you don't get a review, it's up to you to ask for it, and keep pushing until you get it. Reviews are important, because even if you don't get a raise this time, you will get useful feedback on what you need to do in order to get a raise next time.
Again, do your homework in advance, not just when raise time comes around. Make sure that people (especially those who will be reviewing you) know what you are doing. Keep notes and write reports. Make sure you get credit for your work and ideas. Go redo your research on compensation and benefits in your field. Find out what comparable people's responsibilities are. Many companies say they only promote people when they are already doing the job they are being promoted to. Have arguments and examples ready to show you are taking on extra responsibilities.
Every step of the way, asking for advice from experienced people in your field is a good idea. Finding a good mentor - an experienced person who wants to help you grow - is invaluable in many ways. Keep in mind that individual people may be very bad at negotiating (e.g., someone who only interviewed once), or may not be motivated to help you (perhaps they are your future or current manager), or just plain wrong, but in general the more information you get, the better off you are. Mailing lists are another good place to ask, especially since it's easy to be anonymous. Ask especially if you work in a field other than software engineering, or a place other than the U.S., or if any of this advice just seems wrong.
Sometimes, negotiation doesn't work at a particular company or for a particular job. Don't stop doing it because you had one (or a few) bad experiences. Keep learning, practice harder, do your research, and be ready next time. When negotiation pays off, it often pays off very well indeed.