Federal Tech Pays 20% Less — So Why Doesn't Anyone Leave?
A private-sector data scientist in the US faces roughly a 1-in-5 chance of losing their job involuntarily in any given year. For a federal data scientist, that number is essentially zero.
That single contrast is the key to a puzzle hiding in plain sight. Federal tech jobs pay about 20% less than private ones — a gap everyone knows about and no one can quite explain away. In a labor market with few real barriers between public and private tech work, a gap that large should close: underpaid workers should leave until supply and demand rebalance. They don't. Federal tech workers almost never leave at all.
The U.S. Office of Personnel Management just opened a public API exposing the entire federal civilian workforce — every hire, departure, grade, and pay rate. Pairing it with the Skillenai job index and BLS benchmarks lets us price both sides of the public-sector bargain exactly. It turns out to be real, larger than most people assume, and held together by one design choice: the pension.
Get an email when we publish a new post. No account needed, unsubscribe anytime.
The price: a real, quantifiable pay penalty

Comparing current federal base pay against private posted salary — both for the senior-skewed populations that dominate each side — the gap is clear:
| Role | Federal base (median) | Private posted base (midpoint) | Gap |
|---|---|---|---|
| Data Scientist | $144K | $178K | −19% |
| Software Engineer / IT | $149K | $191K | −22% |
Two things make it worse than the median suggests. First, no equity or bonus — both numbers are base pay, and private tech layers 20–50%+ on top that federal simply doesn't have. Second, a hard ceiling: federal base caps around $197K at the top of the GS scale, while private postings run uncapped (Machine Learning Engineer reaches ~$299K). So the ~20% median gap widens sharply toward the top of the market.
So why doesn't a gap like that drive people out?
The bargain: mobility and security are two different things

A low quit rate is easy to misread as "stability." It isn't — it's mobility, and security is a separate axis. Splitting voluntary from involuntary exits shows federal tech is unusual on both:
| Mobility — voluntary quit rate | Security — involuntary job-loss rate | |
|---|---|---|
| Federal tech | ~2% / yr | ~0% / yr |
| Information sector (private tech) | ~13% / yr | ~22% / yr |
| Total private | ~25% / yr | ~14% / yr |
Federal tech workers quit at one-tenth to one-fourteenth the private rate — they rarely leave. And they're almost never pushed out: a private tech worker faces roughly a 1-in-5 annual chance of involuntary job loss; a federal one, essentially none. BLS tenure tells the same story — 6.5 years federal versus 3.5 private.
That security is the payoff for the pay cut. It is genuinely enormous, and it is the thing private tech cannot offer at any price.
The 2025 twist: the promise held in letter

Even the largest federal contraction on record didn't break the "no involuntary layoffs" rule. Through 2025 a hiring freeze and a government-wide deferred-resignation program cut the workforce about 12% — but the mechanism was voluntary. The September 2025 fiscal-year-end exodus pushed the annualized quit rate to ~49%, while involuntary reduction-in-force never exceeded ~1%. The government didn't lay people off; it paid them to leave. The security promise survived — technically.
The hinge: the pension closes the gap and locks the door

Why don't underpaid federal workers leave to arbitrage the gap away? The clearest answer in the data is the pension, and its fingerprints are unmistakable:
- Quits fall monotonically as the pension vests: 5.5% at age 20–24, down to 0.4% at 60–64 — a roughly 14× decline across a career.
- Retirements erupt exactly at pension-eligibility ages: near-zero through age 54, then a wave at 55–65. People stay until the pension, then leave all at once.
Federal compensation is back-loaded — a lower salary now in exchange for a defined-benefit pension that vests and grows with tenure. That one design choice does three things at once: it partly closes the pay gap with deferred money invisible in base salary, it manufactures the golden handcuffs above, and the resulting low mobility is exactly what lets the base-pay gap persist without an exodus. The pay penalty, the low mobility, and the security aren't three facts — they're one back-loaded bargain with the pension at its center.
Is it security, or is it lock-in? A low quit rate can mean workers are content (the deal is fair) or that they're stuck (a below-market wage persists because leaving is costly). The age evidence tilts toward lock-in being real: the retirement cliff is mechanically tied to pension eligibility, and prime-age workers (40–54) quit at just 1–2% with 15+ career years left. But it isn't the whole story — even the youngest, un-vested federal tech workers quit far below their private peers, which points to selection (security-preferring people sort in) and non-transferable experience binding from day one. It is both a fair trade and a lock-in, and the pension is why it can be both at once.
What it means for your career
If you're weighing a federal tech job: you're trading ~20% of base pay (and all equity upside) for a level of job security that essentially doesn't exist in private tech — a 1-in-5 annual layoff risk, gone. That's rational if you're risk-averse or value the mission. Just know the handcuffs are real: the pension rewards staying and penalizes leaving, and federal experience travels back to the private market imperfectly. It's easier to walk in than to walk back out.
If you're already inside and underpaid: the math that keeps you there is the deferred pension, not the salary. Price it explicitly before you assume you can't afford to leave — and price it down if you're young enough that the vesting is still far away.
Methodology
Federal data is from the OPM Federal Workforce Data API (employment, accessions, separations), pay as annualized_adjusted_basic_pay (base including locality, excluding bonus/TSP). Private salary is Skillenai's US job index (base range, USD, spam employers excluded). Benchmarks are BLS JOLTS quits and layoffs-and-discharges (May 2026) and the Employee Tenure release (January 2024). Federal occupational series are mapped conservatively to job titles (Data Scientist = series 1560; Software Engineer/IT = 2210 + 1550). Federal pay is current (2026) incumbent median, level-matched to the senior-skewed private postings; compared base-to-base. The federal involuntary figure is RIF-only, while the BLS layoffs measure also includes for-cause discharges, so the true involuntary gap is somewhat smaller than 22% versus ~0% — but still very large. The lock-in-versus-sorting question is not fully identified by quit data alone; we lead with the age/pension evidence and state the residual ambiguity plainly.
The entire federal side runs on public, no-authentication data through the open-source opm-fwd-skill — you can reproduce every number here yourself. Full methodology, code, and data.