# Salary Negotiation for Software Engineers: Do the Homework Before You Talk Money

Source: https://normanholz.de/en/articles/mastering-salary-negotiation/
Language: en
Last updated: 2024-01-16
Reading time: 6 min read

Most engineers do not lose salary negotiations because they lack talent. They lose because they negotiate from their current salary instead of their market value.

I have sat on both sides of the hiring table.

I have made offers to engineers who accepted €15K less than we had budgeted for the role. I have also watched engineers push for numbers I was sure would get rejected, only to see finance approve them two days later.

The difference was almost never talent.

It was preparation.

Salary negotiation feels uncomfortable because most engineers treat it like a personality test. Am I greedy? Am I being difficult? Will they withdraw the offer?

Wrong frame.

Negotiation is not a fight. It is part of the hiring process. The company has a budget. You have a market value. The conversation is about finding the overlap.

Here is how to not underprice yourself.

## Most engineers negotiate against themselves

The usual pattern is painfully predictable.

The recruiter asks for a salary expectation. The engineer names their current salary plus a polite increase. Maybe 10%. Maybe 15%, if they feel bold.

The company says yes.

Everyone smiles.

But that was not a negotiation. That was the engineer anchoring themselves below the available budget.

Companies rarely pay you what you are worth in some abstract moral sense. They pay what the role is worth to them, what the market forces them to pay, and what you can justify.

If you only negotiate from your current salary, you carry your old employer's compensation mistake into your next job.

Do not do that.

## Know the range before you enter the call

Before you talk money, you need three numbers.

**First, the market range.**

What do engineers at your level earn in your region, in your type of company, with your skill set?

Use Levels.fyi for larger tech companies. Use Glassdoor and Kununu for broader signals. Read job postings that publish salary bands. Talk to recruiters. Ask people you trust.

Do not look for one perfect number. You want a range.

A senior backend engineer in a small Hamburg agency, a senior platform engineer at a funded Berlin scaleup, and a senior machine learning engineer at a US remote company are not the same market.

Same title. Different game.

**Second, the company's budget.**

Ask the recruiter directly:

> "What salary range has been approved for this role?"

A surprising number of recruiters will answer.

If they dodge, ask differently:

> "To avoid wasting your time and mine, can you tell me whether the role is closer to €80K, €100K, or €120K?"

Now you are not begging. You are qualifying.

Internal referrals and similar job ads can also help. If the company already employs people in that role, there is a band. Your job is to get close to it before you name a number.

**Third, your walk-away number.**

This is the number below which you say no.

Not "I would be disappointed."

No.

If you do not have this number, you do not have a negotiation. You have a wish.

Pressure makes people stupid. Decide before the call.

## Your value is not your years of experience

Engineers often explain their value like this:

> "I have seven years of experience with React and Node."

That is not value. That is biography.

Companies pay for outcomes. So prepare your story around outcomes.

Write down three things before the negotiation:

1. What you shipped that made money, saved money, reduced risk, or moved a metric
2. What problem you solved that most engineers at your level would not have solved
3. What you can do in the new role that maps to the company's current pain

This should sound like a calm explanation of why hiring you is a good business decision.

For example:

> "In my last role, I led the migration of our checkout flow from a legacy frontend to a React-based stack. The technical part was not the hard part. The hard part was keeping payment, analytics, and customer support aligned while we shipped in pieces. We reduced checkout errors by 30% and stopped blocking feature teams on the old system."

That is a salary argument.

Not because it is loud. Because it is specific.

## Do not name the first number if you can avoid it

The first number sets the frame.

If the recruiter asks for your expectation early, you can say:

> "I am looking for a fair offer for the level and scope of the role. Once I understand both better, I am confident we can find alignment."

If they press harder:

> "I would rather first understand the approved range for the position. What band are you working with?"

If they still force you to give a number, give a range that starts at a number you would actually be happy with.

Do not say €80K to €100K if you want €100K.

They will hear €80K.

That is not because recruiters are evil. It is because anchoring works.

So if your research says the role should land between €95K and €110K, your range might be:

> "For this type of role, I am looking in the €105K to €115K range, depending on the full package."

Now the conversation starts in the right place.

## Silence is not awkward. It is useful.

When the company makes an offer, do not answer immediately.

Pause.

You do not need a theatrical ten-second silence. Just do not rush to make the other person comfortable.

A good answer is:

> "Thanks. I appreciate the offer. I need a moment to think through the full package."

Then stop talking.

If the offer is below your target, say it plainly:

> "I am excited about the role, but the base salary is below where I would need it to be. Based on the scope and my market research, I would be comfortable at €105K."

That is enough.

No apology. No essay.

## Negotiate the full package

Base salary matters. It compounds. It affects bonuses, raises, and future anchors.

But it is not the only lever.

If the company cannot move on base, ask about:

- signing bonus
- performance bonus
- equity
- remote work
- vacation days
- learning budget
- conference budget
- equipment
- job title
- review cycle
- start date

A faster compensation review can matter if the company says:

> "We cannot go higher now, but we can review after probation."

Fine. Then make it concrete.

> "I am open to that if we define the review criteria now and put the six-month review in writing."

Vague promises are not compensation.

Written commitments are.

## Counteroffers usually do not fix the problem

Your current employer may counter once you resign.

Be careful.

Most counteroffers are not a sign that you are suddenly valued. They are a sign that replacing you is inconvenient.

Ask yourself one question:

> Does this counteroffer fix the actual reason I wanted to leave?

If you were leaving only because of money, and they match the offer, maybe it works.

If you were leaving because your manager is weak, the codebase is rotting, the company has no direction, or you have stopped learning, more money only buys a few more months of frustration.

Do not accept a counteroffer because the resignation conversation was emotionally uncomfortable.

That is a bad reason to stay.

## The real mistake is trying to be liked

Engineers often want the negotiation to feel friendly.

Good. It should be friendly.

But friendly does not mean compliant.

You can be warm and firm at the same time.

The company wants the role closed and the problem solved. You are not creating conflict by negotiating. You are creating clarity.

The best negotiators I have seen were not aggressive. They were prepared.

They knew the market.
They knew their value.
They knew their walk-away number.
They could explain their impact without sounding desperate.
They did not apologize for wanting fair compensation.

That is the whole game.

Do the homework before you talk money.
