Developer employee cheatsheet: WTF is Salary Benchmarking?

It’s time to do my team’s annual salary review.

I have been given a chunk of money I can distribute through the team and it’s up to me how much each person actually gets. I’ve got a spreadsheet to fill out. Against everybody I have the basics you’d expect:

  • Name
  • Job title
  • Current salary

If you’ve done this kind of thing before, or you’re thinking ahead, perhaps you’ve also guessed I have:

  • Last year’s salary increase
  • Number of years they’ve been employed

But I’ve also got some columns you might not have expected:

  • “Normalized” job title. My “Head of Backend Applications” has become “Senior Software Developer” and my “Client-Side Developer” has become “Front-End Developer”
  • Years of experience
  • Market Salary
  • A suggested pay rise based on how much under or over the Market Salary each person is

For each person in my team, someone has tried to work out what they should be getting paid based on our location, an approximated job title, and their years of experience!

Welcome to the world of salary benchmarking…

Salary is difficult

Companies have a dilemma.

If they offer too little money to current and future staff, those staff won’t accept the jobs, or will take jobs elsewhere. That’s pretty straight forward.

But if they offer too much money, it’s very difficult to reduce someone’s salary if they turn out not to be worth the premium price tag. What’s more, for every four developers they’re paying 25% more than the market rate, they’re not able to hire a fifth potential developer.

If they’re in a competitive market, then their competition can get more done at the same price. If they’re a company with shareholders, they open themselves up to challenge from those shareholders on why they’re paying their developers more than the market rate.

Companies may have a lot of reasons they decide they’re going to under or over pay. Perhaps they think working at the company or the perks they offer make up for a smaller salary, or perhaps their systems take a long time to learn and once someone’s on board they don’t want them tempted away with a larger paycheck elsewhere. But in either case, unless they know what the market rate for their people is, they can’t effectively do either.

A salary benchmark allows them to compare their staff to the market rate, and guide decisions about who should be getting paid more, or less.

Where the data comes from

There are a number of places companies can get this data. On the smallest scale, a company trying to fill a job may just ask their friendly local recruiter what kind of salary range they should be offering. Recruiters are incentivized to push that number upwards because they’ll get a bigger commission and the job will be easier to fill — there’s no downside to them if the company overpays!

Larger companies will buy the data from companies like Payscale, who allow them to specify all sorts of factors — educational attainment, skills, office location, auxilliary benefits like pension and healthcare — to find out how their staff rate against the market.

Very large companies may even have dedicated staff to do this, especially for more senior staff — a remuneration committee, or dedicated people in HR whose job it is to come up with benefits packages and salary bandings for different roles.

What you can do

Besides this process being simply interesting in its own right (to me, anyway), there’s an actionable point here as well for the developer who wants to get paid more.

The basic principle is: you want the salary benchmarking process to make it look like you’re currently underpaid, to encourage the levels of management above you to try and fix that, so you don’t get poached by another company.

The person creating the salary benchmarks probably doesn’t know you, and will be simply guessing on what job you’re actually doing based on your job title. Or maybe they do know you, and they’re searching a long list of job-titles they’ve never seen before from the salary benchmarking data. They have to take a guess on what exactly the “Widget Team Manager” or “Data Extraction Lead” maps to in the data they have.

So it’s worth making sure your job title adequately reflects your current seniority. Programmers often think that quibbling about titles is below them, but if you’re mostly doing architecture work, or you’re leading a team, or you’re one of the senior members of a team, having a job title that reflects that will make the magic Market Salary number higher.

Smaller companies will often be pretty flexible with job titles – as long as it’s not something ridiculously senior (most companies will only allow for one CTO, for example), adequately describes the work you do, and won’t cause too much resentment with your team mates, then it’s pretty reasonable for you to ask for a review of it.

Larger companies will have their own internal hierarchies or what constitutes a “Senior” or “Junior” developer. Are you familiar with what it’d take for you to get the next job title up? Not all managers are on the ball with career development, but if you start bringing this up at your one on one with your manager, you should at least get the ball rolling by eliciting what you’d need to do to move up.

Even larger companies may well have official internal levels: “Software Engineer Grade 3” and so on, and these will generally come with pay brackets attached. It’s reasonable and well within your rights for you to express to your manager that you’d like to move up to the next level, and for concrete steps you’d need to take to do so.

Job titles are more important than you think

The exact characters that comprise your job title can cause all sorts of unexpected effects on your salary range. Many developers consider them unimportant, or as I mentioned earlier think that thinking about them or discussing them too much is beneath them.

Most, however, are interested in being paid more for their existing work. Once you understand the processes involved it becomes easier to see which levers are available for you to pull to start getting paid more.

Counter offers can be great, be wary of recruiters suggesting otherwise

Aims of recruiters are not always well aligned with the aims of the people they’re trying to find jobs for.

A particularly egregious example of this is recruiters writing opinion pieces on why you should never accept a counter-offer — that is, your original employer offering to match (or better) the salary somewhere else has offered you.

If you accept a counter-offer, you get more money for doing your existing job, and the recruiter doesn’t get paid anything.

Let’s talk this through…

How Happy are You already?

If you’re not currently happy where you are, then accepting more money for a role you don’t like requires careful consideration. But if your current role is bearable, and the new role doesn’t look amazing, then a counter offer gives you:

    • More money right now, in an environment that you are at least already familiar with
    • A chance to rebuild your relationship with your current employer having established that there are things you’d like to see change
    • Breathing room to find a role you’re sure you’ll love, and using an increased current salary as a bargaining chip for somewhere new

I was pretty happy when I worked for a large ecommerce site that sold very expensive women’s clothes online. I liked my team, the corporate bullshit was cope-able, my commute was bearable, and there weren’t hidden working conditions yet to discover that I didn’t already know about.

But a recruiter came calling and told me there was a role at a large investment bank paying almost 50% more than I was currently on. 50% more is hard to ignore, so I went and spoke to said investment bank, and got offered a job.

I was pleasantly surprised, having handed in my notice, to get a counter-offer — they’d pay me exactly what the investment bank was offering, no questions asked. Overnight 50% pay rise for doing the same job.

The recruiter in question, seeing his considerable commission slipping away, gave me the hard sell…

“If you’re worth 50% more, why aren’t you already being paid that?”

First of all, he wanted to know, didn’t it bother me I was being undervalued in my current role?

This is misleading. When my current company had hired me, they didn’t know what I could do, they didn’t know if I’d work out as an employee, they didn’t know how productive I’d be in practice. Developers bring wildly different levels of productivity to a business, both in personal output and in their effect on a team. Predicting how useful a potential employee will be compared to the rest of the team is virtually impossible.

But if someone you’ve hired is worth more money than you’re currently paying them, and seems pretty happy with working for you, simply giving them more money is no way to run a profitable business. When a business pays a salary, it’s trying to get a return on investment for that salary. Some developers will be a better return on investment, and some worse.

Handing out large ad hoc raises to your employees is a great way to reduce your return on investment for their salary, foster ill will with colleagues who overestimate their own skills and think they should also get pay rises, and as such is a hard sell to the people who control the purse strings.

Giving more money to developers who are threatening to leave and who you value is a great way of making sure money is allocated efficiently and avoiding the costs incurred by training someone new and recruiter costs for new hires.

So did it bother me at all that I was currently being “undervalued”? The opposite: the counter-offer showed me my current place was in fact well aware of my value, but also being run by people who understood how to stay profitable.

In another job as a development manager, any raise I wanted to give out had to get sign-off three or four management levels above me. Justifying this to the people above was hard if I just had a general feeling that a developer wasn’t being paid well enough for her time; there was no end of supporting evidence I had to come up with. But if that developer had come to me telling me she’d been offered $15,000 more elsewhere, I just had to tell my bosses I need to pay her more because she’d had a job offer elsewhere, and it’d get signed off in no time.

“Not being paid what you’re worth” is often just corporate inertia, and one great way to increase momentum there is to have a job offer — which you’re willing to take — offering more money elsewhere

“You’ll be seen as a flight risk, and the company will know you’re going to leave one day”

The next angle he had was: “now the company knows you’re looking to move, you’ll be slowly forced out or left behind”. It takes some chutzpah to suggest to an employee who’s just been offered massive bump in salary that the company offering the salary bump isn’t looking to invest in or retain that employee.

There’s also a mistake in his reasoning there: I wasn’t looking to move, I was looking to move for more money. I was pretty happy where I was, just not at the original salary I was being paid, a point I made clear to the current employer. My desire to move disappeared when I got offered more money. I was signaling that to my current employer by staying.

There are, of course, different situations to the one I was in. A candidate I was working with didn’t like his current role, and didn’t like the direction the company was going. He had been very open about this, and about his desire to move on. But when I found him a new job, he was offered a huge one-off bonus to stay put until a certain date. It was obvious to everyone involved that after that certain date, he’d start looking again with a view to leaving, and he’d have been insane to think that the company he was staying with were going to be working hard to promote and entice him.

But just as everyone dies eventually, everybody leaves their current employer at some point. Companies know this, and they don’t take it personally (although the occasional bad boss might). Businesses understand that employees want to be paid for their time, and that employment is a market, and it’s not going to be a black mark against anyone that they’re treating their job as a job, and not some kind of life-long commitment.

Everything else…

I was looking for a third point to end the article, and came across this gem of a list from the first Google result for “don’t accept a counter-offer”. Incredibly, the article is from the section called “Our Service to Candidates”…

“You have now made your employer aware that you are unhappy. From this day on your commitment will always be in question.”

If you work somewhere where your concerns are treated as a black mark against you, and there’s an expectation of unpaid “commitment”, then sure, move on. The vast majority of companies aren’t run by psychopaths though.

“When promotion time comes around, your employer will remember who is loyal and who isn’t.”

If “loyalty” is a big deal in your workplace, you may be working for the mob. Or a psychopath. If you work somewhere where seniority is determined by loyalty, rather than skill, you’re already working in the wrong place. The vast majority of companies don’t promote people based on loyalty.

“When times get tough, your employer will begin the cutbacks with you.”

Why would a company make redundant employees who they’re willing to pay money to retain? What kind of company doesn’t retain staff on the basis of their input? Most companies are not like this.

“When your employer replaces you after six months and ‘lets you go’, it’ll be harder to turn them around than it was for them to turn you around.”

If a company is paying you to stay on, it’s safe bet they want you to stay on.

“Accepting a counter offer is an insult to your intelligence. You didn’t know what was best for you.”

Money. It was money that was best for me. This list is an insult to my intelligence.

“Accepting a counter offer is a blow to your personal pride, knowing you were ‘bought’.”

If you wouldn’t do your job for free, aren’t you’re already being bought?

“Accepting a counter offer rarely changes the factors that drove you to look for a new job in the first place.”

Sure, unless that was money. And you’ve no guarantee a new workplace will be a better place to work.

“Where is the money for the counter offer coming from? Is it your next pay rise early?”

Usually not. That’s not how salaries and pay rises work. And if it does turn out to be the case, it’s not like there’s a shortage of jobs for developers…

“Statistics show that if you accept a counter offer, there is a ninety percent chance you will be out of the job within six months.”

The best statistics are those that are uncited and presented to you by a company that stands to lose a lot of money if they can’t persuade you. :eye-roll:

“What type of a company do you work for if you have to threaten to resign before they give you what you’re worth?
“Why didn’t they pay you that before? It was because they didn’t think you were worth it.
“Why are they paying it to you now? It’s because it’s easier and cheaper for them to keep you for the time being, while they sort the problem out.

As covered above.

And so…

I have a friend with a PhD in Financial Maths from Oxford (so technically a DPhil, but whatever) with a habit of putting complicated decisions in black and white terms. And back when I was thinking of making the jump I’ve used as an example above he asked me a very simple question:

“How much is the new role offering you to offset the risk that you’ll hate it at the new place, when you’re happy enough where you are?”

Once I got the counter-offer, the answer was “nothing”.

Be wary of recruiters giving you blanket advice to not accept counter-offers!

Who cares if developers want to get paid more?

Nobody cares as much as you do about your salary.

One reason I like to stress to developers that they should understand how the mechanics of interviews work is so that they understand the motivations of all the players, especially when it comes to salary — who doesn’t want to know how to get paid more?

Let’s say you’re applying for a role, and you want $10,000 more a year than the recruiter says they’re offering. We’re going to look at who cares, why they care, and what you can do about it.

You care how much developers get paid

Obviously you care, and you may well care a lot.

If we’re talking about $10,000 more money, and you’re a developer, you’re probably in one of the higher tax bandings. In Sunny England, where I’m from, you’re looking at 40% marginal tax, so let’s say $10,000 more a year is worth $6,000 more after tax.

$6,000 extra a year is $500 a month extra, which is a lot of Orange Mocha Frappucinos, or an upgrade from your Chevrolet Spark to a Tesla. It’s between 5% and 20% of an average developer salary.

There are also some compounding effects of a higher salary: many bonus schemes are expressed in terms of base salary, the starting point for your first salary review will be a percentage of your current salary, and your next job will probably ask what your current salary is, and tender an offer on that basis.

As a potential employee, that $10,000 extra for you is a big deal. You’re not going to be necessarily working any harder for it, but you’re certainly going to be benefiting significantly from it.

To you, that $10,000 extra a year is $500 extra a month, and unless you’re pulling in $300,000 in the Bay Area, that’s probably a big deal.

Who else cares?

External recruiters care how much developers get paid

If you’ve gone through an external recruiter — someone who doesn’t work for the company itself — he’ll get a one-off commission if you accept a job that he put you forward for. If the agency he works for is on a 15% commission then the agency will bill the employer $15,000 if they place you at $100,000, and $16,500 if they place you at $110,000 — your $10,000 extra salary is worth a one-off $1,500 extra to the agency.

However, the recruiter themselves won’t see that much — he’ll be on a commission scheme themselves with the agency. Let’s call it 25%, and apply a 40% marginal tax on that bonus.

For placing you at $100,000, the recruiter himself takes home $1,500. Not bad! If he places you at $110,000, the recruiter takes home $1,650. Your extra $10,000 a year is worth $150 after tax to the person doing the negotiating on your behalf, which will set him up for a pretty reasonable steak dinner.

There’s a huge caveat, though.

If the client hires someone else, who’s not working with this recruiter, because you were too expensive, then the recruiter gets $0.

He still did all the work, but he got precisely $0 commission. He gets an extra $150 if he gets you more money, but he loses the $1,500 commission if you get priced out of the role.

So his motivations are different from yours — you want to get paid as much as possible for the same work, but he just wants you to accept a job.

One of the few redeeming qualities of recruiters is that they’re gloriously, transparently, and cynically motivated by their commissions, and they’d love for you to get a job so that they get paid.

Recruiters will know the salary range of the role you’re applying for, they’ll often have a good picture of how you stack up against the competition, and they may well know how much other people at the company are already getting paid. And if you ask them, they’ll probably tell you; they’re not looking to save the hiring company any money.

Have a full and frank conversation with the external recruiter about salary upfront. Ask them what range the company has given them, ask them where they think you fit into that bracket, and ask them how often they’ve seen the company go above that range.

The Hiring Manager may not care how much you get paid

The Hiring Manager is your future boss — let’s say she’s a very Senior Developer who also line-manages a team.

Chances are that she doesn’t manage her own staffing budget; she’s just been given a salary range by the people who make the money decisions, and she’s allowed to make offers inside that range without seeking further authorization.

If she thinks you’re really really good, she can go to her manager and ask for a special case to be made for you to get paid more. And she’s a technical perfectionist who loves her codebase, so she really does want the best people, but…

The Widget Automation project that she’s responsible for is 6 months late, and her boss told her at her last performance review that more hands would help, and has she really not made progress on getting someone hired yet?

So her motivations are not purely financial. Her motivations come from wanting to deliver product and having a team in place to do that. She wants someone capable for her team, as soon as possible, but it’s not her money. So as long as the extra $10,000 you want is inside the salary banding she’s been given, she’s happy.

If you’re asking for more than that salary banding — even by $500 — you’ll cause her a day of work and hassle trying to get the extra money signed off.

One final consideration: if she pays you considerably more than similarly qualified people on her team, and they (inevitably) find out, she has a problem, because those other people will start asking for more money, and feel resentment if they don’t get it.

What to do?!

Unless you’re working for a tiny company, the people whose profits your extra $10,000 a year comes out of won’t meet you during the interview process, and may not even know you exist. You might meet the person whose budget is paying for you, but unless it’s a small company or a very senior role, you probably won’t.

The two people you will meet, and between whom most of the salary negotiations will occur, have motivations different from each other and different from yours.

While the recruiter wants as much commission as possible from placing you, he doesn’t want to push the boundary too much in case the employer goes with someone else.

The Hiring Manager probably doesn’t care how much she pays you, as long as it’s inside her budget, and she gets a vague feeling of value for money from you, and it doesn’t dwarf other developers on her team. If she can pay up to $99,999 without getting further sign-off, and you absolutely insist on $100,000, you’ll be causing her a lot of extra work that you may not see, and being only human, she may decide to go with an easier candidate.

It really can’t hurt to go into the process having shaken as much information as possible out of the external recruiter on the salary being offered, and where possible, looking on Glassdoor for the sort of salaries the company is paying to people who already work there…

By the way, the recruiter and the Hiring Manager are two of the Interview Gatekeepers, who are worth finding out more about!