How To Negotiate A Job Offer For Software Developer or Engineer

By Kimberly Cook |Email | Feb 8, 2019 | 2565 Views

In the span of a week, I had job offers to work as a software engineer at Google, Facebook, Amazon, Apple, LinkedIn, and Yelp. Here's how I negotiated them.

You're almost finished with the long grind of interviewing. You're almost free of the stress associated with interviewing at big tech companies. You're practically envisioning sending off a final "I'll sign" email.

But you're not quite there yet.

There's one last hurdle to clear: negotiating an offer.

You've shown that you can interview, but how well can you close a deal?

Late last year I interviewed at six top companies in Silicon Valley in six days and stumbled into six job offers. I had one last task to make sure my work wasn't in vain. Here are the principles I had, the rules I followed, and what I did to negotiate an offer worth $100,000/year more than I planned on.

Introduction
First, some assumptions on my part:

  • Your mileage may vary. I'm obviously not stating that everything I went through is easily reproduced. I am using it as a backdrop to color some advice that I think anyone totally new to this to keep in mind.

  • You have offers, plural. This can be two or this can be ten, but you need to have more than one offer concurrently. I've negotiated on behalf of (many) friends in the past with no leverage, but I'm not going to focus on that scenario.

  • You're not afraid to negotiate. The night before my Google interview I spoke with another candidate in my hotel. His strategy was to low-ball himself to increase his chances of getting an offer. That's not the path that I took, it's not a path I'd advocate, and it's not one I'm going to even entertain. You should always be willing to see what you can get.

  • You won't practice the Dark Arts of Negotiation. I'm pretty sure you can negotiate by lying your way through the process. From a moral perspective, though, c'mon. From a practical perspective, getting caught in a lie is not going to help you.

  • You won't renege on an offer. Could I have squeezed a bit more out of the eventual offer I signed if I had? Maybe. But I'm not comfortable accepting an offer and later rejecting it. I'm sure other candidates do it and I don't think it gets you banned from the Valley. It's just not something I wanted to do.

  • You're willing to work at any of the companies if the price is right. I definitely had a personal ranking of which companies I'd prefer over each other, but each company had a chance. No one was just there to beef up offers.

  • I'm going to both anonymize the companies I negotiated with and fuzz their numbers. My goal is not to answer "how much do MegaCorp offer if you have competing offers." My goal is to answer "how do I respectfully ask for a larger comp package?" for people that don't know where to start. The total compensation for each offer is accurate (within 5%).

  • You're starting at square one. I give my personal experience in this article and some examples of conversations I've had when negotiating. I don't draw on decades of experience with very in-depth detail. I link some pieces at the end that is more suited towards that type of reading.

Before the Offer
Congrats! You have multiple interviews. I'm sure you're nervous. I'm sure you're telling yourself you don't deserve it, that you got lucky. You think you're going to fail miserably. The last thing on your mind is how to talk numbers with recruiters.

Chill out. We all go through that! 

It's understandable. But you don't want to shoot your future self in the foot. There are only a few things you need to keep in mind at this point, anyway.

My first major piece of advice: do not make this process adversarial.

I've read a lot of people that view this very cynically.

It's us against them.

Candidate versus recruiter.

You're trying to extract the absolute most out of a company and they're trying to cheat you out of the most they can. Right?

Wrong. This may be the case sometimes, I guess, but that mindset will not lend itself to a healthy negotiating phase. I had very good relationships with my recruiters and in the end, it paid off. Maybe it would have gone better if I were more aggressive or lied to them. I won't ever know how that alternative universe played out. But I do know that I have no regrets about it all. I'm confident I could ping any of those recruiters to kick off the process again. Also, recruiters are people, too.

Next, make it clear throughout the process that you're interviewing elsewhere. This is critical to making sure that your offers are overlapping. I had to deal with one exploding offer. I had to pass on because the company refused to move the deadline. It took a piece of leverage away from me. If I didn't let everyone know about my situation I may have lost even more.

It's up to you if you want to disclose where you're interviewing. I would share it you think it's "impressive". Keep in mind that you should be proud of interviewing anywhere. You'll have more leverage, though, if you don't remove the possibility of a Google. My recruiters were very respectful about asking. Companies understand that who you talk to is your business and only theirs if you decide it is. With that said - the threat of getting (and signing) an offer elsewhere is fantastic leverage for everything from scheduling to getting an offer.

The Initial Offers
Alright, it's the moment of truth. You're going to hear how you did.

My recruiters all opted to deliver the news over the phone. Nearly every call followed the same pattern:

Do you have any updates from other companies? Do you have a range you're expecting from us? How does something in the neighborhood of $package sound? What do you think?
Pretty much anything you read will say never give a range. I mostly agree with that, but sometimes it makes sense to give something. It takes some experience and familiarity with comp packages to do so comfortably. I only gave the first numbers to one or two companies and it was because I was familiar enough with the companies to know they would come in around $50k/yr lower than other offers I had.

I would never give a range to a company that sends out sky-high offers. With that said, I'm not going to waste a back-and-forth cycle with a recruiter when I know they're not going to come close to an existing offer. Recruiters won't want to go back-and-forth and back-and-forth writing up new offers for you. If they won't be close, let them know where the range is going to start. Wasting time waiting on a non-competitive offer isn't advantageous to anyone.

That being said, if you are dealing with a company whose budget is infinite, be smart. Levels.fyi is the best resource I've seen (far better than Glassdoor) when it comes to learning what's typically offered. Shoot for the sky and never, ever assume you can't get a top offer. Watch the situation play out and be willing to adapt to it. I ended up getting far, far more than I ever thought a company would offer me, and a lot of that is due to never anchoring myself mentally to a "top value".

Never sound "giddy". Remain measured, even if you're confident you'd accept an offer. It's a lot to take in on the phone - especially if it's an offer that surpasses what you ever expected - and you're probably not thinking straight. Always think on any package for a while.

Make it clear you won't accept an offer until you hear back from everyone. In my experience, recruiters understood. I made it clear I would like to go to any of the companies I was interviewing at. I definitely had a dream company throughout the process, but that wasn't really anyone's business but my own. 

I don't see actual examples of things to actually say in these situations. I'll provide here what it sounded like for me. That should help those that don't know where to start. Don't follow this as a script (because that's weird and unnatural), but this is the sort of thing I would say to remain respectful and open to negotiate. Let's assume the offer you've heard is something you might sign (that is, it meets your bar to go work there):

Recruiter: So, what do you think?
You: That's an interesting offer. I think it's probably in the ballpark, but it's not something I'm going to sign right now. I'm going to wait until I hear back from the other places I'm speaking to.
In the above, you let your recruiter know that they're "in the running", but that it's not enough to blow you away. You're respectful but firm. This is the blueprint for how your discussions should go.

Don't give away more information than you need to, don't be aggressive, and don't give numbers if it doesn't make sense. The above is all honest, too, so you don't need to worry about getting caught in a lie. Essentially, you're trying to maintain good standing with your recruiters and avoid getting into the nitty-gritty until you have all of your offers on the table. That's the fun part!

The Counter-Offers
So, you've got numbers from everyone that you're considering. Now you can start counter-offering based on what information you have. When I counter-offered, I never used solid numbers - I gave ranges. I don't like the idea of committing to a solid number until the very end.

There are a few reasons for this:

For one, giving a solid number feels weird; why is $120,000 acceptable, but $119,000 is a bit low? I'd much rather present that as "somewhere between $120,000 and $140,000". It also leaves room for a company to move upward if you keep things a bit in the dark. Note that once you have numbers from a company it makes a lot more sense to be more explicit in what you're looking for.

To me, there's an implication when giving a solid number that it's "the one." If a company can hit "your number", you've lost out on the chance to negotiate much more unless more offers coming in. Companies can still hit your number if they offer the top of your range; keep that in mind. If you give a $5,000 range, don't be surprised if companies meet your demands and expect to get a signed offer.

Some may object to how I presented the above, as recruiters have a lot of flexibility. You can always give a number, have them match it, and then ask for higher. I'm not denying that. But it was a goal throughout my negotiations to keep on very good standing with my recruiters and it paid off very well in the end.

My initial counter-offers sounded something like this (I made up the numbers here and provide a few examples):

Bar, Inc.: We were thinking of offering a base salary of around $120,000 with a four-year RSU package of $150,000 and a signing bonus of $10,000. What do you think of that?

Me: How flexible is Bar, Inc. on equity? I'm really looking to stay and grow at a company, and equity is something I really interested in wherever I go. I'm comfortable with something in the neighborhood of $120,000 on base, but I'd definitely like to sign an offer with a larger equity package.

FooCorp: We were thinking of offering a base salary of around $100,000 with a four-year RSU package of $150,000 and a signing bonus of $10,000. What do you think of that?

Me: I think the base is a little bit lower than what I'd like based on my offer from Bar, Inc. for $120,000, and base salary is really important to me. As for the equity package, I was looking for something closer to $200,000. The signing bonus is around what I was looking for.

There's a lot of actionable information above for a recruiter without you giving any implicit commitment to any number. FooCorp knows they need to get to $120,000 to meet your other offer. Bar knows that equity is important to you, and equity is something that companies tend to move a lot more willingly. You now have two companies moving in tandem to get a better offer to you and neither of them is talking to each other. This is pretty much how you want this entire process to go.

It makes sense to change an established range once another company ups the ante. This is how that discussion went for me:

Me: Hey, I finally heard back from Baz LLC. Their offer came in a lot higher than I was expecting. They offered $150,000 in base, $200,000 in stock, and $40,000 in signing. That being said I think the work FooCorp aligns more closely with my interests, so I'd really like to make something work with you guys. Can we do what we can to get to those numbers? I'd love to figure this out.

FooCorp: Wow, that's a good offer. Keep in mind FooCorp is {making the world a better place / has amazing potential / is better for your career} and I would hope you wouldn't be deciding based on a paycheck. I don't know if we can match that offer exactly, but I'll see what we can do.
I went through the above sample conversations so many times and they all went pretty similarly.

They always sounded very doubtful about moving their numbers. They always said it was more than they would typically give up.

They always explained why their company's mission and culture made up for the difference in comp.

But almost always, they upped the package.

Sometimes they'll match it. Sometimes they won't. Sometimes they'll come close enough that you'll pull the trigger because it's such an exciting opportunity. You should always give it a shot, though.

My Offers

I'm including this because lots of people have pinged me about it. I don't know how much people can take away from it, but I'll put it out there anyway. I'll include what tips I can.

I was able to get ballpark numbers from every company before I disclosed any numbers. Here they are, anonymized and randomized. The format is base salary+bonus / 4yr stock package / signing bonus.

Alpha: 180k / 150k / 0k (218k/yr)
Bravo: 180k / 200k / 30k (238k/yr)
Charlie: 140k / 180k / 30k (193k/yr)
Delta: 160k / 220k / 50k (228k/yr)
Echo: 160k / 200k / 30k (218k/yr)
Foxtrot: 165k / 210k / 30k (225k/yr)
I thought it was pretty interesting how closely most of the numbers aligned despite not being able to see each other's initial offers. That must be the going rate... or something.

Anyway, once I had all of the offers, it was time for constant communication for me. I called my least-favorite offer and told them what the best offer was and asked them to close the gap as much as possible. Once those numbers moved, I talked to more companies. I usually had daily or every-other-day update calls with my recruiters, and they sounded like this:

Bravo: Any updates from your end?
Me: Yeah, I was able to get some preliminary numbers from Foxtrot. They were thinking somewhere in the ballpark of $225k TC, but Delta says they will comfortably beat that. I wasn't blown away by the offer, but given Delta's position on it, that's probably the low end of what I'll end up signing.
Bravo: Great, thanks so much for sharing that. I'll talk to the team and see what I can do. We'd love to have you!

Alpha refused to negotiate and refused to move their deadline, so they were out of the running pretty quickly.

Once everyone had a chance to move their numbers, it looked like this:

Bravo: 180k / 220k / 75k (254k/yr; +16k)
Charlie: 140k / 200k / 30k (198k/yr; +5k)
Delta: 160k / 220k / 50k (228k/yr; no movement)
Echo: 160k / 250k / 30k (230k/yr; +12k)
Foxtrot: 180k / 240k / 30k (248k/yr; +18k)
More rinse and repeat. My goal was to whittle down the offers once I had things moving in the direction I wanted. It was a logistical nightmare keeping up with six companies during this. It was also becoming clearer that there was a gap that some companies couldn't overcome.

I also had a lot more time to think about company culture and perks/benefits, so certain companies began to pull away from each other. I didn't formally reject any offers until I signed my final offer, but mentally, I wrote off a few of the companies and stopped negotiating with them. I just asked them for a few more days to decide.

Recruiters constantly told me they couldn't up to their packages anymore, but inevitably, they always did. I'm sure a ceiling exists and I'm sure it's rarer to get number past a certain point, but it was dangerously close to a lie to continuously tell me they couldn't go any higher ("you don't have the experience") and then watch them up their offer by 10%. Part of doing business, I guess.

After another round of negotiation (and a few days), it was down to three:

Bravo: 180k / 250k / 75k (261k/yr; +23k/yr from initial)
Delta: 170k / 250k / 50k (245k/yr; +17k/yr from initial)
Foxtrot: 180k / 250k / 50k (248k/yr; +18k/yr from initial)
At this point, it had been something like a week and a half of negotiation, and this after months of interviews/prep. I was so ready to be done. I had decided based on product, culture, pay, perks, benefits, reputation that it was between Bravo and Delta.

Delta wanted me to give a final number and commit to it. They were extremely insistent that I provide one.

I told them to give me a few hours and called my recruiter from Bravo.

I explained that Bravo had a lot that I respected more than Delta, but that Delta wanted me to verbally commit to a number to move forward.

I was going to work at Bravo or Delta. They were offering similar packages, but I didn't know how high I could push Delta on the last counter. I also wasn't comfortable playing that game.

Everyone gets one last ask. You've been building up to a point where you get to launch your most powerful salvo - use it wisely.

For me, this was that moment. It was time.

I asked Bravo to up their package by a meager $5k yearly in stock (a very small ask in retrospect‚?¶), something companies are far more flexible on. I said if they could do that, I would sign and be confident I didn't leave too much on the table. He said he'd get back to me and that he was confident we could work something out.

My Final Offer
Bravo's recruiter emailed back and said he worked out a new package for me and wanted to run it by me over the phone. I already knew at this point that if he met my ask (180k / 270k / 70k, TC 265k) that I would sign right then and there. I'd thought long and hard about this last little dance.

Bravo: I heard back and got approval for a new offer and I wanted to see what you thought. We'd like to offer you a {salary + annual bonus} of $180,000. In addition to that, we would like to offer $400,000 in RSUs that vest over four years. Lastly, I was able to get approval for a $90,000 {signing bonus + relocation expenses} package. That would put your four-year compensation package at around $1,210,000, or an annual compensation package of around $300,000. What do you think?

Me: Yeah, I'll sign that.
Bravo: Really? Awesome!
And that was that. No, there's no embellishment here. My final ask was for $265k/yr and I was offered around $300k/yr. I don't know if that was due to the goodwill I had built up with the recruiter or if they were concerned I'd defect. Whatever it was, I'm fine with it. :)

The Takeaways
I'm going to summarize a lot of the above in a more digestible way:

  • Get multiple offers. Obviously, this is way easier said than done, but even if it adds a lot of stress to your life, it certainly pays off. With interviews being quite a bit of a crapshoot, it's tough. If you want to get a new job, though, don't put your eggs in one basket and do what you can to try to get at least two offers.

  • Don't lie. I wasn't personally asked to provide evidence of other offers, but my friends definitely have been. It's not worth it to lie, especially when your candidate profile is saved at various companies. Good luck getting into a company that catches you.

  • Be kind and respectful. Recruiters are people, too. They're also the people that act as the path for you getting into your dream company. You don't need to schmooze them, but be friendly. Help them help you! You may have competing philosophies, but both of you want the same thing in the end: a signed offer from their company.

  • Be (selectively) communicative. Make it very clear to everyone what your timelines are and if you're waiting on other companies. Keep people in the loop. We hate getting ghosted by recruiters and I'm sure recruiters hate being hosted by us. Let them know if you've signed another offer or if you're no longer considering theirs. Let them know if other companies have sent you offers and share the names if you think it'll help your case.

  • Don't give a minimum (unless it makes sense). You don't want to give a lower number than a company would have offered you, but you also don't want to waste anyone's time. If you know a company won't be competitive at first, let them know what the other company's range is. If they're out, they're out. Your time is better spent talking to companies you'd actually go to.

  • Shoot for the sky. Transparently, my goal was to get a total comp of around $180k. That was the number where I'd quit my current job. I ended up getting over 50% more than that. I didn't think it was possible for someone with two years of experience to do so. Don't set a limit in your head of what you can think you can get or it may discourage negotiating.

  • Don't reject an offer until you've signed another one. You never know what could happen. You don't want to leave someone hanging on your decision when there is no way on earth you'd sign their offer. But even if an offer isn't competitive, you'd still sign it if the other companies lost their headcount. Keep your options open. You earned it.

  • Think a lot and whittle down your offers. Over the course of your negotiations, you'll converge on the one or two offers you think are "best". As that happens, focus your time on the ones that make sense, and don't waste brain cycles on the ones that don't.

  • Bonus: don't tell teams you're disinterested in them. I've seen people "negotiate" by asking for a larger package by saying they're less interested in the company. This sounds like a recipe for disaster - why would you tell a company you don't want to work for them? Find a new slant.

  • Everything above worked. The final offer I signed was ~$300,000 in total yearly compensation (over four years, including a variable annual bonus, and amortizing the signing/relo package). I negotiated it up from ~$225,000*, an increase of 33%.

Wrap-Up
After my previous post, I primarily saw three questions:

  • How did I negotiate?
  • How much was I offered?
  • Which offer did I take?

I answered two of those three here. Maybe you can piece together the rest. I'd rather provide value than advertise for my employer. I don't want the focus here to be on the decision I made for my life. I'd rather help everyone else get to make the same decision.

There's also much more in-depth, less-anecdotal pieces I'd recommend reading. There's this legendary one from Patrick McKenzie and another from Haseeb Qureshi. What you see here is more of a collection of my personal thoughts.


Source: HOB