Engineers are the basic economic unit of modern software development.
The software production function depends critically on developer productivity and compensation. No developers, no software.
Yes “no code” is a thing — but even the no code systems themselves are developer-built. You can’t get around it.
And yet software engineering pay remains poorly understood. Different employers pay differently for the same engineering talent. Engineers with similar resumes are paid varying salaries by the same employer.
This guide explains why.
Developer compensation is a critical piece of technology's economic impact. Awareness of this data makes you a better informed citizen of the industry.
I am dedicated to enhancing the careers of software developers and the functioning of the organizations that employ them. Compiling this report every year is one way I do this.
If you’re a…
... then this guide is for you.
genderand other characteristics affect pay and the extent of pay discrimination in the software development industry
educationmatter for how software engineers get paid? The answer: maybe
engineering roles, how much big Big Tech pays, the
experienceadvantage, and more
React.jspay better than
AngularJS? How do
operating systemsaffect developer earnings? How important is fluency with
As with last year’s analysis, the data in this report is based on a subset of Stack Overflow’s annual developer survey. They have run this survey for a while now and each year graciously open source the responses in an easy work with CSV file.
The survey is global, but here I focus on 10,355 U.S. based individuals employed as software engineers on either a part-time, full-time, or independent basis.
The data is entirely self-reported, so I implicitly assume respondents make accurate claims as to their income, personal characteristics, qualifications, etc. To the extent there are obviously false responses, I have attempted to remove them.
I used Python for the analysis, and if you’d like to reproduce the results, I’ll be releasing the code I wrote after publishing the full results on my GitHub.
Two possible statements comparing the pay of different groups of software developers:
type Amake X% more than developers of
type B, on average
type Amake Y% more than developers of
type B, all else equal
X and Y are rarely the same number. X compares the average earnings of the group A and B. Y compares hypothetical As and Bs who are similar in all dimensions except one, allowing us to attribute the difference to that single trait.
Most analyses of pay gaps stop at statement #1 and call it a day. This is lazy and misleading.
Though we’d love to know both X and Y, it is Y that corresponds better to our intuitive meaning of “pay gaps” — the difference between the earnings of two groups who are equivalent except for a single trait of interest (
years of experience, etc.).
Identifying Y requires additional data on characteristics that may correlate with earnings.
Using the above methodology, I’ll use the following terms in this report:
Note — the unexplained gap is exactly that, unexplained. We cannot say for certain that the entire unexplained gap between, say, white and black software engineers is due to discrimination on race, for example. If we use different controls, the “unexplained” gap would change. At best, the unexplained gap provides an upper bound estimate of the gap attributable to that trait.
How do we know what to control for? The Stack Overflow survey upon which this analysis is based provides a rich set of data on each developer based on their answers to various questions. It’s too complicated to cover here, but I do principled covariate selection using Double Lasso per (Chernozhukov, Hansen, Urminsky 2016) for find the best set of controls for each gap I examine.
All references to statistical significance are at the p < 0.05 level. Confidence intervals are upward skewed because the original regressions used log-transformed income as the dependent variable.
This year’s new and improved analysis comes with the following enhancements:
I am also releasing a developer earnings calculator (coming soon). Answer a few questions, and the calculator will output a pay estimate and confidence range based on the same data in this analysis.
Check out last year’s report to see how the numbers changed year-over-year.
I do this analysis every year because I think it’s vital to understand how developers, the basic economic unit of software development, are compensated and rewarded for their efforts.
By the end of this analysis, you will:
I hope this 2020 guide to software engineering pay is valuable to you. The many hours spent conducting and assembling this analysis were certainly valuable to me!