Home >Technology peripherals >It Industry >The Software Developer's Guide to Salary Negotiation
This article is excerpted from the "Complete Book of Career Guide for Software Developers" written by John Sonmez. To get the full e-book, click here.
This article may contain the most important career advice you will receive - it is true. Using this information, you may be able to earn hundreds of thousands or even millions of dollars in your career.
Key points
There are two reasons.
First, if you negotiate correctly, you can raise the starting salary of the job you are doing by a considerable amount – far more than you can expect from a raise.
Secondly, the salary increase is almost always based on the percentage of your current salary.
This is why it is absolutely crucial to get a good salary when starting a new job and negotiate as much as possible.
Unfortunately, most developers severely underestimate their abilities, either not negotiating at all or accept the first job opportunity they receive immediately.
I fully understand this mentality, especially if you only want to find a job, but it is important to think about long-term development.
In this post I will take you from the first time getting a job offer and what you need to consider all the way to the negotiation stage, where I will give you some of the best advice on countering.
Want to learn more about salary and job search? Please check the following link:
View SitePoint Premium for books, courses and free screen recordings for web developers.
The first thing you should do is understand your salary range, technical area, job title, and where you are applying for a job.
Let's break down these things.
You should know the salary range for a specific position in the company you want. A website like Glassdoor.com can help you do this.
You can also inquire about it.
If you know someone who works in the company, don't ask, "How much do you make?"
Instead, ask: "According to your knowledge, is the $x to y a reasonable salary expectation? If not, what do you think is a reasonable salary?"
Whatever the number they say is increased by at least 10%, because no one wants to help others get a higher salary than themselves.
You won't have perfect data on this, but before any salary negotiation or assessment of job opportunities, you should at least have a very good salary range for any company you apply for. Good understanding.
In fact, large companies may even have actual official salary ratings that you can get.
For example, when I was still working at HP, my manager had an official salary rating table with different salary ratings that he could show me.
Sometimes, you just need to ask.
However, you should not just use this as your unique data point.
You should do additional research to understand the average salary of software developers using different levels of experience and using specific technologies.
Inquire around and search for these data. It's not difficult to find it.
Yes, I know this is extra work, but it's also common sense.
Any time you are going to have serious negotiations on money, you should figure out the facts.
If I were to buy a new or used car, you can be sure I would have the Kelly Blue Book value of the car, the pricing of the same or similar vehicles by other dealers or sellers, and the invoices from the dealer (if I can find it) .
Many software developers ask me what numbers should they say when asked about their salary requirements (tip: don't say anything), or whether a certain job opportunity is good, but if they take the time ahead of time Do some research and they already know.
Believe me, this research can bring great rewards, so go for it.
OK, let's fast forward a little—because negotiation can happen before or after a job offer—and then discuss when you can expect a job offer and what to do after you get it.
Most companies will tell you in advance whether they will send you job opportunities, although I occasionally receive unexpected emails or couriers.
It is a controversial question whether it is more beneficial to negotiate before or after a job offer is proposed.
If you negotiate before you get a job offer, you may risk not being able to get a job offer at all.
However, if you negotiate later, you may risk not setting the stage properly and getting an extremely low offer, which will be difficult to negotiate.
All in all, I prefer to have most of the negotiations after getting a job offer because by then the hiring manager has made a firm decision to hire you, which will be an advantage in the negotiations.
When you get a job offer, it is important to remember that job opportunities are just job opportunities: a job opportunity.
This does not mean that you absolutely own the job—although the possibility is great—and it does not mean that you have guarantees in any way.
Job opportunities are easily revoked, although this rarely happens.
You should read the job opportunities carefully and pay attention to any response deadlines. (These are negotiable.)
View details such as starting date, annual or monthly salary, job title, vacation or health insurance benefits, and any other details that are important to you.
All of these points are negotiable, so it is very important to consider everything.
You may be tempted to accept job opportunities immediately, especially if you have been looking for a job for a while. don't want.
At least to some extent it is always worth trying to negotiate.
Before we go on, let's talk about another important point when getting job opportunities: the time range.
I have attended many job interviews and have waited for weeks before getting a job offer or rejecting letter.
If you get this job, you will most likely receive a job offer soon within a few days after the interview—though this is not always the case.
Follow up is always good, especially if you can cleverly show that you are considering other options.
Many programmers are afraid to follow up, but I can't understand why.
Do you think the person who wants to hire you will decide not to hire you because you emailed and asked when you would make a decision or you followed up somehow?
More likely, being aggressive will drive the hiring manager to go from "may" to "yes", so be sure to follow up.
We have already talked about this a little bit, but let's look deeper into what makes up the overall content of the job opportunity.
Too many software developers focus on only one number when considering jobs and job opportunities - Salary.
This approach not only disconnects many negotiating factors from the negotiating table and weakens your position, but it can also lead to you losing money from accepting job opportunities that seem to be worth more, when it isn't.
Let's consider a few scenarios, okay?
Imagine there are two job opportunities. One is $90,000 and the other is $80,000.
The $90,000 job offer – what we call “job opportunity A” – comes from a small company. They will give you a 0.05% stake in the company, which is vested in three years.
The CEO said that since they are a small startup, the typical working hours are about 60 hours a week. Holidays are “generous” and merged with sick leave to form a policy of “leave when needed”. Health insurance is provided, but covers only 80%, and you must pay $200 in pre-tax fees through your salary. There are 401k pension plans, but no company matches. Your job title will be a senior software developer.
$80,000 job opportunities—what we call “job opportunity B”—comes from a considerable Fortune 500 company. You won't get any equity in the company, but if the company performs well, you may get stock options as bonuses.
The company seems to have a good corporate culture. Many developers work from home. They usually host social events and have a half-day break on Friday. You won't feel like many people even work 40 hours a week. Work-life balance is a human resource policy.
Holidays offer "two weeks" which will increase after years of service. You can also get five days of paid sick leave.
Full health insurance, 100% coverage, no additional charge. There are 2% matching 401k pension plans. There are also some other small benefits, such as on-site, a large discounted buffet restaurant, discounted child care, fitness membership, etc. Your job title will be Software Engineer II.
We can spend a whole day discussing the differences between these job opportunities, but I hope to start with the most important and best way to compare the two job opportunities from a financial perspective.
Let's talk about hourly wages. You see, salary tends to cover this up.
In order to get the actual hourly wage you will receive, we need to consider the following important factors:
This can be quite complex, but let's try to keep it simple as we only look for big differences. Considering that one job ends up being $35 per hour and the other being $36 isn't worth it. Let's consider these two job opportunities and try to determine the hourly wage.
Job Opportunities A:
$90,000 0 (700 USD × 12) = $98,400
$98,400 / (55 hours per week × (52 – 1 week holiday))
$98,400 / 2805 (total working hours per year) = $35 per hour
Job Opportunities B:
$80,000 USD 2,400 ($1,500 USD 400 USD 200 × 12) = USD 107,600
$107,600 / (40 hours per week × (52 – 2 weeks of holidays))
$107,600 / 2000 (total working hours per year) = $54 per hour
Now, before you feel uneasy, I'm not saying that big companies must be better than startups. The opposite may also be the case, but check out the differences here.
When you look at the actual hourly wages at one lower-paid job, the actual hourly value is about $54 per hour, while another job, with a salary of $10,000 more, the actual hourly wage is about $35 per hour Dollar.
This is too big! Even if some of my estimates are wrong, you can easily see how looking at just paychecks is deceptive and will take you on the completely wrong path.
Be sure to always do this kind of calculation when you get a job offer.
Now, of course, it's not just a matter of money. You may be happier at one job than another, so be sure to consider this. But as far as negotiation is concerned, make sure you make a fair comparison from a financial standpoint.
We will discuss the negotiations next, but consider how much this information will affect what you ask for. Once you know this information, you may ask the startup to pay $120,000 to make it comparable to or better than the job opportunities in a large company.
Without this information, you might think that the startup’s offer is actually better.
OK, now that we have set the stage correctly, we can actually discuss negotiations.
Without the background knowledge we introduced above, I believe you can see that your negotiations will be much less efficient. First, let's talk about why negotiations are so important.
I often hear software developers say they don't want to bother negotiating and risk losing their jobs, so they just accept job opportunities. Often, these kind-hearted developers try to convince me that this will not make any difference anyway.
I am bluntly, I don't agree. The reasons are as follows. One major reason is that it’s easier to affect your salary when you first start working than to get a raise at work.
If you can increase your total salary by 10% – which is usually easy to achieve – you may be 2-3 years ahead of your salary increase, which is usually about 2-3% but may actually be is 0%.
This alone doesn't seem to be a big deal, but the power of compound interest - what Einstein calls the eighth miracle of the world - can do it. Let's see how to do it.
In this example, we only use salary negotiations, but ultimately you want to negotiate on every factor we discussed in the previous example to affect the total compensation.
Suppose you are getting $80,000 in a job, instead of negotiating and getting $90,000. The table below assumes a 3% increase in salary per year. Let's see the difference 10 years later:
Year 1
80,000 USD
90,000 USD
This assumes you worked in the same job for 10 years and got a 3% raise, but what happens if you change jobs and negotiate again or you negotiate a raise? What happens if you invest the extra money you earn?
Oh, if you want to know what the difference might be in your entire career (e.g. 30 years), it’s $475,754.16!
One of the first things to consider when conducting any negotiation is the relative status of both parties.
This is one of the main reasons why I spent so much time teaching software developers how to build personal brands and promote themselves.
The better you are when you enter the negotiation, the better the results you get from the negotiation.
The person who can best with deal failures always has the best position – remember this.
Your best possible position is to have the company look for you specifically and try to recruit you based on your unique talents, abilities or reputation, and you already have a very good, well-paid job and several other job opportunities.
Oh, you still have enough money in your bank to live for the next three months or more.
Does this sound like a fantasy?
No. When I was writing code full-time, I was able to put myself in this exact situation before I started my own business, which was great.
Let's take a look at the comparison.
The worst situation you may be in is that you don’t have a letter of recommendation when applying for a job. Since they require someone with a college degree, and you don’t, you barely qualify for the job.
The interview was not going well and you were the third choice for this position. The other two candidates rejected the job opportunity.
You did not arrange any other jobs. You're about to be kicked out of the apartment and you have a lot of unpaid bills.
Can you see that in the first case you will be in a better position in the negotiations compared to the second case?
Before you start negotiations, you want to do your best to get yourself as close to the first situation as possible.
You never want to get caught in what I call "squeezing" or squeezing. This is a situation where your choices are extremely limited and you are forced to make some suboptimal choices due to certain restrictions such as finance, deadlines or other disasters. So, what can you do to improve your status?
First of all, you can make sure you don't despair. Don't quit until you find another job – even if your boss is a jerk.
Try to save several months of daily expenses at all times. Anyone can do this, which will save you from the many squeeze situations in your life. (Trust me.)
If possible, try to apply for a job through a letter of recommendation.
Be well prepared for the interview so that you can get the best performance. If you complete the interview “excellently”, your status will be much better than barely passing the interview.
See if you can get multiple job opportunities at the same time.
Make sure you understand the job market, the companies you are negotiating with, and the salary information we talked about above. Knowledge is power. In any negotiation, the party with more knowledge is in a better position than the party without knowledge.
Build a good reputation. The better your reputation, the better your status will be. This is one of the main reasons I advocate that every software developer has regular updates to blogs and learn some basic marketing and branding skills.
As long as you begin any negotiation process, evaluate your status and the company you are negotiating with.
Remember I said that knowledge is very important in positioning? One of the biggest knowledge you or a company can have about you is salary information.
In almost any negotiation, the first person to report the number will lose, or at least be at a clear disadvantage.
In no case should you disclose your current salary and you should never say what you want until you get a job offer.
Yes, I know it's easier said than done. Yes, I know the company will ask you directly about your current salary and what the job you are applying for, but there are several ways to solve this problem.
First of all, if someone asks you what your current salary is, you can say that this is confidential information from your current employer, and you won't feel that it is correct to say it.
You can simply say you don't want to say it. If asked why, you can say that you think the entire compensation package includes benefits and other non-tangible programs, so you don't want to talk about it just with salary.
You can also take a more straightforward approach, simply putting you feel that talking about your current salary will put you at a clear disadvantage when negotiating the salary for the job, because if your salary is significantly lower, you will get Below your due salary, and if it is significantly higher, you may not receive a job offer you may have considered.
The exact same advice can also be applied when someone asks you to say the number of your current salary expectations. Also, you can say you will consider any reasonable offer, or you want to know the entire compensation package instead of just saying arbitrary numbers.
(This is actually a very clever thing to do when you consider how much the entire compensation package has on the hourly value of the two job opportunities we've seen above.)
The following is an example of this topic in my blog post:
Suppose you apply for a job, you expect the salary for that job to be $70,000. You got the job and the first question you were asked is your salary requirement. You declare that you are looking for something about $70,000. Maybe you're even smart enough to say some range between $70,000 and $80,000. The HR Manager immediately offers you a salary of $75,000. You shook hands, accepted the deal and were so happy – there was only one big problem: the HR manager budgeted $80,000 to $100,000 for the job. Since you first quote a number, you may end up losing up to $25,000 per year. Ouch.
In almost all cases, you should bargain when you get a job offer. This is called arbitrage situation, because there are few shortcomings and great benefits.
I mean, you have little risk, but you can get a lot of benefits.
It is rare to cancel job opportunities just because you bargain. In most cases, their worst thing to do is to say “no.”
So you should almost always make some kind of counter-offer.
What kind of bargaining you make will depend heavily on the situation and background. However, before you engage in a negotiation, you should have a clear goal in mind, what you want to get from any negotiation and the minimum you are willing to accept.
This will make it easier for you to know what your counter-offer should be.
I also learned that when it comes to negotiation, it is usually the one who makes the biggest move or concession that ends up losing.
I am negotiating a settlement in arbitration in one of the few legal disputes that I have to go through seriously in my career. The initial loss to me was about $10,000, but my attorney asked for the initial settlement of $50,000. The first round of negotiations ended with the other party refuting our $50,000 request with its own zero dollar offer.
My tendency is to immediately lower the demand to about $25,000 so that he will at least start to raise the offer. To my shock, both the judge and my attorney agreed that the best figure in this case would be about $45,000.
What happened next was magical. Suddenly, we were considering a $9,000 counter. Again, I tend to bargain around $15,000 to “confession.”
My lawyer and judge agree that a return price of $39,000 would be the best number. This continued back and forth, and the other party kept raising the offer, and we barely lowered the offer until we finally reached about $16,000. (Remember, my initial goal was only $10,000.)
What I learned from this negotiation is that you should be very careful to lower the price you want and try to force the other party to increase the price.
I also learned that by having someone represent you, through the power of an agent, you have a greater influence than representing yourself. So don't be afraid to bargain, when you bargain, know what you want, the goal is much higher than that number, and then slowly lower it.
And don't be afraid to make multiple bargains.
has a limit. I probably won't do it more than two or three times because then your future employer might question how much you really want the job, but you should do it at least once, in most cases twice.
When you are negotiating, don't just negotiate on salary.
Remember how we break down all the components of job opportunities and actually calculate the hourly wage difference between job opportunities A and job opportunities B? Even if job offer B pays $10,000 less, it is much better than job offer A.
If you only negotiate on salary, you will lose a lot of negotiating ability.
It is important to remember that different aspects of the transaction have different values to the different people involved.
While salary may be very important for your future employer, as they have a set range and HR policies that prevent them from exceeding this range, they may be on leave days, medical benefits or some other possible as salary More or more affecting the allowances of the overall transaction are more flexible.
It is crucial that you not only look at each component of a compensation package or job offer, but also negotiate as many aspects as possible if you want to maximize your chances.
You can even negotiate working hours in advance. It is entirely possible to negotiate that you only work up to 40 hours a week, working in a small company where most employees work 50 and 60 hours a week.
This is not unreasonable either.
Negotiating things like this can be very valuable, especially if you can use those extra time for other purposes.
The key is to negotiate on all aspects. You will have more resources available and you can get more total compensation than just negotiating on salary.
One of the best negotiation strategies possible is to put time pressure on the other party—artificial or real.
You feel rushed when you are under time pressure, so you are more prone to making bad decisions.
You will notice that used car salespeople and timeshare salespeople use this strategy heavily and put a lot of pressure on them. Make sure you always have time to think about and think about your options.
One of the best ways is to ask or simply say you need more time.
Just because you receive a job offer, its deadline is three days later, does not mean that you have to make a decision during that time.
If you need more time – or if you are waiting for another job offer, see below – just say you need a few days to consider this job opportunity.
If the company you are working with is unwilling to "cooperate", you can try to make a fairly high bargain at the deadline.
This usually buys you more time because they have to come up with another offer and give you more time to consider.
Just make sure you don't make hasty decisions based on time limits. In many cases, giving up is better than making hasty decisions.
If you are lucky enough to be in multiple job opportunities, you may feel stressed because you don’t know what to do.
It's great to have the right to choose, but can you compare your choices to each other? How do you do this?
First of all, if you do it right, you should have multiple job opportunities. Try to have multiple job opportunities at the same time. Schedule your interview and apply for a job in a way that maximizes this potential.
In the real estate industry, some savvy brokers will "pre-sale" the home by promoting the date of the home. When that date comes, they receive multiple offers at the same time and can often trigger bidding wars.
Therefore, having multiple job opportunities is valuable, but you have to practise with caution.
I think the best way is to let the parties involved know that you are indeed considering multiple job opportunities, but do not use or disclose that information directly to all parties.
I mean, you should be honest about other job opportunities you are considering because you want to look for the best opportunities you will have in the future and where you can contribute best.
This is completely reasonable and will put some pressure on potential employers to give you the best job opportunities possible and increase your value in their eyes because you are "hot goods".
However, you shouldn't go to a potential employer and say, "Well, companies like this and that offer me a holiday of $X and a Y quantity, so you need to at least provide me with Z. Also, they have Buffet restaurant. What do you have? "It's a very good way to get a pending job opportunity withdrawn and have them say, "No, thank you."
No one likes feeling that someone is putting pressure on them.
It is one thing to be honest about you having multiple job opportunities, but it is another to use this information to try to intimidate someone and force them to make a decision.
If a potential employer asks how big other job opportunities are and what you are considering, it may be fine to reveal some information, but you have to be very careful to do it in a way that doesn’t seem to be self-righteous.
Action with caution and consider specific circumstances and background.
Ultimately, the real value of having multiple job opportunities is not directly dependent on comparing job opportunities with each other, but on having the right to choose. Having the option gives you the most valuable negotiating position: being able to give up.
When you have two or three job opportunities, you can confidently negotiate hard without worrying about losing one or two job opportunities. Remember to be cautious and not be a jerk.
Through the technology I’ve covered in this article, you are better prepared to negotiate a pay plan above the market average than most software developers I’ve met in the industry in 17 years.
But I just touched the surface of the steps you can take to further develop your career as a developer.
In fact, I have written a whole book for developers who want to improve their career skills and increase their income while doing the job they love.
It is known as the "Software Developer Career Guide". For more information, click here.
You can also read two other excerpts from the previous book in SitePoint:
It is important to negotiate salary in a strategic and professional way. First, you need to investigate the average salary for jobs in your region and industry. This will give you a reference benchmark. When discussing salary, make it clear what you expect, but also show flexibility. It is important to convey that while salary is important, it is not the only factor you consider. Show enthusiasm for the position and company and be ready to discuss how you can create value for them.
The best time to discuss salary is after you receive a job offer. At this point, the employer has decided that they want you to join their team, which puts you in a better position in the negotiations. But if the employer raises this topic early in the process, be prepared to discuss it.
If the employer is unwilling to negotiate salary, consider other aspects of the negotiation job, such as flexible working hours, additional vacations, or professional development opportunities. If employers are still reluctant to negotiate, this could be a red flag about their workplace culture.
Even if you are new to the field, it is still important to understand your value. Investigate the average salary for entry-level positions in your area and consider your education and any relevant skills or internship experience. Discuss these factors confidently in negotiations.
Some common mistakes include: not conducting sufficient surveys on average salary; not considering the entire compensation package (including benefits and allowances); and being unwilling to negotiate aspects other than salary. It is also important to avoid appearing hopeless or unprofessional during negotiations.
Usually, salary renegotiation may occur during the annual performance evaluation period. However, if you take on more responsibilities or achieve outstanding results, you may need to ask for a salary review at other times.
Yes, remote employees have the same right to negotiate their salary as employees working in traditional office environments. Consider factors such as the cost of living in your area, the nature of your job, and the market price of remote software developers.
As a freelancer, your negotiations are more about setting fair prices for your services. Consider the complexity of the project, the time required, your professionalism level and the market price of similar jobs. Make clear statements about your prices and be ready to justify them as needed.
If you feel you are underpaid, it is important to have a frank discussion with your employer. Be prepared with evidence, such as industry average salary and a list of achievements and responsibilities you have achieved. If your employer is reluctant to adjust your salary, it may be time to consider finding a new job.
Improving negotiation skills requires practice. First set clear goals for your negotiations and practice conveying them confidently. It may also be helpful to have role-play negotiations with a friend or tutor to get feedback and improve your approach.
The above is the detailed content of The Software Developer's Guide to Salary Negotiation. For more information, please follow other related articles on the PHP Chinese website!