[Disclosure: I work at Google]

I've asked decision makers about this (or similar enough) before, and the answer was that they considered compensation to be a bit of a competitive advantage. I can see two reasons for this, first it being secret makes it harder for employees to effectively negotiate. Second, it being secret makes it more difficult to accuse the companies of doing something akin to wage fixing, which some of these have done before, so being careful about the appearance of impropriety makes some amount of sense.

Personally though, I don't find either of those particularly compelling. Especially given that they're de-facto public anyhow. There's two reliable ways to get salary information even if you don't trust self reported data:

1. h1b data, which shows only base salary and is hard to tease good data out of, because there isn't differentiation by role usually. Google for example shows "software engineer" or "software engineer manager" salaries that range from like 150K to like 300K (again, base salary), because they can cover like L4, L5, L6, L7, and even L8 (director) and above under essentially that one title. It's not super useful.

2. The careers pages for remote jobs in the US, or jobs in Colorado. Thanks to a law that took effect this year, Colorado requires companies to post their salaries (again, just salaries). Companies in California are also required to give you a salary range if you ask during an interview process. This doesn't give you stock or bonus numbers, but you can use these to verify that the salaries people talk about are legitimate.

Here's some examples, all taken from the careers page for the companies (careers.google.com, https://www.facebook.com/careers/jobs/, etc.). In each I've included the important part of the role description and what I think it maps to in the internal levelling scheme (see https://www.levels.fyi/ to compare these).

Google:

- Minimum salary of $132,000 (SWE III, L4)
- Minimum salary of $183,000 ("Technical Lead", probably L6+)
- $178,000 (Staff, L6)
- $209,000 (Staff, L6)
- $137,000 (Senior, L5)
- $125,000 (SWE III, L4)
- $120,000 (Senior Staff, L7, technically true but probably a data entry mistake somewhere)
- $183,000 (Senior Staff, L7)
- $252,000 (Something Director+, L8+)

Notably these are lower than salaries in SF or Seattle. Unfortunately, all the VP level jobs were in office and not in Colorado. Note again that this is before bonus (which starts at 15%+~5% based on performance, but for the higher level roles can reach like 30%+10% based on performance), and stock which starts at maybe 30-50% of your salary, but by Senior or Staff can be larger than your salary. I think some of these are also on the low side, 137,000 is below the bottom of the band for L5, my hunch here is some combination of data entry mistakes and willingness to accept L-1 for a role ("we'd prefer Staff but will take a Senior with some additional experience") so the salary requirements reflect that.

Facebook:

- $111,000 ("Internal Software Engineer", E3?)
- $172,000 ("Software Engineer", E5?)
- $150,000 ("Software Engineer AI", E4?)
- $143,000 ("Software Engineering Manager", ??? this one confuses me)
- $206,000 ("Software Engineer iOS", E6/7?)
- $239,000 ("Director Data Engineering", E8+)

Much like above, I believe FB pays higher in SF than Colorado and this doesn't include bonus or stock, which are similar to Google's structure.

Microsoft:

- $115,700 to USD $153,900 (Software Engineer 2, 61)
- $138,200 to USD $183,933 (Senior SWE, 63)
- $148,068-$169,233 (Senior Mech Engineer, 63?)
- $160,038-$183,933 (Senior Hardware Eng, 63?)
- $147,500 to $224,500 (Principal Software Engineering Lead, 64-66?)
- 153,100 to 200,700 (Principal SWE, 65)

MS has a bonus structure that's a bit worse than Google and FB, and pays a lot less stock.

Amazon had one role, a Senior SDM role, with range $122,300-160,000. 160K is the max base salary Amazon pays outside of SF. They don't do bonuses except your first year, but as far as I know by the time you're higher level, their stock awards keep pace with Google and Facebook.

I also checked Lyft and Uber, which didn't appear to have roles that were Remote or in Colorado, and Stripe, Netflix, and Dropbox whose remote roles didn't list salaries. Someone at stripe should probably fix that, I expect they're technically violating the law right now. Salesforce included numbers which were oddly low. Oracle requires that you email them, which I think may also be a violation of the law, but its unclear.

Anyway, bit of a tangent at the end there, but I hope that helps to show that these aren't made up (and are sometimes publicized).