Most developers would rather debug a race condition than ask for more money. But here's what the hiring process looks like from the other side: employers expect you to negotiate. They've budgeted for it. The only person who thinks you shouldn't negotiate is you.
I've seen developers leave tens of thousands of dollars on the table because they didn't know what to say. They had the offer in hand, felt the pressure, and accepted the first number. That money is gone forever, and it compounds. Every raise, bonus, and future offer gets calculated off the base you accept today.
This guide puts the whole salary negotiation playbook in one place: when to negotiate and when to hold back, how to prepare, word-for-word scripts, email templates you can copy and send, what to say when they ask for your salary expectations, and how to play it when the job posting already shows a range.
1. Should You Always Negotiate Your Salary?
Here's advice you'll hear everywhere: always negotiate. Career coaches say it. HR says it. Your friends say it. Is it actually good advice in every situation?
Usually yes. Not always.
Start with why negotiating works at all. The salary range on a job description is a budget, not a limit. The employer sets aside money for the whole package, and most hiring managers build wiggle room into the initial offer because they know strong candidates push back. Studies show that job seekers who negotiate earn thousands more over their careers than those who take the first number. And the fear that stops most people, looking greedy, is backwards. To a hiring manager, a candidate who negotiates professionally looks more confident and more valuable, not greedy.
When you should definitely negotiate
Negotiate when you have real bargaining power. If you bring skills the employer badly needs, or specialized experience they can't easily replace, use it. Negotiate when the offer is below market rate: if the offer is $100K and your research shows $120K is typical for the role in your area, you have solid ground for a counter. And negotiate when you have competing offers, because a higher offer from another company is honest, concrete information that moves numbers fast.
The developers who consistently command top salaries share one more thing: they've built a personal brand. When employers seek you out instead of the other way around, the whole dynamic flips in your favor before you say a word. Speaking, writing, and open source work create bargaining power that follows you from job to job.
When you might hold back
Don't push hard if you desperately need the job and have zero other options. Companies almost never rescind offers over reasonable negotiation, but in a brutal market, weigh the risk honestly. Be careful with cash-strapped startups too. A small company with a tight budget may genuinely be at its best offer, and grinding on base salary creates tension before day one. Ask about equity instead. And if the offer already blows past what you hoped for, you're allowed to just take it. You're not obligated to negotiate every single time. Just know that most of the time, asking pays.
2. Before You Negotiate: Market Rate, Bottom Line, and Your Case
Negotiation success comes from preparation, not charisma. The best negotiators aren't smooth talkers. They're people who did the research and walked in with specific numbers.
First, know your market rate. Check what companies pay for your role, location, experience level, and company size on Glassdoor, Levels.fyi, and Salary.com. Look at total compensation data, not just base salary, because at bigger companies the equity and bonus can rival the base. If you're aiming for the highest paying engineering roles, this research is where the gap between an average offer and a top-of-band offer gets closed.
Second, know your bottom line before you talk to anyone. That means the minimum salary you'd actually accept, whether remote work is a requirement or a nice-to-have, how much the vesting schedule matters to you, and which benefits you won't bend on. Write these down. Clarity here is what stops you from getting talked into a number you'll resent in six months.
Third, build your case. Don't plan to say "I want more." Plan to say why. The impact you had in your current role. The times you saved the team time or money. The project you led that actually shipped. When you present facts, the recruiter or hiring manager can justify a higher number to whoever controls the budget. That last part matters more than people realize: your job is to hand your champion the ammunition to fight for you internally.

3. The Salary Negotiation Script: Exactly What to Say
Most people freeze during the actual conversation. Your brain goes blank, you stumble over words, and you either say something you regret or say nothing at all. A script removes the anxiety. You know exactly what to say before the conversation starts, you've practiced it, and that preparation shows.
One principle runs through every script below: listen more than you talk. Negotiators call it the 70/30 rule. Listen 70 percent of the time, talk 30. The other side will tell you their constraints and priorities if you give them room to.
Rule one: gratitude first
Before you counter anything, thank them. It sets the tone, signals you're genuinely interested, and opens the door to negotiate without being confrontational.
"Thank you so much for this offer. I'm really excited about this opportunity and I'd love to work with the team. Before I accept, I'd like to discuss the compensation package."
Countering the initial offer
You got the offer. Congratulations. Now don't accept it on the spot, even if it looks generous.
"Thank you for this offer. I'm very excited about this opportunity. Based on my experience and the value I bring to this role, I was hoping for a base salary closer to [your target number]. Would it be possible to revisit the base salary?"
Notice what this script does. Gratitude. Rationale. A specific number. Then an open question that invites discussion instead of demanding an answer. If they push back:
"I understand there may be budget constraints. Is there wiggle room in other areas like a signing bonus, stock options, or PTO?"
When they say the salary is non-negotiable
Don't take this at face value. It often isn't true, especially coming from a recruiter who benefits from a fast close.
"I appreciate you being upfront. Is the hiring manager or HR open to discussing this? I want to make sure we find an arrangement that works for both of us."
If base salary truly can't move, shift to the rest of the package:
"If the base salary is fixed, I'd like to discuss the total compensation package. Would you be open to a signing bonus or additional PTO to help bridge the gap?"
Using a competing offer
"I want to be transparent. I have another offer at a higher salary. I want to work here because [specific reason], but I need the compensation to be competitive. Is there flexibility to get closer to what the other company is offering?"
This works because it's honest and it gives them a reason to compete. Don't bluff. If they call it and you have nothing, you've torched your credibility.
When the answer is still no
"If we can't adjust the base salary now, would it be possible to revisit this in six months based on my performance?"
Get that commitment in writing if you can. A documented review path protects your future salary growth even when today's number is stuck.

4. Salary Negotiation Email Templates
Negotiating by email feels awkward at first. You're staring at a blank screen trying not to sound greedy or ungrateful. But email gives you a real advantage. You have time to think. You can craft your words, forward the draft to a mentor for feedback before you hit send, and you end up with a written record of everything discussed. Nobody can pressure you into a snap decision on a phone call.
Every effective negotiation email follows the same structure. A clear subject line like "Re: [Position] Offer." An opening that thanks them. A specific request backed by market data and your experience. And a close that keeps the conversation open instead of issuing an ultimatum.
Template: responding to a job offer
Subject: Re: [Position] Offer
Dear [Hiring Manager's Name],
Thank you for the offer for the [Position] role. I'm excited about the opportunity to contribute to [Company] and believe my experience and skills make me a strong fit for the team.
After reviewing the offer and researching current market data for similar roles, I'd like to discuss the base salary. Based on my level of experience and the market range for this position, I was hoping for a salary closer to [Target Amount]. This figure reflects the going rate for comparable roles and my ability to deliver immediate value.
I'm very interested in joining [Company] and am confident we can find an arrangement that works for both of us. Would you be open to discussing the compensation package further?
Thank you again for the opportunity.
Best regards,
[Your Name]
Notice the DNA of that template. Gratitude, evidence, a specific number, and an open door. It never apologizes for asking, issues an ultimatum, or says a word about rent or personal expenses. The company pays for value, so value is the whole argument.
And if the answer comes back no? Don't fire off a reply the same day. Thank them, then ask a better question: "What would I need to accomplish for us to revisit this in six months?" Now you've turned a rejection into a documented roadmap with a date attached. Get their answer in writing and start checking off the list.
Send the offer-response email within 24 to 48 hours of receiving the offer. That's long enough to research and evaluate the full offer, short enough that nobody wonders whether you've lost interest. And if the negotiation happens on a call instead, send a follow-up email summarizing what was discussed so nothing gets fuzzy later.

5. What to Say When They Ask for Your Salary Expectations
This question shows up early in the interview process, and how you handle it matters more than almost anything else, because whoever names a number first anchors the negotiation. Name one too early and you can lowball yourself before you even know what the job involves.
"I'd prefer to learn more about the role and what it entails before discussing compensation. That said, I want to make sure we're aligned. What's the salary range you've budgeted for this position?"
You're not dodging the question. You're asking them to show their cards first, and most of the time they will.
If they insist, give a range instead of a single number, and make sure the bottom of your range is a number you'd happily accept, because that's the number they'll hear. If the posted range is $70,000 to $90,000 and you want $85,000, say your range is $83,000 to $95,000. That signals you expect to negotiate and you have reasons for your ask.
A script gets you a better number in one conversation. The developers who get the best numbers without fighting for them are the ones the company already knows by name. The free 5-day Rockstar Engineer Blueprint from John Sonmez shows you how to become that developer.
Get the Free Course6. How to Negotiate When You're Given a Salary Range
Pay transparency laws in states like California, Colorado, and Washington now force many employers to post salary ranges right in the job listing. Great for job seekers. But most people read the range wrong.
A posted range is not a final answer, and it's definitely not a promise of the top number. Most hiring managers open somewhere in the middle or lower part of the band. The bottom of the range is their minimum. The top is what they're able to pay. Your job is to make the case for the top.
To land there, show value they can point to: quantified accomplishments, skills that match the job description exactly, impact from previous roles with numbers attached. Timing matters too. Your maximum bargaining power arrives after the formal offer and before you accept. At that point they've decided they want you, they've invested weeks in the process, and they do not want to start over.
If the offer lands mid-range, ask directly what it would take to get to the top of the band. Often the hiring manager has to sell that number to their boss or HR, so hand them the specific achievements that make the internal case easy.
Can you go above the posted range?
Sometimes, yes. The posted range isn't always the ceiling. If your research shows the market pays more for your skills, present that data. Mention competing offers if you have them. Explain what specifically justifies a premium. And if base truly can't exceed the band, take the difference in signing bonus, equity, relocation assistance, extra PTO, or professional development budget.
One more thing: get the final offer in writing before you decide. Verbal offers change. Documented ones don't.

7. Negotiate the Whole Package, Not Just the Base
Base salary is the headline, but the offer is the whole package. When the base won't move much, the rest often will:
- Signing bonus (usually one-time, so don't confuse it with recurring pay)
- Annual bonus targets and how they're actually calculated
- Equity, stock options, or a faster vesting schedule
- Extra PTO or more generous paid leave
- Remote work flexibility
- Professional development budget for conferences and certifications
For developers specifically, the signing bonus is usually the easiest lever. It comes out of a different budget than base salary, it doesn't compound into next year's raise pool, and hiring managers can often approve it without escalating. If they're 0K short on base, a 5K signing bonus takes thirty seconds to ask for. For equity, don't just accept a share count. Ask what percentage of the company it represents, the current valuation, and the vesting schedule. Ten thousand options mean nothing without those three numbers.
Sometimes the salary can only move a little but the company can add thousands in value through bonuses and equity. Ask about all of it, and weigh each piece by what it's worth to you, not by which number is biggest.
8. Competing Offers and Counteroffers
If you're lucky enough to have multiple offers, use them honestly. Never invent a competing offer. Keep it professional and focus on the offer letters, not emotions. The employer learns you're a candidate other companies want, and that information alone loosens budgets.
Here's what using an offer honestly sounds like:
"I want to be transparent with you. I have another offer at [amount], but this role is my first choice. If you can get closer to [your target], I'm ready to sign this week."
That one sentence does three things. It proves your market value with evidence instead of adjectives. It tells them exactly what closing you costs. And it gives them a deadline without an ultimatum. If they genuinely can't match the number, ask for a compensation review at six months with specific, written goals attached. A company that wants you will say yes to that. A company that won't even do that just told you something important.
Counteroffers from your current employer deserve more suspicion. If your company only finds more money after you resign, ask yourself why they didn't value you at that level last month. Sometimes a counteroffer is genuine. Often it's a retention patch while they plan your replacement on their timeline instead of yours. Weigh it carefully, and remember the goal of any negotiation is an agreement both sides actually want to keep.
9. Negotiating a Raise at Your Current Job
Negotiating a raise follows the same logic with one difference: your evidence is sitting in the commit history. Don't just ask for money. Book a meeting with your manager and bring what you've delivered, how you've grown, and how your responsibilities already match the level you're asking to be paid at.
Timing matters as much as evidence. The strongest moments to ask are right after new information enters the picture: you shipped a project that moved a real metric, you absorbed the responsibilities of someone who left, a competitor tried to recruit you, or fresh market data shows your role now pays more than it did when you signed. Any one of those changes the math your salary was based on, and pointing at the change is much more persuasive than pointing at the calendar. An anniversary isn't an argument. New information is.
Your reputation outside the building counts as new information too. Conference talks, open source work, writing that gets passed around your niche: these raise the price of replacing you, and every manager quietly knows it. This is the quiet compounding return of building a personal brand as a developer. Companies pay retention premiums for engineers other companies can see.
Email works well to open this conversation, because it lets your manager prepare instead of getting ambushed:
Subject: Discussion Request: Compensation Review
Dear [Manager's Name],
I wanted to schedule time to discuss my current salary and the potential for an adjustment. Over the past [time period], I've [specific accomplishments], which have contributed to [measurable results].
Based on my expanded responsibilities and current market data, I believe a salary increase to [Target Amount] would reflect my contributions and the going rate for my role.
I'm committed to [Company] and want to continue growing here. Could we find time this week to discuss this further?
Thank you for considering my request.
Best,
[Your Name]
If the answer is "not this cycle," ask what specifically would earn the number you're targeting and when it gets revisited. A documented path with a date beats a vague "soon." And if the path never materializes, that's information too. Asking for a raise after years of being underpaid is much harder than negotiating well at the start, which is exactly why the rest of this guide exists.
Every tactic in this guide works better when the company already wants you specifically. AI is making raw coding skill cheap, so the offers follow the developers people know. The free Rockstar Engineer Blueprint from John Sonmez is a 5-day course on building that name.
Get the Free Course10. The Mistakes That Kill Salary Negotiations
Across hundreds of developer salary negotiations, the same errors show up again and again:
- Accepting the first offer without asking. Most initial offers have room. If you don't ask, you don't get.
- Naming your number too early. You lose your position the moment you anchor low. Get their range first.
- Being vague. "A bit more" is not a negotiation position. Give a specific number backed by research.
- Making it about your needs. Your rent is not the company's problem. Your value is the argument.
- Lowballing yourself. Ask for less than you want and the company will simply say yes to it. Start slightly above your target.
- Ignoring everything except base salary. Bonus structure, equity, PTO, and benefits can be worth thousands.
- Skipping the written offer. Verbal promises evaporate. Get salary and benefits documented before you decide.

11. Practice Before It Counts
Reading scripts isn't enough. Say them out loud. Get a friend to play the hiring manager and rehearse until the words stop feeling foreign in your mouth. A recruiter can tell the difference between nervous and prepared within one sentence.
The first negotiation feels awkward. By the third or fourth, it feels routine, and the skill pays you back on every offer for the rest of your career. Whether you negotiate every single offer or take it case by case, go in with a plan. The worst outcome isn't hearing no. It's never asking at all.
12. Extra Recommended Resources
- Never Split the Difference Book
- Chris Voss's Master Class
- Becoming Good at Negotiating (Inside Bulldog Mindset Membership)
- Negotiating Your Salary: Aim For The Big Numbers (Bulldog Mindset YouTube)
- The Ultimate Guide To Salary Negotiation For Software Developers
For the long-form version of everything covered here, John Sonmez's The Complete Software Developer's Career Guide is the closest thing the industry has to a career manual for developers.