Whether you're being offered a job or getting a promotion where you currently work, negotiating your salary can be tricky.
That may not be the case at very large companies which have very specific salary ranges for each job level along with well-defined benefits, and vacations policies. At many companies however compensation can vary and you have to be your own agent, negotiating the best deal possible.
For many people that's a daunting prospect. Negotiating in general can be tricky, and fighting for the salary you want/deserve makes many folks uncomfortable. That's something you will have to get over because even if you want the job, if you short-sell yourself you will end up unhappy.
When the opportunity to negotiate comes up, you have to take it. That means being ready, knowing your own worth, and being prepared to turn down the job if a deal can't be made.
Be aggressive, but realistic
If the ad for the job stated a salary range or the company has a published one, then it's not realistic to go in and ask for more than the top end number. If no range has been made public, or it's a broad spread like "between $60,000 AND $100,000 depending on experience" then you should do some research as to what others in similar positions make.
Use a site like GlassDoor, which publishes crowd-sourced salary data to figure out a reasonable estimate. Once you know what's fair, fight for the most you can. Ask for a number toward the top of the range and be prepared to justify why you deserve it. That could mean citing skills you bring that others may not have or laying out specific cases for how the value you bring justifies the number ("I increased sales by 12% and cut expenses by 6% in my previous job" or something similar).
Don't sell yourself short
There are two times in your career when it's OK to take less money than the job normally pays -- when you are just starting out and if you're convincing someone to hire you into a job you can do, but are not traditionally qualified for. Other than those situations you should not let enthusiasm for the position make you take it for a lower salary than the job should pay or than you are worth.
Build in a raise date
If a job is advertised at a certain range and you get offered the middle or even low-end of the range, it's acceptable to take the position, but ask for a set time -- 90 or 180 days -- to discuss moving your salary up. There's no guarantee the company will actually give you more money when the agreed upon date rolls around, but having a set time to talk at least puts it on the table.
Negotiate more than dollars
Salary is only part of the compensation you receive for your job. Benefits -- everything from vacation to 401k matches or health insurance and even things like being able to work from home might be negotiable. Some of those will be rigid at many companies, but others will have room for negotiation.
Don't take a below-market salary in exchange for better benefits, but do try to turn a good offer into a great one by ratcheting up your non-salary compensation. One area where employees often make a mistake is vacation.
Many companies base their vacation policy on length of service. That may be appropriate for entry-level workers, but if you're coming in to a mid or upper-level job, ask for time off in accordance with your level of seniority.