Hate UML?

Draw sequence diagrams in seconds.

Game Theory, Salary Negotiation, and Programmers
Posted on: 2009-06-25 22:41:12
Disclaimer: Use these tips at your own risk. Don't get career advice from bloggers.

When you get a new job, you can breathe a sigh of relief, but not for long. You have an offer letter in your hand, and it is easy to miss one of the most important opportunities of your life: the starting salary. Here's the tale of two programmers. When getting a job, Goofus didn't negotiate. Gallant asked and got an extra $2500. They both get yearly raises of 3%


After five years, Gallant has made an extra $13272, enough to get his car paid off, or keep his Macbook software up to date.

Goofus is in prison because he had to become a spam lord to pay child support for his six kids.

Everything in life is negotiable. C.E.O.s and corporate executives are simply people that learned this at an early age. The things that are most negotiable are the things written in black and white in indelible ink. They are engraved in silver, carved in stone, simply to trick you into thinking you cannot negotiate. "Just sign here. It's a formality." "It's a preprinted form, it can't be changed."

Do not be intimidated. Salary negotiation is a game, and the first to give a number loses.

When it goes wrong?

A friend once confided in me one of the biggest mistakes of his life. He got a job in technology, and they asked him his salary expectations. Just being out of school, he gave them a very low number for the type of work, in the low 40s. Then the worst thing happened: They gave him the job, and his lowball salary. He felt unmotivated and ripped off. He wasn't working there long.

He broke the golden rule of salary negotiation. If you say a number, you lose. If you are asked on a form, leave it blank. If someone is pressing you for a number, just repeat: "I expect to be paid fairly based on my skills." The chances of you mentioning a number and getting it right are low.

Let's prove it using some game theory. In this the rules of this game, there are two possible salaries: high and low. You and the company's recruiter both write your salary expectations separate cards, and then you each flip them over one at a time. Sounds simple, right? Here's the catch: The second person to go gets to change their vote after the first move. If both cards match, you get the job at the agreed upon salary. Here are all possible outcomes if the job applicant goes first:

Your expectations
Company's expectations
LowLLLL (changed)

You only get the high salary 25% of the time, and in one unfortunate case (HL) they have security escort you from the building. Let's look at what happens if the company reveals their card first:

Company's expectations
Your expectations
LowLLLL (changed)
HighHH (changed)HH

When the company is the first to give a number, you always get the job, and you have a 50% chance of getting a high salary.

When it goes right

Another friend of mine was working in a job that didn't challenge her, so she applied around and was interviewed for a much better position. The problem was, it wasn't paying that much more than her old job. For the same money, she could keep her old job and play on the Internet much of the time.

She called the recruiter and said she would love the position and was very excited about it, and looking forward to the new challenges, except for the trifling little detail of the salary, wasn't there anything they could do about that? A few hours later she got the job -- at much higher pay.

The manager trying to hire you has chosen you over all the other candidates, and this give you the upper hand. In a larger company, the person you will be working for often has no idea what happens after the interview, since you are now dealing with an HR person. If you get away, this HR person has failed, and it will be disappointing to the manager. Use this to your advantage.

Final tips

The economy is turning around, and more jobs are popping up. The fact that you are reading this blog means that you have an interest in your craft, and this puts you in the top 10% of candidates. If you are on the hunt for a job, remember these tips:

  • Know what you are worth. Do salary research on Monster.com or Monster.ca, or ask your friends if they have any information on pay scales.
  • The opportunity to negotiate is after you've been interviewed, but before you've accepted. Don't even mention salary during the interview, unless they bring up the subject first. It is in your interest to postpone salary discussion as late as possible, after they are sure you are the best candidate.
  • During or after the interview, do try to get a sense of whether you are the preferred candidate.
  • Companies will rarely give you the opportunity to negotiate, or even bring up the topic of salary at all. You will probably have to call them about it. They will say no. Be persistent if you are confident in your skills.
  • If you are first to mention a number, you are a loser.
  • If the company mentions a number, then do the following: Repeat it back to them, then stare at them while counting to 30 in your head. 90% of the time they will then give you a higher number.
  • Do try to negotiate, even if the salary surpasses your wildest dreams.
  • Even if your asking doesn't work right away, it may be remembered and lead to more perks later on.

Further reading

Want more programming tech talk?
Add to Circles on Google Plus
Subscribe to posts

Post comment

Real Name:
Your Email (Not displayed):

Text only. No HTML. If you write "http:" your message will be ignored.
Choose an edit password if you want to be able to edit or delete your comment later.
Editing Password (Optional):


2009-06-29 14:31:14
Thanks, really helpful for me at the moment. I've been doing it wrong.

Sergey Solyanik

2009-06-30 00:34:45
So here's how this happens in the places where I worked.

(1) Everyone has a level. There is a skill set attached to a level, and a salary range.

(2) Yearly review measure you against your colleagues within the same level band.

Say, you have negotiated, like that article suggest, and got yourself into level X + 1 where X is where you really deserve to be. Your performance sucks relative to your peers, and you get lower grades on the performance reviews. Review grades is something that stays with you for a while, so a couple of years of being underqualified, and you career is essentially finished.

Let's say you did not negotiate and were assigned a lower level than you deserve. Well, relative to your peers you are doing great! Your performance absolutely rocks, and in a year or so you get promoted. Meanwhile you get a bonus that erases the unfairness of the first year comp.

If you land on the same level, there is still a spread. By negotiating you might get into the higer part of the spectrum. But the yearly merit increases are structured in such a way that people at the lower level of the spread are bigger, and towards the very top they peter out. Which means that you might enjoy your extra money for a little bit, but it's not going to be a lot, and will not last forever.


2009-06-30 02:14:52
All these tips are bull shit. I don't care how much I get. Why should I follow any of these tips? Who needs that extra money anyway. Money is shit. Enjoy your life better.

sean john

2009-06-30 03:56:00
Repeat after me: "I will consider any reasonable offer."

Kermit D. Frog

2009-06-30 03:56:57

You're probably the smartest guy in this down elevator.

Ah! This is my floor. If you think programmer salaries are bad, try working in muppet theatre...

Common sense

2009-06-30 04:36:40
Sergey Solyanik doesn't seem to know much about how IT works. Here's a hint: managers have an extremely hard time knowing who is good and who isn't. Most can't tell at all. And anyway, the worst case is your career might be finished *at that company*, so you go work somewhere else, also at higher pay.

Someone who also works there

2009-06-30 06:38:19

That only works if you are recruiting lvl 60/61. Sure they will fail if you bring them in at a higher level (and there is negotiation within level for salary). But when you are dealing with 64-67, you are now dealing with someone who know all of their technology and whose job is is playing politics. At this point, it's completely up to their manager whether they get a 70 or a 20 and has very little to do with what they know. The better ass kisser will get the raise. It is much better that they negotiated the 64 to a 66 up front rather than spen 5 years making up the difference and trying to find a manager who likes them.


2009-06-30 07:28:56
glassdoor.com is maybe the best source for salary info.


2009-06-30 09:46:52
In the real world, this cliched advice simply does not work as well as you propose. Nobody is going to magically pay you double your salary because you played coy with providing a figure.

Bottom line - I don't like playing games with potential hires. When I ask you for your desired salary, I'm asking honestly. I want to compensate you fairly and make you happy and motivated. If you refuse to give me a salary, you should expect nothing but an offer on the low side of what I was looking to spend for the position. Then, when you come back and say "well I really want xyz", I'm going to be a bit peeved at you for not just telling me that in the first place.

Corollary - I also want to know we're playing in the same ballpark. If I am looking to spend strictly up to 85 max, and you want a minimum of 120, that would be an incredible waste of everybody's time to go through an interview process.

Better advice - give out the first number and make it on the high side of what you want but in realistic range.

Sergey Solyanik

2009-06-30 12:20:56

"There" is way too big for one culture. I am talking about my own experience. I tend to not work in places where politics are encouraged &| compensated.

I had/have quite a few 64-66s working for me who were incredibly bad at politics, but were kick-ass coders.

Incidentally, I have an opening in this range right now :-).


2009-06-30 13:05:57
> Incidentally, I have an opening in this range right now

Would love to, however I got backstabbed this year by a political manager and am recieving an Underperformed for not lying for him. I have done my best to give this company a chance, but at this point I see little option other than moving to the competition. It's sad because I do love the company.


2009-06-30 13:42:23
I negotiate for more paid time off. Anything is negotiable.

Max Fert

2009-06-30 16:28:27
If all you care about is money, then these tips will work.

However, people who do this have lost jobs at my company. In short, the attitude is, "This guy is playing games. It is annoying. We're trying to get work done, and we don't need guys like that on the team."


2010-01-10 22:35:25
I don't get it - somebody has to put forth the first number. Does that person lose 100% of the time?

What if the applicant does give a number first and it is the right number? Or maybe it's too high? How do they lose?

Mike (Four Pillars)


2010-04-07 17:54:08
wow, Steve your blog is awesome; why did I find this blog so late...

Chris Nicola

2010-09-14 10:50:58
There is no win/lose here, this is like prisoner's dilemma without co-operation. Everybody looses when the employer turns salary negotiation into a game instead of trying to determine how to keep their best employees satisfied and well rewarded.

Your friend is the perfect example of this. When the employer chose to take advantage of his inexperience setting and negotiating a salary, they eventually left him in a position of dissatisfaction and he left them. They didn't win, they lost, potentially more than he did in the long run.

Had they instead chosen to find a point of satisfaction for their new hire instead of "winning" they might still have him. Salary negotiation is only a win/lose game if the person you are hiring is willing to accept just about anything. In which case they probably are not the kind of talent you were looking for in the first place. Real talent is the first to move on when they don't feel satisfied or appreciated.

Trogdor The Burninator

2010-09-14 15:28:32
I use to believe this. However you forgot one critical rule of game theory- that both players must be rational.

What I have discovered is that employers are just as emotional as they are "rational". I have actually found that first to say a number does not necessarily loose.

If you, the prospective employee, shoot off a fair number, the employer might counter with y which may end up being y = x/2. Rather than trying to do x++ why not instead say okay why not y++ and after 90 days x. try it. It worked for me.

Joseph Richards

2012-08-30 16:14:52
I am working on developing a video game for people to practice salary negotiations. I'd love you input! www.salarynegotiators.com/become-an-expert-salary-negotiator-video-game-style/


2013-09-04 11:23:29
Funny, during a Job Interview, I once tried using the "I expect fair pay for my awesome skills". They wanted to make me stick to a number, asking "what would you consider a round number?".

I said a salary of €65536 would be very round. I work elsewhere now, because round and realistic need not be room mates.


Other posts by Steve

Yes, You Absolutely Might Possibly Need an EIN to Sell Software to the US How Asana Breaks the Rules About Per-Seat Pricing 5 Ways PowToon Made Me Want to Buy Their Software How I run my business selling software to Americans 0, 1, Many, a Zillion Give your Commodore 64 new life with an SD card reader 20 lines of code that will beat A/B testing every time [comic] Appreciation of xkcd comics vs. technical ability VP trees: A data structure for finding stuff fast Why you should go to the Business of Software Conference Next Year Four ways of handling asynchronous operations in node.js Type-checked CoffeeScript with jzbuild Zero load time file formats Finding the top K items in a list efficiently An instant rhyming dictionary for any web site Succinct Data Structures: Cramming 80,000 words into a Javascript file. Throw away the keys: Easy, Minimal Perfect Hashing Why don't web browsers do this? Fun with Colour Difference Compressing dictionaries with a DAWG Fast and Easy Levenshtein distance using a Trie The Curious Complexity of Being Turned On Cross-domain communication the HTML5 way Five essential steps to prepare for your next programming interview Minimal usable Ubuntu with one command Finding awesome developers in programming interviews Compress your JSON with automatic type extraction JZBUILD - An Easy Javascript Build System Pssst! Want to stream your videos to your iPod? "This is stupid. Your program doesn't work," my wife told me The simple and obvious way to walk through a graph Asking users for steps to reproduce bugs, and other dumb ideas Creating portable binaries on Linux Bending over: How to sell your software to large companies Regular Expression Matching can be Ugly and Slow C++: A language for next generation web apps qb.js: An implementation of QBASIC in Javascript Zwibbler: A simple drawing program using Javascript and Canvas You don't need a project/solution to use the VC++ debugger Boring Date (comic) barcamp (comic) How IE <canvas> tag emulation works I didn't know you could mix and match (comic) Sign here (comic) It's a dirty job... (comic) The PenIsland Problem: Text-to-speech for domain names Pitching to VCs #2 (comic) Building a better rhyming dictionary Does Android team with eccentric geeks? (comic) Comment spam defeated at last Pitching to VCs (comic) How QBASIC almost got me killed Blame the extensions (comic) How to run a linux based home web server Microsoft's generosity knows no end for a year (comic) Using the Acer Aspire One as a web server When programmers design web sites (comic) Finding great ideas for your startup Game Theory, Salary Negotiation, and Programmers Coding tips they don't teach you in school When a reporter mangles your elevator pitch Test Driven Development without Tears Drawing Graphs with Physics Free up disk space in Ubuntu Keeping Abreast of Pornographic Research in Computer Science Exploiting perceptual colour difference for edge detection Experiment: Deleting a post from the Internet Is 2009 the year of Linux malware? Email Etiquette How a programmer reads your resume (comic) How wide should you make your web page? Usability Nightmare: Xfce Settings Manager cairo blur image surface Automatically remove wordiness from your writing Why Perforce is more scalable than Git Optimizing Ubuntu to run from a USB key or SD card UMA Questions Answered Make Windows XP look like Ubuntu, with Spinning Cube Effect See sound without drugs Standby Preventer Stock Picking using Python Spoke.com scam Stackoverflow.com Copy a cairo surface to the windows clipboard Simulating freehand drawing with Cairo Free, Raw Stock Data Installing Ubuntu on the Via Artigo Why are all my lines fuzzy in cairo? A simple command line calculator Tool for Creating UML Sequence Diagrams Exploring sound with Wavelets UMA and free long distance UMA's dirty secrets Installing the Latest Debian on an Ancient Laptop Dissecting Adsense HTML/ Javascript/ CSS Pretty Printer Web Comic Aggregator Experiments in making money online How much cash do celebrities make? Draw waveforms and hear them Cell Phones on Airplanes Detecting C++ memory leaks What does your phone number spell? A Rhyming Engine Rules for Effective C++ Cell Phone Secrets