Comparing Software Engineer Salaries Across Cities
2020-05-03Limitations
This analysis is not perfect as it does not account for how the hiring market differs for different levels of seniority. It also calculates cost of living based on the cost of living downtown so it ignores that one could save money by living further out. Furthermore, it does not account for culture, equity compensation, bonuses, the availability of jobs within the city itself, and the difficulty of immigration. The absence of equity compensation can be especially galling as it can make up a significant portion of one's total compensation. Unfortunately, finding data on that that covers a wide range of companies rather than the usual FAANG crop can be difficult so that had to be left out of the analysis. It also does not account for the differences in personal spending habits. For example, one's personal spending habits might make Montreal (a normally cheap city) an expensive one while making Toronto (a normally expensive city) a cheap one.
Cities Chosen
To determine the list of cities to look at, I created an initial list of cities from hearsay, the 2019 Scoring Tech Talent in North America report, as well as The European Talent Landscape report. I then filtered the list by cities that I would be interested in living within in order to obtain the list you see before you:
- Montreal
- Toronto
- Ottawa
- Edmonton
- Calgary
- Kitchener
- Vancouver
- Seattle
- San Francisco
- New York City
- Boston
- Portland
- Austin
- Washington DC
- Denver
- Chicago
- Zurich
- London
- Paris
- Amsterdam
- Stockholm
- Barcelona
- Copenhagen
- Dublin
- Berlin
Average Base Salaries
To start my analysis, I went through Glassdoor and obtained the average base salary for "Software Engineer" in each city. This is not a perfect means of capturing the average salary of software developers as it is possible that folks are posting their salaries under titles such as Back-end Developer or something else but doing it this way offers a reasonable proxy. These salaries are in USD and as mentioned earlier, they do not account for equity, taxes, and bonuses. Again, as stated earlier, while equity and bonuses are often a substantial part of compensation, it is difficult to find this data across a wide range of jurisdictions and companies so I was forced to ignore it for the purposes of this analysis. With regard to the reasoning behind choosing average salary over median salary, I chose the average salary because that is what Glassdoor gives. I wasn't particularly picky about my data for my very superficial analysis :).
From the chart above, we see that the usual hearsay about software developer salaries seem to be validated as American salaries tend to be higher than Canadian and European salaries with San Francisco exceeding everyone else. The only surprising result (at least to me) from this chart would be that the average salary in Zurich seems to be comparable to San Francisco.
Cost of Living
When considering cost of living, nothing surprising pops out. San Francisco and New York City top the list with other well-known cities such as Toronto, Vancouver, and Seattle trailing them. However, considering the absolute cost of living isn't particularly useful as the income one makes within that city might make living there worth the cost. Hence, it is useful to take a look at the percentage of one's salary that cost of living can take up. With regard to the methodology here, the rent for a 1 bedroom apartment and the average cost of living for 1 person (excluding rent) were taken from Numbeo and summed. The resulting sum was then converted to USD to get the numbers before you.
From these percentages, we can see that Toronto and Vancouver have a cost of living that is surprisingly similar to San Francisco and New York City once we adjust for incomes which explains much of the dissatisfaction surrounding Canadian tech salaries that I personally have seen.
Taxes
From taking a look at the average tax rates across all of the jurisdictions for the specific salaries mentioned earlier, we obtain the surprising result that tax rates tend to be fairly even across all of them for the average software engineer with the notable outliers being Amsterdam and Copenhagen. To further explain the calculation, what I did was take the average salary for each city and plug it into Neuvoo for the relevant jurisdiction (ex. Toronto's salary from the previous section is taxed at an estimate based on Ontario's tax laws that accounts for federal and provincial taxes).
Net Income
The cornerstone of this analysis is net incomes. From deducting taxes and cost of living, we can see how much money in USD the average software developer is likely to have. From looking at the absolute values, we see that Zurich and Seattle are clearly the top performers in this analysis. When we look at percentages, we see that Kitchener, Austin, and Berlin are top performers. I suspect for most folks, the absolute values are significantly more useful than the percentages but I find the percentages interesting nonetheless.