Research levels and market data
Know what the role pays before you name a number.
- Explain how levels and pay bands shape offers.
- Gather reliable market data for a role, level, and location.
- Use percentiles to set a realistic target.
Negotiation without data is guessing. Companies place every engineer at a level (for example junior, mid, senior, staff), and each level has a pay band - a range for base, bonus, and equity. Where you land depends on the level they assign you and your position in the band. Market data tells you what that band probably looks like.
Where the data comes from
- Crowdsourced compensation sites that report offers by company, level, and location.
- Salary ranges in job postings, which some jurisdictions require.
- Your network: peers at the company or at similar companies.
- Recruiters, who can often share the range for a role if you ask.
Compare like with like: the same level, location, and type of company. Look at the distribution, not a single data point - the median tells you what is typical, and the 75th percentile shows what strong offers look like.
offers = sorted([182, 195, 205, 210, 224, 240, 265]) # TC in thousands
median = offers[len(offers) // 2]
print(f"Median: {median}k, range: {offers[0]}k-{offers[-1]}k")Median: 210k, range: 182k-265k
Level matters more than negotiating within a level. Being placed one level higher can raise compensation far more than any within-band negotiation. If your experience matches a higher level, it is reasonable to ask how the level was decided and whether your interviews support leveling up - before you discuss numbers.
Key takeaways
Offers come from pay bands tied to levels.
Use several sources and compare the same level, location, and company type.
Target with percentiles, and question the level before the numbers.
Lesson quiz
5 questions · pass with 4 correct · up to 50 XP
Passing this quiz completes the lesson and keeps your streak going. Questions you miss come back in review sessions later.
Practice: run the numbers
Use short Python programs to calculate total compensation, vesting, market percentiles, and counteroffers. These exercises run locally in your browser.
Summarize market data
Read a line of total compensation data points (whole numbers, in thousands). Print median: M and p75: P. The median is the middle value, or the average of the two middle values (rounded down) when the count is even. For p75 use the nearest-rank method: the value at rank ceil(0.75 * n) in sorted order (ranks start at 1).
- Odd count
- Even count
Python runs in a sandboxed browser worker with a 60 second time limit. Its runtime loads from the Pyodide CDN; your code stays in this browser.
Questions about this lesson
Stuck? Ask. Figured something out? Share it. Explaining is one of the best ways to learn.
Loading posts…