Part I · Chapter 5
The source hierarchy
Chapter 4 showed you four bad numbers. This chapter gives you a system, so you do not have to judge each one from scratch.
Every source of career data falls into one of five grades. Lower is better.
Grade 1: primary
These organisations measure things themselves, publish their method, and have no product to sell you.
Government statistics offices. The Bureau of Labor Statistics in the United States. Eurostat in Europe. The OECD and the International Labour Organization. National statistics offices in most countries. Federal Reserve research banks.
Also here: academic research surveys with published methods. The CRA Taulbee Survey, which counts computing degrees and faculty in North America. The National Science Foundation’s Survey of Earned Doctorates. Government immigration authorities publishing their own visa rules and thresholds.
Grade 1 sources are slow. They are usually one to two years behind. That delay is the price of getting it right, and it is worth paying.
Grade 2: structured survey
Large surveys run by organisations with a real interest in the answer, but with a published method and a stated sample size.
The Stack Overflow Developer Survey. The JetBrains developer ecosystem survey. ISC2 and SANS in security. NACE and Handshake on graduate hiring. QED-C on quantum.
These are useful and often current. Two weaknesses. The people who answer choose to answer, so they are not a random sample. And the organisation usually has a view it would like confirmed.
Read them, and read the method section before the results.
Grade 3: verified transactional
This grade is unusual, and it is the one most people underrate.
These are records of money that actually changed hands, checked by somebody with a reason to check.
Labor Condition Application filings. A United States employer sponsoring a foreign worker must file the wage in public and sign it. Lying is a crime. In several fields these filings are the closest thing to the truth about pay.
Payroll platforms that verify. Firms like Howdy publish salary data taken from payroll they run themselves. Vetted contractor sites such as Lemon.io publish rates people were really paid.
Levels.fyi and similar sites, which check submissions against offer letters.
Grade 3 has one known weakness: selection bias. The data only covers people who used that route. Wage filings cover sponsored workers, not everyone. A contractor platform covers contractors who passed its test.
So grade 3 numbers are accurate about a specific group. Your job is to check whether that group is your group. Chapter 25’s Epic profile shows this failing in practice, where excellent wage data described the wrong population entirely.
Grade 4: aggregator
Salary websites. Glassdoor, Payscale, Salary.com, ZipRecruiter.
People type in their own pay. Nobody checks it. The site mixes different jobs under one title, and different countries under one average.
They are also, for most of the world, the only pay data that exists at all.
So this book uses them, and labels them every time. The rule is simple. A grade 4 number gives you a direction, never an amount. If it says senior pays more than junior, believe that. If it says senior pays $127,431, believe only the first digit.
Try this yourself, and watch a grade 4 number stop meaning anything
Here is an exercise. It takes ten minutes and it will change how you read salary sites forever.
While researching Chapter 26, I asked one large salary site what three different specialists earn in the United States. A precision agriculture software engineer. An energy grid software engineer. A government software engineer.
Three unrelated fields, in three different industries, checked in three different months of 2026.
The site gave the same answer to all three. $147,524 a year. Not a similar number. The identical number, down to the last dollar. The middle band was identical too, $120,000 to $173,000 in every case.
Then I asked the same site a fourth question. What does a software engineer earn in the United States?
$147,524. Middle band $120,000 to $173,000.
Now you know what happened. The site has no data about precision agriculture software. When you ask it a question it cannot answer, it does not say so. It quietly hands you the national average for all software engineers, wearing the job title you typed.
A specialist figure that equals the general figure is not a specialist figure.
This matters more than it might seem. The whole reason you look up a niche career is to find out how it differs from the ordinary one. On that exact question the number is silent, and it is silent in a way that looks like an answer.
Check it before you trust any pay figure for a narrow field. Look up the general job title as well as the specific one. If the two agree closely, you have learned nothing about the specialism.
One caution about my own evidence. The general software engineer page is the only one of the four I could open and read directly. So treat this as a method to repeat, not a fact to accept from me. That is the whole point of this chapter.
Grade 5: vendor and search-engine content
Pages published by a company that sells the thing the page recommends.
Training providers describing skill shortages. Bootcamps publishing graduate salary claims. Staffing firms describing talent scarcity. Certification bodies measuring the value of their own certifications.
Treat these as advertising, because that is what they are. This book cites them only as examples of claims to distrust.
The five traps that break comparisons
Even good numbers mislead when you compare them wrongly. Five traps do most of the damage.
Trap 1: gross against net
Gross pay is before tax. Net pay is what reaches your bank account.
The gap between them varies enormously by country. Comparing a gross salary in one country with a net salary in another produces a meaningless answer.
Trap 2: base against total
Base salary is your fixed annual pay. Total compensation adds bonus and company shares.
In most jobs these are close. In some they are not remotely close. A quantitative researcher may file a base salary of $190,310 while actually earning three times that. Chapter 26 covers this.
Always ask which number you are looking at. Recruiters quote whichever is larger.
Trap 3: contract against employment
In Poland, a large share of developers work on B2B contracts rather than employment contracts. They invoice as a business. Roughly 38.5% of the market works this way.
A B2B rate looks much higher than an employment salary. It also carries no paid holiday, no sick pay, no notice period, and the worker pays their own social contributions. So the headline numbers are not comparable, and many articles compare them anyway.
Trap 4: employer burden
In Brazil, employment under the CLT labour code costs an employer roughly 1.6 to 1.8 times the salary, once mandatory contributions are counted.
This means a Brazilian employer paying the same total cost as an American one offers a much smaller salary. The difference is not stinginess. It is law.
Trap 5: exchange rate against purchasing power
$30,000 in Manila and $30,000 in Zurich are not the same money.
Purchasing power parity compares what money buys locally rather than what it converts to. On that measure, many salaries in lower-income countries are far better than they look, and some Western salaries are far worse.
Neither measure is wrong. Use nominal figures when comparing what you could send abroad, and purchasing power when comparing how you would live.
The grade is only half the question
Everything above ranks sources by who published it. That is one axis, and on its own it will mislead you.
The second axis is whether the figure answers your question. Call it fit.
A source can be perfect on the first axis and useless on the second. The United States government publishes exactly what its own digital service pays in Washington DC. That is grade 1, audited, and impossible to argue with. It is also one small programme in the most expensive city in the country, so as an answer to “what does government software pay?” it is worse than a mediocre average.
Now the uncomfortable direction. Suppose a grade 4 aggregator actually surveyed machine learning engineers. It may tell you more about machine learning pay than a grade 3 contracting rate for developers in general. Worse provenance, better fit.
A precise measurement of the wrong thing beats nothing, and loses to a rough measurement of the right thing.
This book got that wrong and had to be told. It printed a verified contract rate for senior developers as the pay figure for five different roles. Partly because the rate was grade 3 and the alternatives were grade 4. Grade 3 about the wrong people won over grade 4 about the right ones. Chapter 23 explains what replaced it.
So ask both questions, in this order.
1. Who measured it, and what do they sell? That is the grade.
2. Did they measure the people I am asking about? That is the fit. Check the population, the country, the seniority and the year.
A figure needs to pass both. Where this book has a strong source covering the wrong population, the profile marks it with a dagger and says so. The grade does not get to speak for the fit.
How this book applies the system
Every figure in Part VI carries a grade.
Some careers have no grade 3 pay data. This book says so plainly and lists them in Appendix B. It does not fill the space with grade 4 numbers.
Hold this book to that rule. Every number here should carry a source, a date and a grade. If one does not, that is a mistake. Appendix B tells you how to report it.
Chapter 6 applies all of this to the noisiest topic in the field.