Negotiating a Job Offer
Negotiating is something a programmer might associate with high-pressure sales techniques, or with the ravenous profiteering of the Ferengi. Most programmers would rather write code than spend time negotiating.
Negotiating a job offer can be like that, but it doesn't need to be. With preparation and with the right attitude, you can establish a satisfying agreement with your potential employer. If you or your potential employer has an adversarial attitude, or if you don't prepare properly, then you risk coming out of the negotiation feeling aggrieved or hard done-by. If you are unhappy with the deal, you probably won't stay for long. If your employer enters into an agreement that he resents, again, you probably won't stay for long.
Before you enter into any negotiation you must consider what your reaction will be if things don't work out as you hope. You should hope for the best, but be prepared for the worst. What will you do if negotiation completely breaks down? Will you be prepared to walk away? You need to understand which things are important to you, and on which things you are prepared to compromise.
Walking away from a job offer is not the worst outcome. The worst outcome is being stuck with a job you hate, with terms and conditions that make leaving or doing anything else difficult.
Understanding the Market
The reason you need to understand the market is very simple. If programmer unemployment in the region is high, you have less negotiating ...