There has been a lot of talk about the high salaries paid to engineers in Silicon Valley and the San Francisco Bay Area. Why not take a quick look at the amount of money being offered to prospective employees?
Unusually for job sites, AngelList requires posting compensation information for jobs, with a range of offered salary and equity for the position. (Note: due to their cash-strapped nature, early-stage startups may underpay candidates relative to market/experience).
Using the AngelList API, I scraped all publicly-available full-time jobs located in the San Francisco Bay Area. I retrieved 5,941 jobs total, with half of those for Engineer/Developer positions.
Let’s plot Salary vs. Equity to get a 2D range of the different types compensation (by inferring a coordinate by taking the midpoint of each offered range; e.g. for an $80k—$125k salary offer, we plot Y=$102.5k). We can also control on Engineers vs. Non-Engineers since those salaries will likely be different in distribution.
Putting it all together:
This is the same chart as the interactive one at the beginning of the article; if you haven’t, navigate around that chart, particularly looking at the changes in job titles as you move upward with increasing salary/equity for a given facet.
A few quick observations:
- The black horizontal lines represent the median salary offered for each facet. For Engineers, the median salary offered is $115k, and for Non-Engineers, the median salary offered is $90k. (as mentioned before, early-stage startups pay lower and are more prominent on AngelList, so these results may be affected by selection bias).
- Median equity, on the other hand, is negligible and not worth plotting (0.10% for Engineers, 0.02% for Non-Engineers).
- Speaking of equity, startups do not give much, with the distribution topping out at about 1.0% in both cases. (Engineers appear to get a little more equity, though).
- However, for serious roles, 7.5% equity (from offering 0%—15% or 5%—10%) is a figure that appears relatively often.
As always, the code used to create the visualizations is available in this Jupyter notebook, and the code used to scrape the AngelList data is open-sourced on GitHub. This post is my first test of using plot.ly to automatically convert ggplot2 plots into fully-interactive D3.js charts. The results were better than I expected (aside from the font-size issues specific to faceting), so expect to see more interactive charts in my future posts!
If you do find any other interesting trends in the chart and write about it, it would be greatly appreciated if proper attribution is given back to this post and/or myself. Thanks!
I am currently looking for a job in data analysis/software engineering in San Francisco. If you liked this post and have a lead, feel free to shoot me an email.
Since I currently do not have a full-time salary to subsidize my machine learning/deep learning/software/hardware needs for these blog posts, I have set up a Patreon, and any monetary contributions to the Patreon are appreciated and will be put to good creative use.