This. I get the impression that most software devs don't make an effort to learn this incredibly valuable skill. It doesn't even have to be haggling, per se. Just asking for a higher salary is often going to increase it by thousands of dollars. It just boggles my mind at how so many people will leave so much money at the table...
General life rule that so many people seem to have zero clue about - you only get what you ask for. Instead, so many people turn into passive aggressive assholes or sit in silence and stew. If you want more money, ask for it (in a polite professional way obviously). If the company says no, you now have a clear next step.
As an employer, I do.
I once made the mistake of spending a lot of time interviewing a candidate assuming that their salary expectations would be around market rates...they weren't. This was years ago and it chaps me a bit to this day that I made such a rookie blunder. I won't make that mistake again. I ask for a range right off and give one in return. This saves a lot of time if expectations are way off.
It's like buying milk. I couldn't tell you exactly how much I could buy a gallon of milk for right now (without looking it up). But I could tell you that it is for around five or six dollars. I could also tell you that organic milk is a bit more and the store brand is a bit less. I could also tell you it is likely to be a bit more in a small, boutique store than a large chain store and cost a bit more in the middle of NYC or SF than it would cost in the outskirts of St. Louis.
In short, I know enough about the cost of milk that if it is priced at $16 a gallon or $1.50 a gallon that it is unusual and, despite not knowing the exact 'normal' cost of a gallon of milk, that I can assume I can walk away and get some somewhere else in the market for a 'normal' price.
I think most people are in my shoes when it comes to milk and I think most employers in tech have a pretty good idea what a normal salary for a position is, especially those who have written checks for those positions for a while.
If you are finding that is not the case, I would wonder why.
The "10X developer" may be a bit of overhyped mythology, but underneath it is the very real idea that developers vary enormously in their abilities and the amount of value they can add. While the variance in their salaries doesn't capture the variance in their productivity, perhaps, there are many situations where there is profound business sense in paying one developer 2-3x more than another.
The problems are: (1) Everyone thinks they're that 2-3x guy; (2) office politics would sooner or later lead to the news getting out and a profound sense of injustice spreading like a wildfire.
I've had employers think that $80k was a reasonable offer for me (when I was making $200k).
Otherwise, what I'm talking about is the fat part of the salary curve...there are always going to be interesting situations at the edge.
It's like mechanics: F1 mechanics make a hell of a lot more than your average wrench turner (for good reason). If you need someone to look at your Corolla you don't need that extra skill and you couldn't afford it even if you wanted it.
I've seen way too many companies where they have 3 or 4 developers doing work which 1 competent developer could do, but they're unable to hire or retain competent developers due to poor pay. They'd actually save a lot of money by paying better.
But I really like that you approach it this way - practical, sensible, and acknowledges that both parties' time has value.
That's comically naive. External recruiters routinely share candidate ranges with employers.
Believe me, if I told an external recruiter I was looking to make X and they sent me on an interview and I got a job offer at 0.5X, not only would that be the last time we ever spoke but wherever I eventually landed would not be using that recruiter or their firm ever again.
I can't think of a job I've been contacted about in the last 15+ years where I didn't know what the salary range was before I even agreed to have my resume submitted.
I won't object.
To take a silly but illustrative example: if I'm looking for a javascript developer, I don't care if the person I'm interviewing also has a law degree from a top tier school and can craft airtight patent applications even if I may have some use for that skill. I am hiring for a javascript developer. That is the role I need filled. I will offer a salary range based on that need.
It is a silly example but I see the issue so often: someone will apply for a role and then expect to be compensated for their other skills. While, sometimes, it may be worth it to do a bit of management gymnastics and get someone brilliant through the door and find out how to fully leverage their talents later, most of the time that's just wishful thinking on everyone's part.
How often does your eventual accepted offer land at the high end of your offered range? How often at the low end?
I ask, because it often seems unproductive to negotiate within-range on merits. If you're willing to pay up to X, I as a candidate am going to expect that amount. Anything less is letting you, the employer, capture the surplus...
I understand the concept of probabilistic valuation of risks/opportunities of a given candidate, and if that were practically quantifiable in the real world, I agree that it would represent a sound way to price an offer (provided you also factored in the cost of losing a candidate and having to put more resources towards finding an equivalent or better candidate)... [1]
Unfortunately, in practice, a candidate has to be evaluated more coarsely as "good enough to hire" or "not good enough to hire". There's no way you could in good conscience employ someone who couldn't do the work - even if they came at a discount. That means that there definitely is budget surplus any time you hire someone at less than your maximum budget. There is a fixed amount you're able to pay to get the work done, and that is at the max of your budget range.
Strategically, then, the max of the range offered represents the minimum a qualified candidate should target in a negotiation... Your mileage may vary, of course, with the skill of the negotiator.
[1] By the way, I highly recommend Algorithms to Live By for an interesting discussion around the use of such methods in practice.
Oh, if it was only so simple as 'can do the work' | 'cannot do the work'!
It is, of course, a very course and rough estimate but it is more like 'This person is likely to be great! They will not only do the work but surprise and delight me and pull our organization forward more solidly and quickly then we even hoped. We are lucky they happened to be looking just at the time we need their skills!' or 'This person looks like a good candidate but they tend to jump jobs on a yearly basis and has experience in C# rather than Java much less Scala but we've been looking for a while and we really need to get started and they seem smart enough to get up to speed.'
Point is, it's a complicated process with complicated factors.
Also, there is the wider market to consider. If I don't think a candidate can go out and get another job for the same price or more, I am unlikely to offer a premium on top of that market price.
So I have to disagree; skilled jobs are not binary in nature -- the max of the range offered represents how much a top tier candidate that fits well with the position should target. For those others without the same risk/reward profile or market power, they will have to keep from overselling themselves and take those factors into account.
If you like Algorithms to Live By, I think you'd enjoy 'How to Measure Anything' which really gets into the nitty gritty of how to reduce uncertainty and how even modest reductions can lead to much more solid decisions with these kinds of inherently fuzzy and complex problems.
If I tell you at the beginning of our conversation 'The salary for this position is between $80K and $120K depending on your experience, education, and demonstrable skill etc'...
Throughout the course of our interview it is revealed that your education is a good fit for the position and your experience, while decent and potentially transferrable, is not a great fit for the position. Also, the technical part of the interview was good in some areas and poor in others (though I suspect through mere ignorance and not raw ability) and you have no public code under your belt that I can examine. But, you seem to communicate well and get along with the team.
Well, you are a good candidate but represent a significant risk relative to some other candidates. I could hire you and it turn out that those skills are not as transferrable as I'd hoped. You could take significantly more training than I was expecting for the role which is a cost to me.
The 'surplus' goes toward the expected cost of the risk. It is possible that you could find a better fit employment wise and that I could find a better fit employee wise but that carries its own risk. We both weigh all of that call it good and are happy how it turns out. Or we don't and the search continues.
I wish more employers were willing to do that. Many that I've talked to want the candidate to state their salary expectation, but aren't willing to say what range they are looking to pay.
I also don't think salary is everything - far from it! Yet I've never had a problem saying "I believe my market value is $XYZk, however if the culture, team and product is a good fit for me then I'm sure we'll be able to find a salary level that works for both of us."
Normally I say this right off the bat and have not yet had bad feedback about it. I don't see anchoring as a psychological trick, rather an opportunity to save both you and your potential employer a lot of time.
Also, even if a company can't hire me at the moment due to real budget constraints, they might be able to do so in the future, or perhaps one of the people I interviewed and impressed enough to get to the salary negotiation phase will remember me when they move to another company and want to hire me then.
If I name a number way out of their range first, though, they could reject me right off the bat, and I'd never get an interview in the first place, never get the practice, and never get a chance to impress anyone. All of these are worth more to me than the chance of a salary negotiation going sour because I wind up being too expensive. Besides, I'll always have the chance to decide whether I want to work for the company despite them being below my ideal salary. Salary isn't everything.
As for anchoring, that might work if you're negotiating with novices, but many employers have professional salary negotiators (either HR or recruiters themselves) who know about anchoring, and they're not going to get fooled by such psychological tricks. If I don't reveal a number first, however, they are forced to name one, and then the ball is in my court, and I can negotiate up from there as I see fit. There's really no downside.