Jacob Kaplan-Moss

What is your labor worth? Tech compensation in 2021

Salaries in tech are going up, particularly among the biggest Bay Area tech companies. This rise in salaries reflects a hiring market that’s very friendly to job seekers. The vast majority of tech companies are actively hiring right now, and are struggling to fill roles.

So, it’s a great time to look for a new job or ask for a raise. But to do so, you need to know what to ask for – and many tech workers have no idea what their labor is worth. There’s a huge information asymmetry here: employers have access to detailed industry data on salaries (e.g. Radford), but employees don’t.

I want to share a method people can use to figure out what the “market rate” for their skills might be. I’m hoping this will help people evaluate their compensation or job offers. I’ve developed this method over the last six months, after offering on Twitter to help folks evaluate their compensation. I’ve answered about 100 emails about compensation, and so far nobody’s come back to tell me I was wildly off-base. This post is a distillation of what I do when I’m evaluating someone’s compensation. I’ll walk through the data and heuristics I use to figure out a roughly fair range. I’m hoping this’ll help more folks figure out what fair compensation for them would look like. If you still have questions about your compensation after reading this, please feel free to get in touch; I’ll help if I can.

Background and caveats

Content note: this piece discusses money, quite directly, with specific numbers and examples. Discussions about money can make quite a few people uncomfortable; if that’s you, you might want to skip this post.

Before I can get to the data and technique, I do need to give some background and a few caveats. If you just want to read the method you can skip down, but please come back for this important context.

Talking about compensation in the tech industry can be especially weird, particularly to those new to, or outside of, the industry. That’s because of a seeming contradiction: tech salaries are, objectively speaking, incredibly high. In the US, even entry-level tech salaries are three to four times median income. And yet we also say that many tech workers are “underpaid”. It is absolutely weird as heck to say that someone making a six-figure income is “underpaid” – but it’s often true. For many years, some of the biggest tech companies conspired to artificially reduce employee compensation. Less dramatically, salaries in the industry at large increase much faster than the typical yearly raises most employees see; when I’ve talked to colleagues who’ve changed jobs, nearly all of them see a 10% or greater compensation increase. This was the case pre-pandemic1, but has accelerated in 2021. And white men are consistently offered higher salaries than their equally-qualified peers from other demographic groups.

So when I say that someone is “underpaid”, what I’m saying is, “their employer could pay them more … but isn’t” or “their employer is getting a good deal: they’d pay more to replace them”. This is why it’s not a contradiction to say that someone making five times median income is “underpaid”. But it still makes these conversations uncomfortable: big sums of money are very difficult to talk about.

But please consider who benefits when we don’t talk directly and explicitly about compensation. It isn’t your average individual contributor; it’s management and leadership that benefit from their staff not knowing how much their peers make. Why do you think so many employers try to enact illegal and unethical policies against discussing wages? It’s because they know that only management benefits when workers don’t discuss their compensation.

So that’s my motivation here: to try to close this information gap. I want to help my peers in the industry gather accurate data about what a fair market rate for their labor is. I’m not going to make an argument about what anyone “should” do once they gather this information. There are people for whom maximizing income is important, so I hope those people will use this information to try to get paid as much as they can. Others highly value working for an organization that shares their ethics and are quite willing to sacrifice income for it. I don’t want to question the choices people make around their employment. I do want them to be making these choices with as much information as possible.

I know this has been a ton of preamble before getting to the data, and, sorry, but I do have two more caveats first:

  1. My knowledge is limited to for-profit US companies. The data I’m using, and the industry connections I’ve got, all are very heavily US-biased. I have an impression that tech salaries in the rest of the world are going up as well, though not to the extent they are here, but that’s a big assumption. If any international readers have information on how this applies or doesn’t in your country, I’d love to hear about it – get in touch!

  2. As I mentioned above, the tech industry continues to under-compensate women, people of color, and other minorities. This means using what you learn here to get paid fairly is going to be more difficult if you’re not white and male. This fucking sucks, and it would be disingenuous not to point it out. So once again, my goal here is to help people figure out a “market rate” for labor, not to make a particular argument about what to do with that information. I don’t give broad advice on how to negotiate, because that’s much more contextual, particularly for women and people of color.

How to figure out a fair market rate for tech labor

I use two sources of data when I’m figuring out a market compensation rate:

  1. Compensation data from levels.fyi. It has fairly accurate data, broken down by level. However, it’s heavily skewed towards Bay Area tech companies, particularly the largest ones.

  2. Location adjustments from Robert Half. Robert Half’s location adjustments seem very accurate, but I don’t find the salary data Robert Half provides to be accurate or useful, so I ignore the absolute numbers they provide.

So to figure out the market rate for a particular engineering role, I look up a compensation range on levels.fyi, and then apply locality adjustments from Robert Half. Finally, in 2021 I’m seeing offers coming in 10-25% above the midpoints suggested by this technique, so I tend to look towards the upper end of the range.

Salaries for fully-remote jobs are still all over the map. Some organizations are offering salaries that are adjusted to the locale where the company is based; others adjust based on where the employee lives. Increasingly, though, I’m seeing fully-remote companies start to pay something that looks roughly like the national average, i.e. the numbers I call “unadjusted”, regardless of where the employee lives. So when I’ve been looking at salaries for fully-remote roles, I’ve been using unadjusted salaries.

What’s considered “total compensation”?

The method above yields a number for “total compensation” (or “total comp”), which will include:

  • Base salary, i.e. your regular paycheck.
  • Some forms of bonuses. It’s a bit out of scope to get in the weeds on bonuses here, but briefly: some companies offer various forms of performance bonuses tied to company, team, and/or individual performance. If these bonuses are reliable – if you can usually expect to see them – they’re usually included in total compensation figures. Bonuses are less common at entry- and mid-career positions, and increasingly common in more senior roles.
  • Most importantly for understanding total comp are stock grants. At publicly traded tech companies, particularly those in the Bay Area, it’s really common for much of the compensation at more senior levels (Senior Engineer and above) to come in the form of stock or bonuses. It’s rare to see base salaries above about $300k; after that, the bulk of the compensation typically comes in stock. When I worked for Salesforce, for example, more than half of my total compensation came in the form of stock grants. (This is less true in other industries and locations. For example, at financial institutions on the East Coast of the US, it’s a lot more common to see a lot of compensation coming in the form of bonuses, and less, if any, in the form of stock grants.)

Several important things are not usually included in total compensation, including healthcare, time off, flexible schedules, work-from-home, paid travel, relocation or signing bonuses, equipment or office budgets, and so forth. These things can be really important when evaluating an offer – I’ve often accepted a lower salary in exchange for more time off – but won’t show up in the numbers this method calculates. So “total compensation” as calculated in this method is not a perfect “total value”, but it’s a pretty good apples-to-apples comparison between different compensation packages.

Valuing stock grants

Valuing stock grants is terrifically complex, particularly at companies that aren’t publicly traded. I don’t have the time or inclination to do the math, so I use massively simplistic heuristic:

At publicly-traded companies, I consider stock grants to be fairly reliable income, and I value them at roughly the present-day value. If I’m offered a job at Apple that includes 100 shares, I can look up the stock price ($143.50 as I write this) and figure what they’re worth today ($14,350). Stock grants usually start vesting after a year of employment, and so, sure, I can’t know what they’ll be worth next year. But short of some catastrophic event, I can be pretty sure they’ll be worth something, and probably something within, say, 25% of what they’re worth today. So I might discount stock grants at public companies a bit, but not much.

At private companies, I treat grants as essentially a lottery ticket, and value them at $0. I find private stock grants overwhelmingly complex, and incredibly far from actual money I can exchange for goods and services. They also come with some serious downsides, like needing to spend money to exercise options, and pay taxes, before you really know what they’re worth. So at private companies, unless there’s a very specific plan to go public soon, my rule is to treat options as a gamble and don’t consider them part of total compensation.

Again, this is wildly over-simplistic; people who actually understand stock grants are (rightfully) rolling their eyes right now. If you want to actually understand stock grants, and value them correctly, this introduction by Julia Evans is great. Also see tldroptions, which can help calculate a better approximate value for options than “$0”.

Example: an engineer with 5 years of experience

Here’s an example from my email: Robin2 emailed me to ask:

I’ve been a software engineer about 5 years. […] I’ve been with a startup about 3.5 years, have taken over Product Management, and I manage other engineers who work on customer-facing projects. We’re based in Chicago. Right now my comp is $100k in salary and call options that are about 1% of the total [company stock shares] […] I’m being way underpaid? Yeah?

Let’s see if we can answer Robin’s question given this technique:

At Robin’s level of experience, they’d be mid-career or senior-level at most larger companies – so that would be something like an L4-L5 at Google, ICT3-ICT4 at Apple, MTS-SMTS at Salesforce, etc.3 Bay Area salaries, according to levels.fyi, for these levels range from $190k to $350k. Robin’s experience puts them in the middle of this range most likely, but given the inflation in the Bay Area, they might be able to get somewhere towards the top of this range.

But how about if they want to stay in Chicago? According to Robert Half, Bay Area salaries are 42% above the national average, so that range translates to $130k-$250k unadjusted. Chicago salaries are 24% above the average, so the market rate for Robin’s level, in Chicago, is $165k-$305k. Given Robin’s description of their skill level, they’d likely be right around the middle of that range, so if Robin looks for other jobs they’re likely to see offers around $225k.

At Robin’s level, they should expect most of this compensation to come as salary. A typical offer for Robin would probably be something like a $175k base plus $50k in stock or possibly bonuses.

Anecdotally, this matches what I’m seeing: in the last few months, I’ve seen several offers for late-mid- to early-senior-level engineers in markets similar to Chicago coming in right around that $200k mark.

Bottom line: Robin’s company isn’t paying a fair market rate. Robin’s value on the open market is roughly double their current compensation. Note that I’m considering their options effectively worthless, as discussed above. Robin might not agree, and so their math might be different from mine.

Example #2: a staff+ engineer who doesn’t want to work for FAANG

Here’s another example: Chris4 writes:

I’m a Staff+5 engineer considering a move from Akron to the Bay Area, and I’m wondering if you can share any data about salaries at non-FAANG companies. I’m having a hard time getting data for Staff+ roles outside of FAANG generally, and I don’t want to work for any of those companies.

To answer Chris’s question, we’ll skip the “non-FAANG” part until later. I find it easier to start with those companies (because that’s where we have the best data) and work backward. Looking at levels.fyi, Staff-level roles (e.g. L6 at Google, ICT5 at Apple, etc) see compensation in the $400k-$600k range. Principal Adjusting to Chris’s current location (Bay Area: +42%; Akron: -11%), they might expect to make a bit more than half that ($250k-$375k) staying in Akron.

As I mentioned above, at Chris’s level, the bulk of their compensation would probably be in stock. Chris should probably expect their base pay to be about half of their total comp, with the rest coming as stock or bonuses. A hypothetical $600k offer from Google would likely be something like a $250k base, $50k in some form of guaranteed bonuses, and $300k in stock grants.

But if Chris is looking for roles outside FAANG, and/or outside the Bay Area, they should expect those stock grants to be much smaller, or even non-existent. A small startup is unlikely to give the same stock grants as a big one, and those are likely to be the kind of complex instruments that I treat as a gamble, not guaranteed salary. There are a handful of Bay Area companies – Stripe, Airbnb, Slack, etc. – that might come close to matching the comp offered by a FAANG, but most won’t. I’d expect a typical offer from a small company in the Bay Area to be $300k in total compensation, most or all of which is simply base pay.

So, bottom line, if Chris moves to the Bay Area, they could probably pull $300k fairly easily, and more if they find a non-FAANG-but-still-public employer.

What should Robin, Chris, or you do with this information?

So Robin is being underpaid, and Chris can expect to make $300k at a non-FAANG company, but nearly double that if they’re willing to compromise on that “no-FAANG” stance. These are relatively objective facts; what they do with this information is another question. Maybe Robin values those stock grants much higher than I do; if they expect their company to be sold for millions of dollars, 1% of that sale is huge. Maybe they like their jobs, or maybe the lower numbers feel like sufficient income for their financial situations. Maybe Chris wants to stay in Akron. If they’re willing to sacrifice maximizing earnings for a workplace they love, they might not choose to reach for their maximum labor value. I think that’s fine: I’m not arguing that everyone needs to maximize their income. I do, however, think it’s important that Robin clearly understand that they’re being underpaid and that Chris knows what they’re leaving on the table by staying in Ohio and/or avoiding FAANG. That way, they can make informed decisions about the right moves for them.

I hope you’ll be able to use this information to come to similarly-informed positions!

If you’re still stuck and want some feedback on compensation, email me: jacob at <this domain>.

Thanks to Sumana Harihareswara for her help with this piece. As my co-working partner, she’s given me feedback on most of what I’ve written in 2021, but she particularly helped me with this piece. Talking with her helped me get my thoughts in order before writing it, and her feedback helped me substantially improve the first draft. Thanks, Sumana!

Revision History

This article was originally published October 14, 2021, and has been updated since:

  • October 15, 2021: several updates based on feedback from Twitter and Hacker News:
    • Most notably, fixed the compensation calculations, which were incorrect.
    • Updated stock grants language a bit to clarify, and added a link to tldroptions.io.
    • Fixed “salary” vs “compensation” in a few places.

  1. indeed, it’s enough of a trend that I’m told that for nearly a decade a running joke among Google employees has been that the best way to get a raise at Google is to apply for a job at Facebook. ↩︎

  2. name changed to protect anonymity. ↩︎

  3. In case you haven’t encountered them before, these codes – L5, ICT4, SMTS – are all the internal job codes that companies use to calibrate job levels. A code like “L5” translates to a range of seniority and responsibility, and, most importantly for our purposes, each level has an associated compensation range. ↩︎

  4. another pseudonym ↩︎

  5. “Staff Engineer” is a common job title for the role above Senior Software Engineer, so “Staff+” generally refers to this level or above (e.g. Principal Engineer, Architect, etc.). So Chris is talking about very senior individual contributor roles that generally require about 10 or more years of experience. ↩︎