Who actually makes $1M at FAANG — and why that number is usually equity, not salary
Greg Nakamura
September 18, 2026
I have sat across from candidates who said “I want $1M like the blog posts.” I have also sat with friends who did hit a seven-figure year on paper and still talked like people with a job, because most of that number was stock that had not been sold, or had been sold in a window that will not repeat. I have not been a L8 at Google. I have been adjacent: recruiting, leveling conversations, offer reviews, and a few years of friends who would show me the spreadsheet if I promised not to be weird about it. The pattern is stable enough to write down.
Salary is not how that number happens. Equity is. And equity is a story about level, location, refreshers, and a stock price you do not control. Here is who actually sees $1M in a year, what they do that the listings hide, and why I would not plan a life on the headline.
The number is a mix, and the mix is the point
A FAANG-shaped year is usually: base + bonus + the value of stock that vested that year (and sometimes a sign-on that is also stock). Levels.fyi and the offer blogs made this visible. They also made it easy to confuse “first-year total compensation at a peak price” with “salary.” I have never seen a software IC base of $1M at those companies as a normal band. I have seen bases in the mid-six figures at the top of the IC ladder in expensive locations, plus a bonus, plus a vest that dominated the rest.
When the stock rips, a senior-enough grant from two years ago can look like a lottery ticket. When the stock is flat or down, the same grant looks like a job. The people in the $1M screenshots are often in a good window, at a high level, in a high-cost location, sometimes with a refresh that assumed the last window would continue. I tell people to ask: what is the run-rate vest at today’s price, after tax, if the price does not go up? That number is the one you can almost plan on. The rest is a call option the company wrote on your time.

Who is actually in that band
Staff-plus ICs and the managers who sit next to them, in the US bay / NYC / Seattle-shaped markets, at a company whose stock is doing well, with a grant that is not a junior snack. That is the boring answer. “Programmer” in the viral sense is doing a disservice. The listing might say Software Engineer. The work is: owning a surface that can move a metric the company already cares about, writing the doc that kills a bad bet, and surviving a promo process that is a second job.
I have watched L5 / E5 / SDE II people get excellent money and not $1M. I have watched L6 / E6 / Senior plus a hot refresh get close in a good year. I have watched L7 / Staff and L8 / Principal (the names differ) get there more often when the equity is working. Staff-plus at a company whose stock is dead can look like a well-paid senior job. The logo is not the number. The vest and the price are the number.
Specialists can get there without a famous IC title: a security person after a scare, a researcher whose paper became a product, a TLM who still writes the design. The listing still says engineer. The work is leverage. Leverage is what the listings hide. They show a stack. They do not show “you will be in the room where the roadmap loses a bet.”
Sales and certain biz-ops roles can out-earn ICs in a good year with commission. That is a different $1M. I am talking about the software-path number people mean when they say FAANG programmer. Do not mix them. The skills are not a bootcamp.
What those people do that a job description will not say
They absorb ambiguity that would become four teams if they did not. They say no with a written alternative. They have a relationship with a partner org that can block them — legal, privacy, SRE, a GM — and they do not only communicate through tickets. They have been through a launch that failed and they still have the pager.
They write. The promo packet is a writing job. The design review is a writing job. I have seen better engineers stall because they would not write. I have seen weaker-but-clearer engineers go further. That is ugly and it is true. If you want the band, practice the paragraph, not only the system design interview.
They stay long enough for a vest to matter and they do not treat every year as a reset. Jumping every 18 months can raise base. It can also reset the grant just as the last one was about to get fat. I have seen both strategies work. I have seen the jumper miss the year the stayers remember. I do not moralize. I do math with them.
They are often in the US for tax and band reasons. Remote-from-a-cheap-city offers exist and they are not the same spreadsheet. I say this without contempt for other countries. The viral $1M is usually a US tax-and-band story. Convert it before you envy it.

Taxes, refreshers, and the lifestyle leak
A $1M year is not a $1M checking account. Federal, state, AMT stories, withholding on vest that does not match what you owe. I am not your accountant. I am the person who has watched friends feel poorer in April than they felt in October. If you cannot pay a CPA who has seen RSUs, you are not ready to plan around the number.
Refreshers are the hidden plot. The initial grant is a cliff of attention. Years two through four depend on whether the company still thinks you are a bet. A down year plus a weak refresh is how a “$900k offer” becomes a $350k job. I ask to see the refresh history of the team, not only the offer PDF. Sometimes they cannot share. The inability is data.
Lifestyle leaks toward the number. Housing near the office, childcare, the feeling that you should not leave because next year’s vest is the real paycheck. That is a golden cage even when the cage is nice. I have left money on the table to own a smaller surface. I have also told people to stay two more years because the math was obvious. Both can be adult.
The listing versus the loop
Job posts say “build scalable systems” and list Kubernetes. The loop that pays is: can you change a number the VP already watches, without lighting the pager on fire, and can you tell the story in a packet? I have coached people through that loop who were weaker at Kubernetes than the listing implied and stronger at the packet. I have coached the inverse into a stall. Study the loop of the company you want, not a generic FAANG myth. Google is not Meta is not Amazon. The vest math rhymes. The politics do not.
I also tell people to count hours honestly. Some of those $1M years are 50-hour years at a high level. Some are 70. The blog will not say which. Ask the team, not the recruiter. If nobody will say, assume the worse one until you see a calendar.
What I tell people who want that path
Get to a level where you own a bet, not a ticket. That is closer to the senior line I actually use than it is to leetcode volume. Practice writing. Pick location and company with the vest in mind, not the cafeteria. Read the grant like a contract, because it is one.
Do not plan a family budget on a peak-year screenshot. Plan on base plus a conservative vest. Treat upside as upside. If you cannot be happy on the conservative number, the job will own you. I have watched that ownership look like success on LinkedIn.
If you are not in that band, you are not a failed programmer. Most excellent programmers I know are not in that band. They are in product companies, governments, consultancies, and small teams. The $1M story is a specific machine: high level, high-priced equity, a good window. It is real for a few roles. It is not a law of talent. I would rather you want the work that produces leverage than want the screenshot. The screenshot is a lagging indicator of a stock and a level. The work is the leading one — and even the work does not guarantee the window. I have seen the work without the window. I have seen the window without a life I wanted. I would rather you pick on purpose than chase a screenshot you cannot cash.