negotiating-major-swe-offers
A post about negotiating new grad software engineering offers in the United States. Advice will be most helpful for (1) new grad students (2) in the United States (3) who are targeting major computer science companies that (4) they did their last internship with, (5) particularly if that company is Microsoft (Redmond HQ -- the figures discussed here will vary if the location is different.)
Some advice, however, is applicable to any/all new grad SWE positions in the U.S.
Note also that, at Microsoft, the following advice applies ONLY to "core engineering" roles. This includes SWE roles, PM roles, and hardware engineering roles (and maybe something else that I'm forgetting? Send a PR.) It DOES NOT include offers in finance, marketing, sales, recruiting, etc etc etc.
See Also
Microsoft-specific notes and context
- Things that typically are negotiable at Microsoft: starting bonus and stock grants.
- Things that typically aren’t negotiable at Microsoft: YMMV, but typically anything else.
- Gray area: base salary. Starting base salary at MS is determined (in >99.9999% of cases) strictly based on your starting level. New grad software engineers most commonly start at “Level 59”: the base for that is 109k as of 2018. Sometimes, a new grad software engineer will start at “Level 60”, which is basically the equivalent of having 6 months to 1 year of experience (and as a result, some masters students start at this level). This depends on performance and/or history with the company, among other less predictive things. The base salary for L60 is 117k.
- What you can do: ask for L60 instead of L59 if you want a higher base salary. This bumps you from 109 to 117.
- What you can’t do: “I want [some arbitrary negotiated base salary] instead of 109k at L59” (or instead of 117k at L60). Allegedly this has worked for like N=2 students out of tens of thousands, but my point is that the chances of it happening are like 99.9999% against you. So it isn't worth asking for, IMO.
What is and isn't leverage for negotiating
Some folks may disagree, but based on my experience, I think these are things that do and don’t qualify as leverage for negotiating:
- Is: Competing offers
- Is: Competing interviews
- Is: Skills relevant to your team/product space, and how badly (or not) your team needs those skills
- Is: Experience within your team/product space, or prior experience in the same role at the same company
- Isn’t: Personal factors like having a lot of student loans. 1) the finance guys signing off on offers seriously do not care and 2) nearly everyone else has a bunch of student loans, too, so this doesn’t distinguish you at all.
- Isn’t: Cost of living. That’s already accounted for in the offer and isn’t a reason to adjust the offer. Anyone else getting an offer for this position is in the same boat, so again, it doesn’t distinguish you at all.
- Isn’t: At a company like Microsoft, at least (i.e. not investment banking, where it could and arguably does matter, for better or worse), school name. Nobody cares. There are a billion MS interns from Harvard. It doesn’t distinguish you. There are vague rumors that sometimes folks from certain schools are more likely to start at a higher initial offer, but personally I don’t see the data to support that. Even if it was true, I think that’s a correlation thing: students at an elite school are likely to be elite performers. It’s not the school name getting more money, it’s performance/skills/experience.
- Isn’t: Personal factors like connections (obviously, hopefully), how much your team members like you, etc. You may be more likely to get a higher initial offer if your manager likes you (for business reasons), but many won’t offer anything special out of the gate because ultimately it is a business decision. If they can get you for cheaper, they’re likely to do that. Ultimately, how much you like the company and/or how much specific people like you is not mega-relevant to negotiation. It’s mostly about how much other companies like you.
Common mistakes: Introducing personal reasons, feelings, family circumstances, etc into negotiation. You’re negotiating for an offer “commensurate with your skills and experience”. Thus, personal circumstances are very unlikely to be considered. Don’t blame me, I’m just the messenger.
Overall approach strategies: dos and don'ts
- Things I did want to do: express excitement about the job opportunity; let my recruiter know I was considering other options; appear competitive
- Things I didn’t want to do: appear too eager; appear greedy or aimless (haggling over small numbers, applying everywhere); appear combative
I think 90% of negotiation is in the set-up to actual negotiation step (an email or phone call where you ask for specific numbers). This set-up phase seemed super important to get right--and was also where I saw people making the most mistakes.
These were the things I did:
At the beginning of your last internship...
At in-person recruiter meetings (start of internship, mid-internship): Expressed happiness with the position and the idea of going full time. On the flip side, I avoided using language like “I’m excited to go full time!” or “I would love to go full-time here!” because 1) it sounds presumptuous that you’ll get an offer in the first place, and 2) I thought it showed too many emotional cards. Instead, I opted for language like “I’d be really excited to consider a Microsoft offer for full-time.” This shows that you’re emotionally invested in having the opportunity to consider the company--good--without showing any emotional need to end up at the company (bad--for negotiation, at least, which hinges on a company’s fear that you will walk: NOT how much you do or don’t love the company).
Common mistakes: being too transparent about how desperately you want to work for the company. Just like additional scholarship opportunities tend to dry up once students are already enrolled at a school, your offer is unlikely to budge if they know you’ll accept no matter what.
In the middle of your last internship...
At in-person recruiter meetings (start of internship, mid-internship): Laid the groundwork for my recruiter to expect competing offers. It progressed from “I have a few interview offers” at the first meeting to “I’m actively interviewing” by the mid-internship one, to “I have interviews with X companies and Y timelines” by the meeting where my initial offer was rolled out. This is 1) a signal that there’s a non-zero chance they could lose me to another offer and 2) a signal of competence. The best candidates are basically expected to be interviewing multiple places. Not talking about your other options can give the impression that you don’t know how this dance is done (or that you can’t pass tech interviews). Neither impression is likely to lead to more money.
Common mistakes: not mentioning interviews, even early stage interviews. Not mentioning other companies’ networking events that you’re going to, etc.
Throughout your last internship...
At the in-person recruiter meetings (both start of internship and mid-internship): Wrapped potentially awkward conversations in nicer-packaged language. For instance, rather than saying, “I’m going to Google’s Insider Night this Friday, just thought you should know,” you can say something like, “Oh, yeah, I’m adjusting to Seattle really well! I went to the Insider Night at Google Kirkland the other day and met so many great people who live nearby!” This is 1) giving them critical business information while 2) making you sound like less of a shrewd asshole. Both important.
Common mistakes: acting like you’re trying to fight your recruiter. Piling on every single bit of competitor information with no finesse at all. In my experience, people either swing way too nice or way too rude when it comes to negotiating. The best approach, as with most things in business and/or life, lies somewhere in the middle.
Just before the offer roll-out meeting...
Before the final recruiter meeting where an initial offer is rolled out: Pushed to get my project fully done, published a blog post on my team’s website for visibility, closed out all my referrals. This allowed me to 1) point to very direct contributions both to the product and to the company and 2) helped me get people in my corner. At many companies, including Microsoft, your recruiter advocates to a hiring manager for more money. By completing my project, I pleased my hiring manager, and by turning in all my referrals ahead of time, I had several recruiters in my corner, too (and visibility to the people who run the intern program). I got the impression that both things really helped negotiating, because these actions made “must hire” status a lot easier for my recruiter to back-up.
Common mistakes: not finishing your project; not pushing for visibility with your hiring manager/the entire team (you should demo your project, give a presentation, write a blog, etc -- anything that does get you and your contributions visibility); not valuing the recruiter role in advocacy enough (and not giving them enough data to point at as reasons to give you more money).
At the final roll-out meeting...
At the in-person recruiter meeting (final meeting to roll out initial offer): Refused to react beyond what I said above: “I’ve had a great experience here and I really look forward to considering this offer.” Recruiters will definitely try to gauge your emotional reaction to offers; there’s even internal trainings on this at many competitive companies. If you act too ecstatic--keep in mind they’re trying to hype you up--you lose a lot of leverage to ask for more, because they know they probably don’t need to up the offer to get you to sign.
Common mistakes: losing your cool. Be grateful; be courteous; reinforce that you had a good experience and that you will definitely consider the company. I.e., you are winnable--with the right offer. On the flip-side, being too stoic is also a mistake, because it can signal that you’re not winnable. Some recruiters will be less likely to really advocate to hiring managers/people who control budget for you if they think there’s actually nothing they can offer to get you to sign. So: give enough of an emotional reaction to signal that there’s a chance of signing, without giving the impression that you’d sign no matter what.
At the in-person recruiter meeting (final meeting to roll out initial offer): Refused to name hard numbers for a counteroffer. Said instead that I would need to step back, take some time to consult with friends and family (see also Qureshi’s blog on negotiating/making other people stakeholders). Your mileage will vary, but my specific recruiter pressed me for specific numbers that I would sign for as we were sitting there.
Microsoft rumor-mill and general negotiating philosophy
To segue into general information (some of it will be Microsoft-specifics-heavy, sorry), the informed-intern-rumor-mill says there are three tiers of offers: a default offer given to almost everyone to start (closes >50% of offers because people are happy with it/don’t negotiate), a higher offer with defaults that’re given to candidates with competing offers/who negotiate/who are “must hires” for whatever reason (I would guess it closes the vast majority of offers that T1 did not succeed in closing), and a scaling offer off of that middle tier that ramps up to maximum values (closes probably less than 2%--just a wild guess--of offers).
Going into my final meeting, I really expected the first tier offer (the lowest one), because I knew from other folks who also had my recruiter that that’s what he rolled for them.
For reference, the standard offer for Redmond new grad SWEs at the time was: 109k base, 70k stock, 20-25k signing (+5k intern bonus if that applies to you).
Summer 2021 updated figures for INTERN TO FTE CONVERTS (likely to be higher than new grad FTEs with no MSFT internships): 112.5k base, 120k stock (argue with them if they try to roll less on the initial offer), 25k signing. I've heard they've done away with the intern conversion/signing bonus now.
Never name a number first
Here’s why you never name a number first: if he had asked me to, even before he gave an initial offer (and some companies WILL do that), I probably would’ve said I wanted to T2 offer: 109k base, 120k stock, and 20-25k signing, because that’s a significant improvement upon T1.
Suppose he had asked me to name a number before rolling out the initial offer. If I had said that I wanted T2, I would’ve been working to get the figures that I ended up starting the negotiation at. They had to guess what I valued myself at, and because they had no numbers to go off of, they ended up guessing high. By giving me the T2 offer out of the gate, I knew they thought there was a very non-zero chance of losing me. They signalled that they were not only willing to start at that level, they were very likely willing and able to push beyond it (because initial offers at big companies like this are only ever just that: initial offers. The starting point.)
That’s why the first person to name a number loses: you reveal something about what you’re thinking, or how you value the candidate (in your case, yourself).
The lesson: Keep companies guessing. This ups the chance that they’ll guess high.
Don't negotiate at the offer meeting
The reasons I didn’t name specific numbers after the initial offer was given at that meaning were:
- I didn’t want to appear to slap down the offer by immediately giving obviously-well-thought-out answers immediately. This speaks to not being too combative, and also not coming across as too shrewd. YMMV.
- I honestly hadn’t expected the T2 offer out of the gate, so I didn’t actually know what numbers to ask for anymore.
- Even if I did know, there’s some marginal advantage to be gained by staying quiet for a little bit. It again goes back to not appearing over-excited--and also gives you time to figure out appropriate numbers to ask for (more on that below).
What I asked for and why
I sent a counter to my recruiter two days after our initial meeting. This was fast, but I felt it was the right thing to do because 1) I talked to a lot of friends at the company who helped me find the right numbers to ask for and 2) I wanted a fast decision so I could, hopefully, pull out of other interviews (tech interviews sucks). YMMV depending on your personal goals, etc. While some pause helps with suspense (I don’t think it’s a good idea to name numbers immediately at your initial offer meeting), there’s also no point to super-dragging the process out when you know what you want.
As for specific numbers, I asked for the highest stock and starting bonus figures that I could verify other people had really gotten for L59. Meaning, one of my friends, basically. Glassdoor et al are really unreliable and don’t usually report the circumstances behind an offer: i.e. there are higher figures floating out there than what I asked for, but I’m nearly 100% sure that they’re for grad students, MS Research hires, etc. None of those are applicable to my case, so I based my ask on verifiable data.
The ask: 109k base, stock + bonus = 200k (preferably split as 150k stock and 50k bonus).
Content of the negotiation call, email, or letter:
Here’s how I phrased that email:
Hi [Recruiter],
Thanks again for all your hard work throughout this summer!
I'm following up regarding the full-time offer presented and discussed this past Monday, 8/6. As mentioned, I’ve been pleased with my Microsoft experience, and I would genuinely like to go full time here.
As requested, the number that I think is commensurate with my skills and experience is total compensation at the 200k level between stock and bonus, made up of a 50k starting bonus and 150k stock. This is on the basis of being here 3 times, having measurable business impact from multiple shipped features, and being in final rounds with highly competitive employers I’ve previously successfully interviewed with [companies I've successfully interviewed with -- named only direct competitors or unicorns that they would care about], as well as standing offers from previous employers.
I would be comfortable withdrawing from other companies’ loops for this offer, as compensation is the currently-missing piece and Microsoft wins for me on culture.
I really appreciate all your hard-work and advocacy, especially as Microsoft is one of my top choices for full time. I really believe in the company mission and in my team’s product space, and would love for this to work out.
Thank you,
Courtney
Speaking of email: sometimes a phone call is better, but an email lets you get everything in writing. It was also better for my specific recruiter, I think, based on personality (not to mention it was also more comfortable for me). YMMV.
After the counteroffer email...
After the counteroffer email: Continued to post on LinkedIn about upcoming interviews, upcoming tours of company offices, etc. The GHC resume database contacts coincided really conveniently with my timeline, so I’d post each one I got. Recruiters do watch LinkedIn, and again--having other options (or, rather, the appearance of having other options) is really the #1 most leverage-able thing in negotiation. At this stage, I didn’t directly email my recruiter with all this information, because most of the GHC companies were not close competitors (I would’ve emailed if anything changed with google/Facebook/Apple). I emailed him once a week for a general update (short and sweet), but that was it.
Common mistakes: Hounding your recruiter directly with every bit of information ever. Recruiters really only care about your progress with directly competing companies--anything else is kind of whatever. For this reason, I left what other companies I had direct offers from already (mostly aerospace companies) unnamed and name-dropped the interviews with the big bois. Mystery is your friend. Also a common mistake: not checking in with your recruiter regularly (once a week or once every two weeks) to make sure things are moving along. You don’t want to slip between the cracks.
My result & rationale for acceptance
- Initial offer: 109k base, 120k stock grant, 25k signing & start bonuses + other stuff like relo/acceptance bonus/etc
- Negotiated offer: 117k base, 130k stock grant, 35k signing & start bonuses + other unchanged stuff
I was willing to accept this combination of increase largely because increases in base > stock > bonus. Though they didn’t come back with exactly what I’d asked for for stock/bonus, doing so is also really rare. Ultimately, the bump in base was really valuable not only because base recurs every year, but because your base affects your performance bonus target every year (larger base, larger bonus target, etc).
Once you get a counteroffer...
Once you get a counteroffer, it’s generally a good idea to stop negotiating if the company got reasonably close to your requests. This is because, again, negotiation is a compromise: you’re unlikely to get exactly what you want (and they certainly aren’t getting exactly what they want, either). This offer was close enough to what I wanted because of the benefits of an increased base salary, so I was happy to stop here.
Common mistakes: Continuing to haggle for a long time over small amounts of money. Trying to go through multiple rounds of negotiation (for new grad, I think one-and-done is usually the way to go unless you have competing offers out the ass, etc).