Tech Salary Negotiation — Complete Guide
In this tutorial, you'll learn about Tech Salary Negotiation. We cover key concepts, practical examples, and best practices to help you understand and apply this topic effectively.
Tech salary negotiation is a learnable skill that can increase your compensation by 10–30% using market research, timing strategies, competitive offers, and effective communication techniques. Failing to negotiate costs the average engineer $500,000+ over a career. The teams at Doda Browser, DodaZIP, and Durga Antivirus Pro hire engineers who demonstrate strong communication skills — including the ability to negotiate professionally.
Why Most People Don't Negotiate (And Why You Should)
| Reason Not to Negotiate | Reality |
|---|---|
| "I don't want to seem greedy" | Employers expect negotiation. Not negotiating can signal low confidence. |
| "They might withdraw the offer" | Extremely rare for reasonable requests. Offers are almost never rescinded. |
| "I don't know what to ask for" | That's what research solves. Data removes the guesswork. |
| "I'm lucky to have any offer" | If they made an offer, they want you. Leverage is higher than you think. |
| "I'm early in my career" | The largest percentage gains come at the beginning. Every dollar compounds. |
Phase 1 — Preparation (Before You Apply)
Market Research
Know your worth before you enter any conversation:
# Salary research data aggregator
import json
salary_data = {
"San Francisco": {
"frontend_junior": {"avg": 95000, "range": [75000, 120000]},
"backend_mid": {"avg": 145000, "range": [110000, 180000]},
"senior_engineer": {"avg": 195000, "range": [155000, 250000]},
},
"New York": {
"frontend_junior": {"avg": 85000, "range": [70000, 110000]},
"backend_mid": {"avg": 135000, "range": [100000, 170000]},
"senior_engineer": {"avg": 180000, "range": [145000, 230000]},
},
"Remote US": {
"frontend_junior": {"avg": 75000, "range": [60000, 95000]},
"backend_mid": {"avg": 120000, "range": [95000, 155000]},
"senior_engineer": {"avg": 165000, "range": [130000, 210000]},
},
}
def estimate_range(role, location, years_exp):
data = salary_data.get(location, salary_data["Remote US"])
return data.get(role, data["backend_mid"])
# Example
estimate = estimate_range("backend_mid", "San Francisco", 3)
print(f"Expected range: ${estimate['range'][0]:,} - ${estimate['range'][1]:,}")
print(f"Market average: ${estimate['avg']:,}")
Expected output:
Expected range: $110,000 - $180,000
Market average: $145,000
Total Compensation Framework
Tech compensation has four components. Understand each:
| Component | What It Is | Negotiable? |
|---|---|---|
| Base salary | Cash paid bi-weekly | Yes, usually 10–30% above initial offer |
| Equity/RSUs | Company stock or options | Yes, often the most negotiable component |
| Signing bonus | One-time cash at start | Yes, typically $10k–$50k |
| Annual bonus | Performance-based cash | Usually formula-based but negotiable at senior levels |
Phase 2 — During the Interview Process
The Salary Question
When asked "What are your salary expectations?":
❌ Bad: "I'm looking for $150,000."
(You've anchored low with no data.)
✅ Good: "Based on my research for this role in this location,
I'm targeting $140,000–$170,000. But I'm flexible depending on
the total package and the opportunity."
(Range gives room. Total package keeps doors open.)
Never give a number first if you can avoid it. Say: "I'd like to learn more about the role and the full package before discussing numbers."
The Offer Stage
When the offer arrives, never accept immediately:
# Your response template
echo "Thank you for the offer. I'm very excited about the role and the team.
I'd like to take a day or two to review the details carefully.
Could I follow up with you on [day]?"
Phase 3 — The Negotiation
Written vs Verbal
Always negotiate in writing first. This gives you time to think and creates a record.
## Negotiation Email Template
Subject: Offer Review — [Your Name]
Hi [Recruiter Name],
Thank you again for the offer. I'm very excited about joining
[Company Name] and contributing to [specific project/team].
After reviewing the offer, I was hoping we could discuss the
compensation package. Based on my experience in [specific area],
my research on market rates for this role, and [1-2 specific
accomplishments from interviews], I was hoping we could
target:
- Base salary: $[number]
- Equity: $[number or percentage]
- Signing bonus: $[number]
I'm confident I can deliver strong results for the team and
I want to make sure the compensation reflects the value I'll
bring. I'm open to discussing different structures if that
helps.
I'd love to find a package that works for both of us.
Best,
[Your Name]
The BATNA Principle
BATNA = Best Alternative To Negotiated Agreement. Know your walk-away point:
# Calculate your minimum acceptable offer
class OfferEvaluator:
def __init__(self, base, equity, signing_bonus, annual_bonus_pct):
self.base = base
self.equity = equity / 4 # annualized
self.signing = signing_bonus / 4 # annualized over typical vest
self.bonus = base * annual_bonus_pct
def year_one_total(self):
return self.base + self.equity + self.signing + self.bonus
def is_acceptable(self, minimum):
return self.year_one_total() >= minimum
offer = OfferEvaluator(150000, 80000, 30000, 0.10)
print(f"Year 1 total: ${offer.year_one_total():,}")
print(f"Meets minimum? {offer.is_acceptable(170000)}")
Expected output:
Year 1 total: $183,000.0
Meets minimum? True
Equity Negotiation
Equity is often the most valuable — and most confusing — part of the offer.
| Term | What It Means |
|---|---|
| RSU | Restricted Stock Units — actual shares that vest over time |
| Options | Right to buy shares at a set price (strike price) |
| Strike price | Price you pay to exercise options |
| Vesting schedule | When shares become yours (typically 4-year, 1-year cliff) |
| 409A valuation | IRS-determined fair market value of private company shares |
Common Mistakes
- Negotiating too early — Before you have an offer, you have no leverage. Don't negotiate during phone screens.
- Lying about competing offers — Fabricating offers destroys trust. If you don't have another offer, negotiate on market data.
- Only negotiating salary — Equity, signing bonus, and benefits can add $50k+/year. Negotiate the full package.
- Accepting the first number — The first offer is never the best offer. The company expects you to negotiate.
- Being adversarial — Negotiate like a partner, not an adversary. "I'd love to make this work — can we find a package that works for both of us?"
- Not considering non-monetary factors — WLB, growth opportunities, remote flexibility, and team culture matter as much as salary.
- Giving up too easily — If they say "no" to salary, ask about equity, signing bonus, or a performance review in 6 months.
Practice Questions
1. When should you start salary negotiation? After you have a written offer, never before. During interviews, deflect by saying you're focused on finding the right fit.
2. What do you say when asked your current salary? Redirect: "I'd rather focus on the value I can bring to this role. Based on my research, competitive compensation for this position is in the range of X to Y."
3. How do you negotiate without competing offers? Use market data from Levels.fyi, Glassdoor, and Blind. "Based on my research, the market rate for this role at similar companies is X to Y. I'd like to be at Y given my experience."
4. What percentage increase is reasonable to ask for? 10–20% above the initial offer is standard. 20–30% is aggressive but possible with strong leverage. Anything above 30% needs compelling justification.
5. Challenge: Prepare a complete negotiation plan for your next job change. Research market rates for your role using 3 different sources. Draft a written negotiation email. Practice your verbal script with a friend. Calculate your BATNA and target numbers for salary, equity, and signing bonus.
Real-World Task
Anonymize and share your current total compensation breakdown (or a hypothetical one) with 3 trusted peers or mentors. Ask each to role-play a negotiation counter-offer. The practice of articulating your ask out loud is invaluable.
FAQ
Built by the developers of DodaTech
Doda Browser, DodaZIP & Durga Antivirus Pro