Earlier this month, I put out a request on Twitter for anyone working in software development to help establish a baseline for reasonably-expected salaries. I'm hugely appreciative of everyone who participated. As promised, I want to share some high level results.
A total of 60 different people from across the world completed the survey. I saw a mix of corporate executives, entry-level engineers, and freelancers with anywhere from 3 to 20 years of experience in the field.
Unfortunately, there weren't enough responses in each potential analysis facet (i.e. years of experience, size of company, average project size) to drill down indefinitely. There were plenty of responses for various levels of employment, though. Enough to present an interesting picture of the market and initiate some discussions around developer compensation.
After removing outliers, we see average salaries being in the neighborhood of:
- Senior level: $91k
- Mid level: $75k
- Junior level: $45k
Each of these averages was with a standard deviation of $15-20k. This means they're fairly reliable, but not incredibly consistent.
What This Means
At a very basic level, the numbers above give us a sense of what developers can earn at various stages of their career. It also demonstrates there's little to no consistency in pay between companies in our industry.
The senior level salary (again, after removing outliers) ranged from $52-$134k per year. The mid-level salary range was $46-$97k per year. Junior level salary ranged from $19-$69k per year.
To the junior level developers earning more than their senior level counterparts I say "good job."
To the senior level developers earning less than their junior level counterparts, I raise an eyebrow and sincerely urge you ask for a raise at your next review. If you're truly in a senior level position with all of the responsibilities that entails there's no reason you should be earning just more than half the average salary for your role.
Understanding the landscape around you is the only way you can ever fully recognize where you stand on that landscape. Are you more or less experienced than others in your position? Are you paid higher or lower than others in your position? Are you paid higher or lower than others with your experience?
These are the three dimensions we track: experience, position, and pay. Understanding how experienced you are is easy. Knowing your position is should be easy - if in doubt, look at your job description.[ref]If there isn't a job description for your position, you should both ask for one and write on at the same time. Not only will this document what your position does, it will help iron out any discrepancies between your and your boss' description of your position.[/ref] Salary, though, is a bit harder to understand.
Obviously, you know what you're paid. Without knowing what others around you make, though, there's no way to know if you're paid appropriately for your role. You could be underpaid - you could be overpaid. Both situations could be potentially damaging to your career overall.
Moving forward, we should all keep track of our salaries and position responsibilities. Where possible,[ref]Whether they claim it is or not, it's actually illegal for employers to prevent you from sharing salary information with others in your company. There might, however, be stipulations in your contract or employment agreement regarding sharing such information outside of the company. I won't encourage you to breach your contract or employment agreement.[/ref] we should be open with one another so that, together, we can establish a baseline of what each of us should expect as compensation for similar positions.