Software engineer salary negotiation
Salary Negotiation
December 23, 2022

Software Engineer Salary Negotiation: A Comprehensive Guide to Negotiating

How does compensation and career progression compare for a senior software engineer vs. a software engineering manager? How do I figure out my market value as a software engineer with 15 years of experience? And is it different if I’m working at a FAANG company vs. startup? How should I think about my location and its impact on my compensation? In the article below, we aim to provide a comprehensive guide for negotiating a Software Engineering offer, pulling from our experience across thousands of software engineering negotiations - from the biggest FAANG company down to the smallest series A startup, we’ve seen it all.

If getting the optimal outcome is your goal, you can sign up below to talk with an expert on our negotiation team.

Negotiate Your Offer

Table of Contents

Understanding Software Engineering Levels

Software engineer salary negotiation starts with understanding how experience and skills are leveled within a given company. Each organization has its own precise leveling convention; Amazon software engineers, for example, are ranked at levels from L4 to L10 (though individual contributors usually top out at L7 and L8-L10 are reserved for managerial roles), while Microsoft engineers range from Level 59 to Level 80. 

However, regardless of a company’s naming convention, software engineers usually fall into 2 standard groupings - individual contributors, and managerial roles. 

Individual contributors (ICs) are folks who are doing the actual engineering on a day to day, while managers are the ones overseeing the ICs and making sure they’re hitting targets. IC’s typically fall into standard leveling groupings of entry, mid, senior, and staff, while managers can begin as a standard “manage” title (commonly abbreviated as EM, SDM, or SEM), and then evolve into senior manager, director, and even vice president (VP).

Software engineering levels comparison
Levels.fyi

Within the IC career ladder - entry-level software developers are those graduating from a university or coding bootcamp or developers with just a couple years of industry experience. Mid-level and senior software engineers bring more years of experience but also more specialized or impressive technical skills. Continuing up the individual contributor (IC) ladder, many companies hire technical leads to serve as a bridge between tech work and leadership, and staff and principal engineers to truly level up the organization with unique technical expertise. For example, at Facebook (Meta), the L6 level is the bridge between IC’s and managers, as it’s the entry-level managerial position. There are varying levels of management ranging from more junior managers or leads to director-level or higher. 

In addition to specific requirements and success measurements, each level has its own compensation band, so it’s imperative to understand how a company determines and assesses an engineer’s level. 

Understanding Software Engineer Offers

While there is no exact standard, software engineer offers at the average tech company (both public and private) frequently consist of the same components, and it’s important to familiarize yourself with them. 

Software Engineer Base Salary

A standard aspect of virtually every software developer job offer is the base salary. This is what you’ll see on your paycheck each pay period. Software engineers typically earn at least $100,000 to start, but depending on experience, company, and location, the base salary can be well into the two- or three-hundred-thousands. This is typically the least negotiable component of compensation, as it’s the most consistently paid out and is the least variable.

Performance Bonuses

Some companies offer a performance-based annual bonus; this can be based solely on company performance against revenue and other goals or a combination of company and individual employee performance (this format is most common). Companies that include an annual bonus generally offer 5-30% of the employee’s base salary, but there is no guarantee the bonus will be paid out. Some companies only offer bonuses to certain levels or offer differing amounts per level. For example, at Meta, the annual bonus percentage for an L5 Software Engineer is 15%, while at L6 it’s 20%.

Software Engineer Equity - RSUs vs. Stock Options

One of the most exciting - and sometimes confusing - parts of software developer offers is equity. Often provided in the form of restricted stock units (RSUs) or stock options (typically referred to as ISOs or NSOs), equity is, put simply, stock in a company. 

Publicly traded companies like Amazon, Microsoft, Facebook (Meta), Google, and others offer RSUs. That means, in simple terms, that they’re awarding you shares at no cost to you (other than taxes). RSUs can shift in value depending on market conditions, but because they are actual publicly-traded shares, they retain some level of cash value. It’s possible (but very rare) for a privately-held company to offer RSUs and, in this case, you wouldn’t have to pay for your shares - but they also aren’t liquid (or able to be easily sold).

Stock options, on the other hand, are frequently awarded by startups or pre-IPO companies. As the company has not yet become public, instead of official shares, you are given the right to purchase (aka “exercise”) a number of shares at a given price (called a “strike price,” and often much lower than the eventual price at IPO). Joining a company at an early stage brings with it a lot of upside but also a lot of risk. If the company never goes public, your equity may be worth very little. But if the company does go public, you could get a strong upside - just look at the folks who worked at Uber pre-IPO!

With either type of equity comes a “vesting schedule.” This is the time frame within which the company will pay out your equity to you. Just like you don’t receive 100% of your salary on your first day of work - the same goes for your equity grant.

A vesting schedule also helps keep your equity amount more stable as the stock market rises and falls.

The most common vesting schedule is receiving 25% of your equity each year, over four years, with a one-year cliff (this is an obligation to stay on at the company for one year before receiving your first portion of vested stock). Do note that the 25% vesting schedule isn’t universal, as many big companies (like Amazon, TikTok, and Google) all have different philosophies for how they dole out equity. Amazon, for example, will backload their equity vesting so you receive 5% in year one, 15% in year two, and 40% each in years three and four. In order to walk away with all of the equity awarded to you, you have to remain at the company throughout the entire vesting period. Because equity is subject to a company’s board or the market at large, vesting schedules are typically non-negotiable - especially at larger companies. 

To read more about the various types of equity and gather more specific startup equity negotiation tips, head to our blog post here.

Options vs RSUs

Options

Gives you the option to buy stock at a predetermined price

RSUs

Granted stock units outright
You can sell vested shares, or keep them

Offer 1000 options
$10 strike price
1000 units
Vesting Schedule Vests over 4 years Vests over 4 years
Market Price in 1 Year $30 $30
What do you own 1 year later 250 options have vested
You pay $2500 to buy $250 units
You now own 250 units worth $7500
250 units have vested
You pay $0 to own 250 units
You now own 250 units worth $7500

Sign-On Bonuses

Because software developers are in high demand, especially those with more experience or specialized skill sets, companies may offer a signing bonus to sweeten the pot. While not a guaranteed part of an offer (and usually not included in an initial offer, pre negotiation), this is something you can always ask for - typically signing bonuses are easy for a company to add on. Some companies offer a one-time bonus paid out on your first paycheck, while other companies (most notably Amazon) offer a bonus split across your first two years of employment to help offset their backloaded equity vesting so the compensation in years 1 and 2 is more consistent with what you’d be getting in years 3 and 4.. 

It’s worth noting that your offer letter may include a clawback policy. This means that if you leave the company before a specified period of time, you’ll be stuck paying back the sign-on bonus either in full or a prorated amount. The clawback policy is typically listed in the offer letter.

Other Common Offer Components

While compensation is the first thing many people think of, there are other very important pieces of a software developer offer. Remember to assess the offered paid time off (PTO), health insurance coverage, 401(k) or other retirement plan match, visa and green card sponsorship, and workplace flexibility (while many companies now offer a remote or hybrid workplace, some focus on office culture but can still be willing to negotiate with their top candidate). 

The majority of companies hiring engineers will offer some combination of the above, but the details will look different depending on company size and other factors. Established mid-size or large companies often have more cash to offer as compared to a startup, but it’s common across the board for equity to be a large part of a software engineer offer. Early career hires may see an offer made up of more base salary than equity, while the reverse is true as you become more senior. 

As noted, a startup will offer stock options while a public company will likely offer RSUs. While large companies may have more cash to spare, they also have more standardized processes, often with less wiggle room. Negotiating benefits like paid time off may be easier at a small or startup company. If health insurance or retirement matching is important to you, you may be more pleased with a larger company’s offer.

In case it’s helpful, we’ve compiled compensation bands for some top engineering roles here:

Software Engineer Offer Process

As you prepare for negotiations, it helps  to understand the typical process from interviewing to receiving an offer. Companies’ interview processes vary, but in all cases they use that time to determine your fit with the company - you should view interviews as a time to do the same and ensure your questions are answered. After the interview, the hiring manager and interview panel convene and debrief on next steps. Often, they determine the level to offer based upon your interview performance. Of course, your prior skills and experience come into play (someone immediately out of school will not likely be offered a Director of Engineering role!), but it’s not unheard of for someone to interview for a mid-level engineer position and instead be offered an entry-level role due to having a miss on one round of interviews. Note - it’s still possible in those cases to push back and even reinterview if necessary. We recently helped an engineer get upleveled from a Senior Engineering Manager to a Director-level role at a startup - she did three more interviews and then received an offer that was much higher with the title she was targeting!

Once everything is decided, the hiring manager and recruiter seek approval for an offer (usually from a hiring committee made up of company  executives) and present it to you upon approval. 

You Got An Offer - Now What?

First things first: before you can negotiate, you need to know your requirements. Ideally, you’ll be clear on this before embarking on a job hunt so you can use this knowledge to fully assess each opportunity. 

Knowing your bottom line is an excellent starting place. What number is the absolute lowest you could (or would want to) accept? What value do you place on the unique skills and experience you bring to the table? What is your ideal number, the one that feels like an obvious choice to accept? Some of this will be a personal decision based upon your lifestyle and desires, but you also want to factor in market data. To find software engineer salaries, skip sites like Glassdoor (their accuracy for engineers is low) and focus instead on Levels.fyi, Blind, and even H1-B visa filing data (for base salaries). Don’t hesitate to ask your network or mentors, as well. 

Once you know your bottom line and your ideal number, you’ll want to determine your actual ask. Negotiation is in many ways a game, and it takes two to play. If you are offered $100k and ask for (and are targeting) $150k, the company is likely to come back with a number that’s somewhere in the middle. Avoid that hassle by shooting a little higher than you actually want – this is called “anchoring.” Worst case, you get something closer to your true number, and best case, they actually give you the pie-in-the-sky number you asked for! 

Of course, salary is only one part of the offer. Think about what is most important to you. Some engineers love the idea of benefiting from a company’s growth over the years and prefer an equity-heavy offer. Other folks prefer the stability of a higher salary. Some people feel that as long as they can pay their bills, money isn’t the most important thing and they’d rather target a flexible workplace or generous paid time off. You won’t necessarily need to sacrifice one component of compensation for another, but it’s helpful to know what matters most to you! 

How Is An Offer Determined?

There are myriad ways an offer amount is determined, and understanding them is key to a successful negotiation. 

As mentioned, your experience and interview performance are factors in your overall offer package. Each level typically has an associated pay band, so the level at which you’re hired will determine your salary range. 

Sometimes your education can impact the offer you receive. If a role doesn’t require a Master’s in Computer Science but lists it as a “nice-to-have,” for example, you can bargain to be paid more for the education you bring. Keep in mind that if a company isn’t asking for an advanced degree, you may not get much leverage here; some companies pay a premium for higher education but many do not. 

Have a rare or highly-desired skill set? This absolutely comes into play. Those who work in artificial intelligence/machine learning or computer vision, to name a few, often see higher offers due to the challenge of finding qualified candidates. 

While pay bands are based upon level, they may also take location into consideration. Companies choose whether to anchor their pay to one location (a Bay Area company paying Bay Area salaries even to folks in the Midwest) or offer location-dependent pay (a Meta software engineer in the Midwest earning pay based on the local market rate for engineers even though Meta’s headquartered in the Bay). This means that even in an expensive city like Chicago, you’ll still be getting paid less than in the Bay Area because the market rate and number of engineers in that location is very different. Even if a company has location-based pay, there’s no reason you can’t ask to be considered for a higher salary. 

Finally, competing offers can help determine your offer outcome. If you have other offers on the table and they’re higher than this company’s offer, or if you’ve had the chance to discuss competitive compensation (but haven’t gotten a formal first offer) you may be able to use it to your advantage. 

What Are the Most Negotiable Aspects of a SWE Offer?

The most negotiable component between base, equity, and signing bonus is the equity grant. This is because companies don’t want to have to give you more guaranteed cash, instead they prefer to give you equity which is more variable. One Engineering Manager received an offer from a mid-sized tech company and, because he brought a stronger skill set and background than the role initially sought, he was able to negotiate a few hundred thousand more in equity. 

That said, almost everything is worth asking about, and it’s still worthwhile to focus on all components of the comp (except for annual bonus percentages which are typically non-negotiable unless you get your level changed). If you’ve hit a dead end when it comes to increasing compensation or adding paid time off, try asking for more flexibility (remote work, flexible schedule). If you’re on a work visa and hoping to apply for a green card, that is often negotiable, too. One software engineer on an H1-B visa was able to get a company to skip their usual policy of a six-month waiting period to file for a green card. They agreed to file upon his start with the company which was a huge weight off his shoulders!

Don’t forget to use the clarity you have about engineering levels. If you are aligned with the level they’re offering, great. But what if you’re not? Ask your recruiter to explain this level and the next one up so you can adequately assess your experience against both. Getting on a call with the hiring manager and working to understand why they placed you at that level, and if there’s any flexibility in that decision, will be hugely helpful – even if you don’t end up pushing for a higher level. If you do feel you should be considered for a higher level, speak up: some companies will allow you to do an additional interview to prove your skills. With a higher level comes higher compensation, so it’s worth the ask! 

How to Negotiate

Negotiating doesn’t start when you receive your offer - it’s a process you should be thinking about from the very beginning. In practice, that means engaging in strategic conversations with your recruiter and hiring manager, understanding your points of leverage, and communicating effectively.

Early in your conversations, it’s likely the recruiter will ask questions about your job search. It can be hard to know how honest to be and what information you should and should not share. First, it’s important to understand the purpose of these questions. Most recruiters will ask this question to ensure alignment with the role and your compensation requirements as well as understand whether the job aligns with your preferences and motivations. That said, you’re under no obligation to provide specific numbers and we recommend you not answer, rather than risk “low-ball-ing” yourself.

If a recruiter asks your current salary, there is no reason to share this detail. In fact, in many U.S. states, it’s illegal to ask about current or past salary. It’s okay to say you prefer not to share. When a recruiter asks what range you are looking for - which will happen in almost every interview process - you can respond in a few ways. 

One option is to share a number, but we typically advise against this unless you’re making a switch from a high-paying industry to a lower-paying one (for example, if you’re moving from the for-profit to the non-profit sector it may make sense to provide an anchor).

Typically, a better option is to ask for clarity - you can say something like, “I’m not sure I know enough about the role or company to make a strong determination just yet, but is there a range budgeted for this position?” Many recruiters will share more information and you can respond accordingly (whether that’s agreeing the range feels right or expressing that you are targeting something higher). It’s also important to note that, depending upon your state, if you ask the recruiter the range for the role, they’re legally obligated to share it with you. The California Equal Pay Act is a great example of this!

After receiving the offer, take time to review and digest the details. You may be asked when you’ll be able to get back with your response - but there’s usually less urgency than you think. It’s fine to respond with, “Thank you for all of these details. I’d like to take some time to review everything/discuss with my family and come back with my thoughts.” We always recommend people take a few hours (or a day!) away from the offer before starting to analyze it since emotions can run high when you receive a job offer.

Refer back to the numbers you determined earlier. How does this offer align with your ideal compensation? What other components are present or missing? This will give you a clearer picture of what to ask for.

Once you’ve determined your ask, you need to decide on the rationale, keeping in mind the information you have about how offers are crafted. You’ll want to back up your request for more money. This could be done by reiterating the skills you bring to the table, emphasizing your impressive interview performance, providing market data in favor of higher compensation, or asking to further discuss your level. 

It is also fair to make an ask based on what you’d need to walk away from your current company. Even if your current company doesn’t pay as well, they may offer things this new company doesn’t, like unlimited PTO, flexible hours, or other benefits that make it challenging to walk away. You also might be on track to receive a bonus in your current role in a few months and would forfeit that if you accept this new offer. 

If you have evidence pointing to your qualifications at a higher level, now is the time to argue for that. Remember, too, that there are often trade-offs involved; if you like the role and company but something is missing (less paid time off than you’d prefer, for example), use that to ask for more of something else. If you have competing offers, feel free to reference them. If you don’t have competing offers, it’s unwise to lie; instead, focus on the value you bring.

Know that you and the company have the same goal: for you to join. Remember that it can cost up to $50k to recruit and hire a software engineer. The company benefits from coming to an agreement with you rather than starting all over. It is highly unlikely that a company would pull the offer based on negotiating respectfully.

We also recommend setting up a call with your hiring manager once you’ve received your offer. This will give you a chance to ask any questions you didn’t get to ask during the interview process and build a better relationship with the hiring manager. We also typically suggest you share an impact roadmap (also referred to as a ‘30-60-90 day plan’) for how you plan to approach your new role. This shows the hiring manager that you’re thinking critically about how to be successful at the company – and gives you a chance to make sure your priorities are aligned. This process also helps your hiring manager be even more bought in to you joining the company – so they’re more likely to support your request for increased pay.

When you have a sense of what numbers you want to counter the offer with (remember to shoot higher than what you actually want) and data to back it up, you’ll want to set up a call with the recruiter. There’s no need to perform a monologue; instead, keep it short and to the point. 

“Thank you again for sending over all of the offer details. I took some time to review everything over the past few days, and based on my [unique skill or in-demand experience], as well as the offer I have from [company B], if [company A] was able to get the compensation to [desired amount], I’d be happy to sign with [company A] today.”

Then, and this is important, stop talking! It is easy to feel you need to further justify your ask, but it’s best to leave it short. The recruiter may ask for more context, at which point you can share more detail. 

It may not be as simple as just asking for an updated total compensation amount. What if you want a higher base and more equity? Or you’re happy with the base pay but want a signing bonus and better PTO? Try something like this:

“Thank you again for sending over all of the offer details. I took some time to review everything over the past few days, and while I’m excited by the team and the role here, unfortunately the PTO offered is much lower than I receive currently. I will also be missing out on my annual bonus at [current company] if I leave now, so if [company A] was able to add a signing bonus of [dollar amount] and an additional two weeks of vacation, I’d be excited to sign.”

One way to think about this is the “excitement sandwich.” Start off the conversation by reiterating your interest in the job and company, then acknowledge your reservations and what is holding you back from immediate acceptance. Finally, share your excitement and intent to sign if they can meet your requested terms. This covers all your bases: it’s clear you would love to accept, but it’s also clear you need them to sweeten the pot. 

You may be thinking, “I have to have all of these conversations over the phone?!” It’s true: negotiating in a live conversation is much more effective than over email. Email carries more risk, takes longer with more back-and-forth, and lacks the rapport-building of a live conversation. That said, if your options are to negotiate over email or not negotiate at all, go with email - just be smart about it (we’ve got tips here). 

And don’t worry about losing the offer if you negotiate; while you may hear occasional horror stories, if you are respectful, reasonable, and timely, no legitimate company should pull an offer just because you advocate for your own earning potential. Companies will only feel inclined to pull an offer if you demonstrate yourself to be a financial liability to the company (i.e. saying offensive things, proving to be a dangerous individual, etc) – or if needs change on their end, which means your role would’ve been at risk of being cut anyways. The chance of losing an offer from negotiating respectfully is below 0.05%.

Mistakes to Avoid

We’ve talked a lot about what to do throughout the negotiation process, but what should you avoid? What are the most common negotiation mistakes?

Mistake #1: Not negotiating: That’s right - one of the biggest mistakes is not trying to negotiate at all! Even if your initial offer comes in higher than you dreamed, it doesn’t hurt to negotiate a little even if it’s just for additional flexibility or a small sign-on bonus.

Mistake #2: Negotiating without a clear strategy: Negotiating is more challenging when you lack a strategy, so you need to have a strong point of view backed up by data. Prepare yourself for the conversations by reviewing the reason for your ask and familiarizing yourself with the pieces of the offer. 

Mistake #3: Negotiating after signing the offer: The time to negotiate is before you sign your acceptance on the dotted line. Once you accept the offer, you’ve agreed to the terms and committed to joining; if you try to negotiate after the fact, it looks as though you signed in bad faith and will also be ineffective. Since they already got you to agree to the original terms, they won’t be likely to offer more.

Mistake #4: Negotiating based only on what you want: Of course you’ve got to look out for number one, but there are other parties involved and you need to come to a mutual agreement. Focusing only on your desires (“I’d like to increase my salary because my mortgage is expensive”) isn’t likely to win you any favors - or any increases.

Software engineer salary negotiation is no easy task, but advocating for yourself is a skill you’ll use for life. Remember that the company interviewed multiple candidates and chose you, and negotiation is simply a way to reach a mutually beneficial agreement where each side walks away happy! 

You’ve got this, and we’re available to help if you’re looking for more hands-on support; sign up for a call with a Rora negotiation coach!

Negotiate Your OfferNegotiate Your Severance

1:1 Salary Negotiation Support

Negotiation strategy

Step 1 is defining the strategy, which often starts by helping you create leverage for your negotiation (e.g. setting up conversations with FAANG recruiters).

Negotiation anchor number

Step 2 we decide on anchor numbers and target numbers with the goal of securing a top of band offer, based on our internal verified data sets.

Negotiation execution plan

Step 3 we create custom scripts for each of your calls, practice multiple 1:1 mock negotiations, and join your recruiter calls to guide you via chat.

Frequently Asked Questions