Thoughts on negotiating your Software Engineer Salary
Disclaimer: All opinions are my own
If you follow the software engineering space at all you know that salaries have been climbing. You only have to take a look at the levels.fyi 2021 salary report, a similar Indeed report, or just Bing “software engineer salary” to know there’s money to be made in this field.
But today I want to talk a little about the step after you interview — arguably the worst step in the process: negotiating your salary.
The first thing I’ll say is that if there were a magic incantation, trick, or technique that could increase your salary by any consistent value all of us would be millionaires. There is no magic for getting more money (and anyone who claims to have one is probably selling you something).
Like most things software engineers are subject to basic supply and demand. When there are more jobs than engineers salaries start to go up, when there are more qualified engineers than jobs salaries will level off.
Let’s get through some background concepts.
The company is motivated to manage your cost
Most of the companies you can work for will have revenue, expenses, and (hopefully) profit. Your salary is an expense for the business they need to manage responsibly. If they don’t manage it responsibly they will go out of business.
That means they’re motivated to manage that expense and not to pay you more than they need to (more on that later). It’s not personal, it’s just good business. If you’re at a company that pays far above the normal salary you need to think through a couple things
- Is this business sustainable, or is it at risk of going under (plenty of business do)
- If you lose this job, are your finances setup to drop to an average salary for your role
The company is motivated to protect it’s investment in you
Software engineers really trade on two things
- Aptitude — our ability to learn quickly
- Expertise — how much business specific knowledge we have now
Being good at the first one makes it easier to get a new job, but being good at the second one makes it easier to keep your job.
You see that expertise isn’t something that can be transferred easily. Sure you can document your knowledge, train others, share knowledge, etc. But at the end of the day someone else has to consume that knowledge and understand it for it to be useful.
Losing a software engineer with expertise is expensive.
That means the company is motivated not to underpay you, or at least not too much. If you’re well under paid then you’re at risk of getting recruited by another group that will pay you more and the company will have to reset the expertise with a new engineer (as soon as they can hire one).
Those two things mean there’s a pay band for most software engineer jobs. Above the band and you’re being overpaid, under the band and you’re being under paid.
Depending on the company that band might be wider or more narrow, but most companies will have that salary range.
Your offer will typically fall inside of the band based on how the company has assessed your aptitude.
Now let’s get into specific tips.
Do your research
You should do your research on average salaries at the company you’ve applied to. Some brief tips
- Ask the recruiter for any feedback they can share about how the interviews went — this can help you understand how the company has assessed you
- Ask the recruiter if they can share a pay band (they may not choose to)
- Use all of the salary tools on the internet these days (levels.fyi, indeed, glassdoor, payscale, etc)
- Talk to friends or former coworkers at the company to get a general idea
Realize what your research can’t tell you
The internet is an inherently untrustworthy place. And all of the research you can do is subject to that fact.
So the braggart on a forum claiming he’s fresh out of college making 2x your salary when you’ve got 10 years of experience might be real, and might be a 13 year old in their basement messing with your head.
Don’t place too much trust in data gathering that can’t be verified. Use it for guidance but don’t place too much trust in it.
Understand the pay structure of the company
Depending on the company it may include any of these things
- Base salary — how much you are guaranteed in your paycheck
- Stock compenstation that can fluctuate with the market
- Cash bonus
- Other incentives
And keep in mind that each of these different compensation techniques are taxed differently. It’s good to look at total compensation, but also consider what you need your actual take home salary to be.
Be friendly with your recruiter
Negotiating salary is stressful for both of you. And believe me your recruiter gets treated like dirt sometimes. It doesn’t help either of you to be rude.
Be polite, explain yourself and how you want the negotiation to go.
You can still negotiate hard, have very clear expectations, and ask for specific things while being polite and friendly with the other person.
Assess your negotiating position
Do you desperately need this job? Is it a step up for you? Are you very interested in the company or their mission? Is this an option you’re considering but not that excited about? Do you have alternatives?
All of that will play into how you approach the negotiation and how hard you want to push.
Personally I also think this is the only factor in whether or not you say a number first. If you don’t really need the job, and you have plenty of alternatives then in my opinion it’s better to state your compenstation expectations first.
If you desperately need the job I typically feel better letting the company lead.
Decide if the offer works for you
This is the big one. Changing jobs takes a lot of effort, you have to restart on a new technology stack and new management and projects. You have to decide if the offer is worth it to you.
If you decide to decline do so politely, thank them for taking the time, let them know you’ll keep them in mind if anything changes.
If you decide to accept, congrats!