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.
age
, race
, gender
and other characteristics affect pay and the extent of pay discrimination in the software development industryeducation
matter for how software engineers get paid? The answer: maybeengineering roles
, how much big Big Tech pays, the experience
advantage, and moreReact.js
pay better than AngularJS
? How do operating systems
affect developer earnings? How important is fluency with cloud infrastructure
?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 A
make X% more than developers of type B
, on averagetype A
make Y% more than developers of type B
, all else equalX 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 (age
, gender
, 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!