Handbooks  /  Salary Negotiation
Handbook~15 min readCareerworked math + runnable code
The Salary Negotiation Handbook

Always
counter.

Most engineers accept the first number and quietly leave money on the table — often a lot of money, because a starting salary compounds for a whole career. The reluctance is emotional: it feels risky, greedy, ungrateful. But run the numbers and the fear evaporates. A polite counter has a real chance of working, and almost no chance of backfiring — companies don't rescind offers over a reasonable ask. That makes negotiating one of the highest-return, lowest-risk moves you'll ever make. This handbook is the expected-value case for asking, and it's runnable.

01

The lopsided bet

Negotiating feels scary because we imagine a downside that mostly doesn't exist: that asking for more will make the offer disappear. In reality, a company that has decided to hire you — sent an offer, wants you on the team — does not throw that away because you politely asked for a bit more. They either say yes (fully or partly) or they say "this is our best," and hold the original. The offer stays on the table. That asymmetry is the whole game.

Put it in expected-value terms. Suppose a counter is accepted with some probability p, giving you the higher number, and with probability 1−p they hold at the original. Your expected outcome is p·(higher) + (1−p)·(original), which is always more than the original for any p > 0 — because the "bad" branch still leaves you exactly where you'd have been by accepting. You're being offered a bet where heads you win and tails you break even. There is almost no other decision in your career with a payoff structure that generous, which is why "should I negotiate?" is, mathematically, nearly always "yes."

The one-sentence version

Countering is positive expected value for any real chance of success, because the downside — an offer rescinded over a polite ask — essentially never happens; you either gain or break even, and the gain compounds for a career.

02

Your BATNA is leverage

If expected value says "ask," the question becomes "how hard, and when do I walk?" The answer is your BATNA — Best Alternative To a Negotiated Agreement, a term from negotiation theory. It's simply your best option if this deal falls through: a competing offer, your current job, or just the ability to keep looking. Your BATNA sets the floor: you should accept an offer only if it beats your BATNA, and you can push for more precisely to the degree your BATNA is strong.

This reframes negotiation from a battle of nerve into a comparison of options. If you have a competing offer at $150k, you can negotiate this one calmly and firmly, because you genuinely don't need it — your walk-away is real and good. If your only alternative is unemployment, you have less room (though the EV logic still says to make a polite ask). So the single highest-leverage thing you can do isn't a clever phrase in the room — it's improving your BATNA before you're in the room: interview at several companies at once so you have real, concrete alternatives. Leverage isn't something you perform; it's something you arrange in advance. A strong BATNA does the negotiating for you.

03

It compounds

Here's the part that turns a modest win into a career-changing one: raises are almost always a percentage of your current base. So a one-time bump to your starting salary doesn't pay off once — it lifts the base that every future raise, bonus, and often your next job's offer is computed from.

A $10k bump over 5 years at 5% annual raises
Year 1+$10,000 (the negotiated bump)
Year 2+$10,500 — the bump itself got the 5% raise
Year 3–5+$11,025, +$11,576, +$12,155 — compounding on the elevated base
Total$55,256 over 5 years — far more than $10k × 5 = $50k

The naive intuition says "$10k more, times 5 years, is $50k." But because each year's percentage raise now applies to a higher base, the true lifetime value is a geometric series that exceeds that — about $55k over just five years, and the gap widens the longer your career and the higher the raise rate. Extend it across a 30-year career and factor in that future employers frequently anchor their offers to your current pay, and a single successful negotiation can be worth six figures. That's the real stakes hiding behind a ten-minute conversation: you're not negotiating this year's paycheck, you're setting the base that everything else multiplies.

04

The negotiation math

The expected value of countering weights the higher outcome by its chance of success and the original by the rest — and it beats accepting whenever p > 0:

EV(counter)  =  p · counter + (1 − p) · original   >  original  ⟺  p > 0

100k offer, 110k counter: at p=0.5, EV = 105k; even at p=0.1, EV = 101k. The "no" branch just holds the original, so asking never costs you.

Accept only above your BATNA; and the lifetime value of a base bump is a compounding series, not a flat multiple:

accept  ⟺  offer ≥ BATNA     career value  =  gain · ((1+r)years − 1) / r  >  gain · years

A $10k bump over 5 years at r=5% is worth ≈ $55,256, not $50,000. The runnable version below computes the EV, the accept rule, and the compounded career value.

RUN IT YOURSELF

The expected value of asking

The case for negotiating is arithmetic. A counter is accepted with some probability p (you get the higher number) and otherwise the employer holds the original — they essentially never rescind over a polite ask. So the expected value is p·counter + (1−p)·original, which beats simply accepting for any p above zero: the downside branch just leaves you where you started. Accept only above your BATNA (your walk-away), and remember a base bump compounds — its lifetime value is a geometric series, more than face value times the years. Change the numbers and watch the expected value and the compounded career value.

CPython · WebAssembly
05

How to actually do it

The math says ask; here's the execution, which is calmer and more scripted than people fear:

MoveWhy it works
Do your researchKnow the market range (levels.fyi, peers) so your ask is anchored in data, not a guess. Numbers beat feelings.
Get competing offersThe strongest, most concrete BATNA. Interview in batches so offers arrive close together.
Let them name a number firstAvoid anchoring yourself low; if pushed, give a researched range, not a single figure.
Counter in writing, politely, specifically"I'm excited to join. Based on my research and experience, I was hoping for X — can we close the gap?" A specific number + brief reason.
Negotiate the whole packageBase, equity, signing bonus, level, start date, remote — some levers move more easily than base.
Never accept on the spot"Can I have a couple of days?" is normal and expected — it buys time and signals you have options.

Notice how little of this is confrontational. You're not demanding; you're a professional, anchored in market data, expressing enthusiasm while asking to close a gap — a collaborative frame ("us solving this together") rather than an adversarial one ("me versus you"). The recruiter negotiates for a living and expects a counter; not countering can even read as naïveté. And level is often the biggest lever of all — being hired one level up can be worth far more than any base tweak, because it changes your entire pay band and trajectory. Come in calm, specific, and researched, and negotiation becomes what the math already told you it was: a low-risk, high-value conversation you'd be leaving money on the table to skip.

06

Pitfalls

The first is simply not negotiating out of fear or gratitude — the single most expensive mistake, because you forfeit a positive-EV bet and, through compounding, a career's worth of money. Gratitude for the offer and negotiating it are not in conflict; you can be genuinely excited and still ask. The second is lying about competing offers: it's tempting, but if called (recruiters talk, and some ask for proof), it destroys your credibility and can cost you the offer. Real leverage or honest framing only — never invent a number you can't stand behind.

Two more. Anchoring yourself first and low: blurting out a number early, especially a modest one, caps the whole negotiation — let the employer go first when you can, and if you must speak, give a researched range. And fixating only on base salary: total compensation is base + equity + bonus + benefits + level, and the company often has more room in signing bonus or equity than in base, or can move you up a level — so negotiating the whole package (and especially level) frequently beats grinding on base alone. The meta-point is that negotiation feels emotional but is fundamentally a numbers problem: the expected value says ask, your BATNA says how hard, and compounding says it matters far more than it looks. Treat it as the calm, calculated, low-risk decision it is, and you'll capture value that silent acceptance quietly hands back to the company every single time.

Worth knowing

Always make a polite counter — it's positive EV and offers aren't rescinded over reasonable asks. Improve your BATNA before the conversation (competing offers), never lie about them, let them name a number first, negotiate the whole package (level especially), and remember a base bump compounds for a career.

Frequently asked

Quick answers

Should you always negotiate?

Almost always — a polite counter is positive expected value: real upside, near-zero downside (offers aren't rescinded over a reasonable ask).

What is a BATNA?

Your Best Alternative To a Negotiated Agreement — your walk-away option. It's your real leverage; improve it (competing offers) before you negotiate.

Why does a small raise matter?

Raises are a percentage of base, so a one-time bump compounds — its lifetime value exceeds face value times years, and future offers anchor to it.

How should engineers negotiate?

Research the market, get competing offers, let them name a number first, counter politely in writing with a specific figure, and negotiate the whole package and level.

Finished this one? 0 / 99 Handbooks done

Explore the topic

See this alongside everything else on the same subject — handbooks, system designs, challenges and tools, in one place.