DEV Community

Cover image for Why you should always negotiate salary and how to do it
Gregory Witek
Gregory Witek

Posted on • Originally published at notonlycode.org on

Why you should always negotiate salary and how to do it

Salary negotiation is a widely covered topic - there are many videos, articles, and even books about it. As software developers we are usually in advantageous position - our industry is booming and our skills are in demand, therefore we should easily be able to negotiate salaries. Despite this, a lot of people decide not to negotiate the offers they get, because they're afraid. In this article I explain why you should always negotiate the job offer using some basic concepts from probability and game theory. And in the end of the article you'll find my video where I explain how to start negotiation when you're afraid to do it.

Expected payoff

Let's start with a concept of "expected payoff" (also known as "expected value") that I'll use throughout the whole article. Expected payoff is a single numeric value that represents what you should expect on average when participating in some activity where you have multiple options and you don't know which one is better. Using the probabilitis and values of possible outcomes, you can calculate the expected payoff of each option and choose the one that has a better potential.

Let's say our friend offers us to play a game: we'll roll a 6-side dice, and if we roll 1 or 2, we pay our friend $10. If we get 3-4 we pay our friend $5, and if we get 5 or 6 our friend pays us $20. We can use expected payoff to see whether playing this game is a good idea or not. In order to do it, we multiply the value of each possible outcome by it's probability and then we add all the values together:

  • there's 1/3 chance that we'll roll 1 or 2, and we'll pay $10, so we write it as 1/3*$-10 = $-3.33
  • there's 1/3 chance we'll roll 3 or 4 and we'll lose $5: 1/3*$-5 = $-1.67
  • there's 1/3 chance we'll roll 5 or 6 and we'll get $20: 1/3*20 = $6.67

Now we add all the values together: $-3.33 + ($-1.67) + $6.67 = $1.67.

The outcome tells us that if we play the game on average we will win $1.67 (and if we don't play, the value is 0), so we should agree to play it. Of course the question remains why our friend wants to play such game if they're expected to lose!

On the contrary, gambling or lottery tickes have negative expected payoffs. If your chance to win $1 million is 1 in 5 million, and a single lottery ticket costs $2, then the expected payout is $-1.8. Of course people still buy those tickets hoping they'll end up millionaires, but technically it's better to invest that money in something else.

This concept of expected payoff, enriched with more advanced ideas from game theory or decision theory (that help in more uncertain situations), can be applied in multiple areas of life. Should you buy a house or rent? Should you invest in a new company? Should you choose a startup job offer over a corporate one?

Now let's have a look how it can help us understand that negotiating the job offer is a good idea.

The fear of losing the offer

One of the most common, if not the most common reason why people don't negotiate job offers is the fear that company will withdraw the offer. Candidates believe that if they ask for more, the company will decide that they don't want to have such employee. In order to understand why this makes very little sense to the company, let's use the expected payoff.

It's very hard to put some specific value to the outcomes, hiring a candidate does not directly translate to a profit, so for now I'll use abstract units. Let's say the company made an offer of $100,000 and the candidate asks for $120,000 instead. The company can't increase the salary, and therefore they have 2 options:

  • rescind the offer
  • tell candidate that they won't offer more, but leave the offer on the table

In terms of payoff, we can assign value 1 if the candidate joins the company, and 0 if they don't. The question is what should the company do.

The 1st option means the candidate won't join for sure, so the expected payoff of that strategy is 0. The 2nd option has some uncertainty - the candidate will probably reject the offer, but there's some chance they'll accept it. If we assume that there's 10% chance that the candidate will still join the company, then the expected payoff is 10%*1 + 90%*0 = 0.1, if we believe it's 5%, the payoff is 5%*1 + 95%*0 = 0.05 . Even if the chance is just 1%, it's still better than withdrawing the offer!

Of course reality is more complex - maybe the company has just 1 seat and they have another, equally good candidate waiting for their answer, but even in such case it's better to keep the offer on the table and tell the first candidate that the company needs an answer in 1-2 days.

Does it mean that offer withdrawal is a myth? No, it still happens, but the companies that do it either act irrationally, or they're looking for programmers that won't stand up for themselves, that will always blindly accept whatever the company offers. In other words - they're not good companies, and you're better off avoiding them.

To give more or not - company's perspective

That was a trivial example (we'll use it later though!) so now let's move to a more complex topic - should the company offer candidates more money when candidates negotiate, or not?

Let's imagine that we offer candidate $130,000 and the candidate asks for $120,000, so we can limit our options to following 3:

  1. we don't offer anything more - in that case we pay candidate $130,000 and our potential payoff is 1, but the chance the candidate accepts the offer is only 40%
  2. we try to meet the candidate in the middle with an offer of $140,000 - that gives us 80% that the candidate will accept the offer, but our payoff is lower, let's say 0.8 (maybe because that will make our profit from this candidate's work smaller, or because it sets a precedence where a new joiner will make more than others, etc.)
  3. we agree to $150,000 - here we can expect 90% chance that the offer will be accepted, but again our payoff is a bit lower, let's say 0.6

The percentage here is not given and might vary a lot, the same with the payoff value - it's very hard to predict how a candidate joining us will impact the company. What I'm trying to model here is just a situation where we by sacrificing some value (paying higher salary) we increase the certainty that our offer will be accepted.

Now let's calculate the expected payoff for each of these 3 strategies:

  1. $130,000: 40% * 1 + 60% * 0 = 0.4
  2. $140,000: 80% * 0.8 + 20% * 0 = 0.64
  3. $150,000: 90% * 0.6 + 10% * 0 = 0.63

In this case, negotiation is the best strategy. Again, these numbers are completely made up, the company has no details about the candidate's situation - maybe the candidate will walk away unless they get $150k, or maybe they're bluffing when they say they have other offers. What the company knows is how much they value the specific candidate and how much they can afford to pay. With this partial information they need to make a choice - and usually being flexible and offering the candidate at least some more salary can make a big difference!

You can try to model different scenarios and you'll get very different results. If it appears that it's the best not to give candidate more money, look at what made it happen. Is the certainty that candidate will accept the offer anyway very high? Or does the company assign much lower payout if they pay more than the initial offer?

To ask for more or not - candidate's perspective

Now let's look at this from the other perspective. Imagine that in our current job we make $100,000, and the company we applied for offers us $130,000. That's quite a difference, 30% bump in salary is a decent number! The question is then whether the negotiation still makes sense.

We're limit the payoff here purely to the salary and we'll omit other things like how much we like the company, whether it's a good career move etc. Then we have 3 options:

  • we accept the offer - with expected payoff equal to $130,000
  • we reject the offer - expected payoff is $100,000 (salary at the current company)
  • we negotiate the offer and ask for $150,000 - let's try to calculate a potential payoff here.

Let's say we can expect one of 4 responses from the company:

  • they withdraw the offer, which is extremely rare, so we assume there's 1% chance; this will have a payoff of $100,000 (we stay at current job)
  • they keep the offer at $130,000, let's say there's 39% chance this will happen
  • they raise the offer to $140,000, 40% chance
  • they give us $150,000, 20% chance.

Quick calculation: $100k * 1% + $130k * 39% + $140k * 40% + $150k * 20% = $137,700, a 6% increase over original offer (and we asked for 15% more).

Again, you can try different numbers - maybe you're asking for 50% higher offer and there's a lower chance that you'll get it? But as long as you know that the chance of losing the offer is very low, you should always see that it's worth it to negotiate!

How to negotiate

As I wrote in the beginning, the topic of negotiation is covered widely in a number of videos, articles, and books. Heck, there are even companies that specialize in helping candidates to negotiate good offers from big tech companies.

The most important step though is to actually start the negotiation. In the video below I spend a few minutes talking about why you should do it, and then I explain how to start negotiating if you don't feel confident about it. Enjoy!

Discussion (0)