AlgoDaily

Determining Your Personal Salary Range

Read at your own pace. Code execution, quizzes, progress tracking, and the AI tutor are available in the interactive view with JavaScript enabled.

From Market To You

Why this lesson matters

In Introduction to Salary Negotiation, you built the mindset: negotiation is not about one magic number. In Researching Salary Ranges, you turned messy market signals into a research brief.

Now we use that brief to answer a more personal question:

Given my skills, experience, constraints, and value, what range actually makes sense for me?

For a senior developer, this is like moving from league-wide averages to your own depth chart value. The Steelers do not pay a left tackle only because of the NFL median; they consider scarcity, fit, reliability, and impact. Your salary range should do the same.

From Market To You

Three Range Layers

Your range has three layers

A useful personal range is not just the top number you hope for. It has structure:

Market range:       What comparable roles are paying
Personal floor:     The minimum that works for your life and goals
Value-adjusted ask: Where your skills and impact justify positioning

Think of it like this:

Lower market   Mid-market    Upper market
|--------------|-------------|
       ^             ^             ^
       |             |             |
    floor         target        stretch

Your goal is to align these layers. If your floor is far above the market, you may need a different role, level, company type, or location. If your value signals are unusually strong, your target may sit above the midpoint.

Three Range Layers

Quantify Value Signals

Turn experience into evidence

With 10+ years of coding experience, you likely have more than tenure. You may have signals that change where you fit inside the market range:

  • Role-critical skills: C++, distributed systems, performance tuning, security, architecture
  • Scope: mentoring, design ownership, cross-team leadership
  • Scarcity: skills the employer is struggling to hire for
  • Business impact: revenue, reliability, cost savings, launch speed
  • Pattern of delivery: consistent execution under ambiguity

You are not trying to create a fake formula that proves your worth. You are building a disciplined estimate so your personal range is not based only on vibes.

```cpp
#include <algorithm>
#include <iomanip>
#include <iostream>
#include <string>
#include <vector>

struct Signal {
    std::string name;
    double weight; // importance to this role
    int score;     // 1 = weak, 5 = exceptional
};

int main() {
    std::vector<Signal> signals = {
        {"C++ performance expertise", 0.30, 5},
        {"Distributed systems experience", 0.25, 4},
        {"Mentoring and technical leadership", 0.20, 4},
        {"Domain match", 0.15, 3},
        {"Recent business impact", 0.10, 5}
    };

    double weightedScore = 0.0;
    for (const auto& s : signals) {
        weightedScore += s.weight * s.score;
    }

    // Score 3.0 means solid market fit. Each point above/below adjusts by 4%.
    double adjustment = (weightedScore - 3.0) * 0.04;
    adjustment = std::clamp(adjustment, -0.08, 0.12);

    std::cout << std::fixed << std::setprecision(2);
    std::cout << "Weighted value score: " << weightedScore << " / 5.00\n";
    std::cout << "Suggested market-position adjustment: "
              << adjustment * 100 << "%\n";
}
```

Pick The Target

You researched a comparable role and found a market range of $145k-$185k, with a midpoint around $165k. Your personal floor is $155k. The role strongly needs low-latency C++ expertise, and that is one of your best-documented strengths.

Which target-setting logic is strongest?

Define Your Floor

Your floor is not your dream number

Your floor is the lowest compensation package you can accept without violating your practical needs, financial goals, and opportunity cost.

Consider:

  • Current compensation and benefits you would be giving up
  • Cost of living, commute, relocation, or remote-work changes
  • Savings goals, debt obligations, family needs, or insurance needs
  • Risk level of the company or role
  • Time cost of switching jobs
  • Other offers or credible alternatives

A floor should be calm and private. It is not a threat, and it is not necessarily something you share. It is your internal line for making a sound decision.

Define Your Floor

Compute The Range

Combine market, floor, and value

Here is a simple way to turn your research brief into a working personal range:

  1. Start with the comparable market percentiles from your research.
  2. Calculate your private floor.
  3. Adjust your target based on strong, role-relevant value signals.
  4. Keep the stretch number inside a credible market zone unless the role scope is clearly larger.

This is not a replacement for judgment. It is a guardrail against both underpricing yourself and drifting into fantasy numbers.

```cpp
#include <algorithm>
#include <iomanip>
#include <iostream>
#include <string>

int main() {
    // From your prior research brief for comparable senior C++ roles.
    double p25 = 145000;
    double p50 = 165000;
    double p75 = 185000;

    // Your private minimum based on life constraints and opportunity cost.
    double personalFloor = 158000;

    // From role-critical value signals: strong, but still within reality.
    double valueAdjustment = 0.08; // 8% above midpoint

    double rawTarget = p50 * (1.0 + valueAdjustment);
    double target = std::max(rawTarget, personalFloor * 1.05);

    // Ask zone: credible lower bound through stretch.
    double lowerAsk = std::max(personalFloor, target * 0.95);
    double stretch = std::min(p75, target * 1.07);

    std::cout << std::fixed << std::setprecision(0);
    std::cout << "Personal floor: $" << personalFloor << "\n";
    std::cout << "Target: $" << target << "\n";
    std::cout << "Working personal range: $" << lowerAsk
              << " - $" << stretch << "\n";
}
```

Floor Versus Market

True or false:

If your personal floor is above the upper end of the researched market range, the best move is usually to lower your floor immediately so you can stay competitive.

Calibrate Without Inflating

Confidence is not exaggeration

A strong personal range is ambitious and defensible. Senior candidates sometimes underprice themselves because they remember old salary history. Others overcorrect and pick a number unsupported by the role.

Use these calibration checks:

  • Would I be comfortable explaining why this range fits my level?
  • Does my evidence connect to this employer's actual needs?
  • Am I counting the same strength twice?
  • Is this role truly senior/staff/principal, or am I importing scope from a different job?
  • Would this range still make sense if a recruiter asked how I arrived at it?

Like editing a Stephen King draft, cut the parts that sound dramatic but do not serve the story. Keep the evidence that moves the plot.

Calibrate Without Inflating

Name The Minimum

Fill in the blank:

The private minimum compensation you can accept without violating your practical needs and opportunity cost is your salary ______.

Your Range Brief

End with a one-page brief

By the end of this lesson, you should be able to write a private range brief like this:

Comparable market range: $145k-$185k
Personal floor: $158k
Target zone: $175k-$185k
Why: 10+ years C++ experience, strong performance work,
     mentoring history, and direct match to the role's scaling needs.
Watch-outs: Do not accept below floor without a meaningful tradeoff.

This brief is for your clarity first. In the next lesson, Preparing for Negotiation, you will decide how to use this range as you plan the conversation. For now, the win is knowing your numbers before the pressure starts.

Open interactive view →