To chime in with my own anecdotal opinion that is likely to anger some people... in my experience most developers do their best work after about 6-8 months of starting a job at a new company, and that comes to an end after about 24-36 months of working at the same company. After that the vast majority of people just stagnate, get complacent, the job stops being interesting to them and they move on.
After observing this I don't really mind hiring people to work for 2-3 years and then have them move on to another role, and most people I hire I do so with the expectation that I'll get a good two years of work and not much more.
A very small percentage of people continue to improve over the long term, and those people I am happy to continue increasing their pay, but I don't really go out of my way to retain employees and I don't think it's particularly worth it to do so.
This blog post mentions a kind of impact based compensation structure, and while I can respect the idea behind it, I am skeptical that they've managed to find a deterministic and impartial way of measuring "impact". I don't presume to have such a system so I pay based on what I observe in the market and let the market decide what the value is of software developers. For example, I genuinely don't know if software developers have more of an impact than the product designers, or the legal department even though I pay software developers much much more. What I do know is that it's much easier for me to hire a competent lawyer or UX designer than it is to hire a competent software developer and there are many more competent lawyers and designers out there... so I pay them less, regardless of whatever objective measure of impact may exist.
I would look at inverting the causality there. If your data is accurate, I think it's better to say, "Most companies create developer jobs that get boring for people after 24-36 months."
I was chatting with a Trader Joe's cashier Sunday. It turns out they change jobs every hour. That was a surprise to me; when I long ago worked in a grocery store, I was assigned to one position for 8 hours for every shift. Why does Trader Joe's do it? To keep things interesting: "She tells Money that the change in jobs during shifts helps to keep things interesting for employees. 'It's perfect because it breaks down your shift. You don't get tired doing one repetitive thing,' she told them." https://www.mashed.com/175743/workers-reveal-what-its-really...
If Trader Joe's can do it hour by hour, I think tech companies can do it at least every year or so.
I'm hiring right now and one of the major draws for the good people I'm talking to is the chance to do something interesting. If that's why their coming, it's unsurprising that I'll have to keep giving them that over time. For us, and for most places I've worked, I think that's doable.
You're not really making an independent measurement here. You see developers "stagnating" and moving on; how do you know that's not caused by lack of pay increases and other things you're doing (letting people pick new projects, for example, to keep them interested)? Maybe if you did "go out of your way to retain employees" you'd have employees who end up making your business even more successful during their longer tenure.
By retaining a person who has "stagnated" after 3 years (setting aside the ambiguity of what you mean by "stagnate"), you avoid:
1) Three years of lesser performance from the new employee as they climb that curve
2) The very real risk that your new hire will not be successful, or if they are successful, will not achieve the same level of performance.
Also, I invite you to challenge what you consider "stagnation". It is not possible to continue linear improvement in a given role: good employees achieve mastery, and while they will still be improving that might not be evident to their managers who are looking only at work outputs. If a company does not want employees who are masters at their task, but rather want people to move up or move out (counter-productive as that might be), then it is literally middle management's job to find new roles for successful engineers, and I suppose fire the previously successful engineer if they're not up to the task. Complaining about an engineer "stagnating" in the same role after they've mastered it is just lazy thinking and lazy management.
Yes, it takes about 6m in a medium to big organizations to figure out what to do and with whom you have to speek to get stuff done. And for 2 years everything is rosy. Then you speak with you colleagues that changed jobs and find out that their income is 30% to 40% higher. That will, of course, put a downer on your day/week/quarter/year. You have 2 options, speak with your current company about compensation or leave. I tried the first option (admittently a bit late, but I did mention the problem in our review talks and other talks) after I found out that my income was 40% lower than colleagues that left 1 year before (was 3 years and a half at this company and had top marks every year, big company, a lot of cash to throw around). I was offered a measly 5% after being dragged in 4 meetings about how great I am. Left and almost doubled my income in 2 years. This is all anecdotal, but I hear it from everyone around me, you HAVE TO SWITCH jobs every 2 years, you can stretch to 3, maybe. Of course, during the last years you won't deliver as much, you have to prepare for intervews and such. This was of no benefit for the previous company. Over my 4 years there I've seen how we were bleeding knowledge that we never got back. The company didn't do so well, the thing I worked on just died after everyone left 6m after me. It's a shame, it could've been a nice thing compared with what I see offered by the competition.
I think there's also an issue that a software engineer's job changes as they're more tenured at an organization. When you're newer, no one expects anything of you other than to come up to speed and build new stuff. If you have a project that doesn't require deep knowledge of the existing systems, push it to the newer guy.
Only once you have deep knowledge of the systems you work with does it really make sense to give you work like a complex redesign of a group of components in an online system. And you then have a responsibility to help new team members learn. You do more code reviews, and more consulting on projects for which you are not a primary contributor. And you get ugly projects that are related to your area of demonstrated "expertise". Is that "slowing down"? Or are you just doing different kinds of stuff? And is it because the engineer stagnated, or that the organization created a morass around them?
This ignores something very important: tribal knowledge.
Truth is, losing a tenured engineer carries a MUCH larger cost than HR and some managers seem to understand-- these engineers understand the nuances behind why certain decisions were made, what kinds of things tend to work and don't, minutiae of various systems that simply will never get documented, etc. Not to mention the influence they can carry in the org.
You're not wrong that a lot of engineers stagnate after a few years... but it's a big logical jump to put that blame on them rather than the org they're joining.
That said, I like to always call out that there are "developers" and there are "engineers". The majority of software roles call for the former and these tend to be more "replaceable". It's harder to say that for the latter where they are involved in more strategic technical decisions.
I'm not fully convinced that this is just about the devs. 2-3 years is also about how long it takes for a nascent project to transition into a mature one, and when that happens the culture and energy of the team tends to shift. The same dev that thrives in one setting might end up out of place in the other.
I agree with you that most developers do their best work after 6-8 months and that developers get less productive after 24-36 months but for totally different reasons. Developers don't get 'lazy', 'bored' or 'comfortable', they get overburdened by the company.
It is common knowledge that the average developer leaves after the 2 year mark. When that happens, everyone else is left holding the bag and they become the new experts.
Companies are full of self created abandonware.
Another person leaves and it is now two extra things that the vet has to become the expert on. Then three, then four and on and on. Next thing you know, your vet isn't getting any work done because they are holding too many bags. As the expert, they are in too many meetings trying to keep other people productive. They are pulled into too many critical issues and they are trying to mentor new developers in your ever revolving door of new people.
But they are unproductive
No. They are keeping your company afloat and you aren't compensating them for it.
While I think it's an organizational failure, even if folks aren't "growing" after 36 months, I definitely think there's institutional knowledge they have that helps them be more effective... the more time that elapses, the more of that institutional knowledge is lost and not documented.
Obviously it's not great to have companies hanging on by the thread of a single person's knowledge over 10 years, but I feel like at a lot of companies (especially smaller companies), this is the reality.
> “most developers do their best work after about 6-8 months of starting a job at a new company, and that comes to an end after about 24-36 months of working at the same company”
From what I’ve observed, the reason for this is not that people intrinsically lose the motivation to do great work.
Rather, often they realize that the company’s ability to reward their performance doesn’t scale with their effort.
Company’s have to delicately balance incentivizing performance of newer employees vs. risking alienating older employees who probably have a lower base rate but are key to the company’s daily operation.
The schelling point eventually settles to an environment where people surge for a few months and coast while doing the minimum amount of work.
This is especially true in a smaller company where cash flow may be constrained. Though the smaller companies often have more flexibility to offer non-monetary rewards like an overblown title or growth opportunities.
The “optimal” strategy for the company is to overpromise rewards to new hires to get them to do most of the challenging work while doling out minor incentives when needed once employees are indoctrinated and somewhat burnt out.
> What I do know is that it's much easier for me to hire a competent lawyer or UX designer than it is to hire a competent software developer
I'm curious if you grill the lawyer on some abstract topic from their undergrad courses (possibly 20 years ago) and make them write it perfectly on a whiteboard? Meaning, the same way software developers get interviewed?
Or do you look at the lawyer's professional experience and hire based on that?
It's easy to hire people when you make it easy, it's difficult when you put up artificial barriers to prevent the hiring.
I have the opposite observation. The first few years are needed just to learn a domain. Productivity doesn’t begin to take off until after a few years. If no one had worked 10 or 20 years in my team we’d struggle to get anywhere.
The impact of new hires can still be great when it comes from bringing fresh ideas and perspective (e.g processes, tech knowledge) and that obviously fades as everyone with a long tenure at the company has used the same tech.
> (...) that comes to an end after about 24-36 months of working at the same company. After that the vast majority of people just stagnate, get complacent, the job stops being interesting to them and they move on.
Or, another explanation, you are mistaking cause and effect.
Maybe the people figure out they could be earning so much more somewhere else but they are unlikely to get the kind of raise at their current place, so they get disillusioned and demotivated?
And then they change the job getting the significant raise, further reinforcing the behavior. Now they join another company fully expecting the same thing to happen in 2 years.
I'm going to make a suggestion for the cause of your observation.
I think many people come into a job for a specific project(s) during which there is a ramp up period of understanding the requirements, limitations, team, how the company works, getting to know people (6-8 months).
Then after working on that project, delivering it, iterating on it, tuning it, working through potential production support issues and some scaling items...in many cases the vast majority of the work is done (2-3 years).
At that point, a few things happen because this developer is ready for a new project or new challenge, as are most of the people who were involved with that project.
Their options are:
- Find a new project at the company and restart the learning period as they transition in a potentially lateral move. If this happens, it's unlikely the company is going to give them a sudden compensation boost when in the eyes of management they're continuing to do their existing job.
- Seek training related to some advanced problem that they solved to become the company's expert on the subject, in which case the company will likely pay for the training but not a subsequent boost in compensation (because in their eyes...they just paid for the training)
- See how well they have marketed themselves to find out if the company has recognized their talent to promote them into a higher level position with an equivalent pay bump or potentially managing a team. The only problems is that you can only promote so many people, so this person will be the exception and not the rule.
- Update their resume with the newly acquired skills and have somebody else pay them market rates to start a new project at a different company, using their current job as leverage to get a significant bump in compensation. Meanwhile, you'll be paying new market rates to hire the replacement.
It's no secret why people often just jump jobs. You've finished one project and you're going to transition to a new one anyway, getting a fresh start can be a good choice. Additionally, no matter how much people like their situation in one job they will end up building up frustrations with certain people and/or management over time. As long as those people are still around, it will increase their likelyhood of leaving.
But ultimately, you're looking at the likely timing of concluding one project and then exploring options for what's next. IMO, that coincides with your timeline.
Totally agree, that's exactly how it works for me.
I join a company, work hard the first year to get a promotion and do the fun stuff, after that, I relax and stick around to vest most of the stocks and leave around the 2nd/3rd year.
I have seen so called "architects" at big co that had been there for decades bringing absolutely no value to the table. And always asked myself why would the the company retain, promote and pay these guys big bucks. Nonsense.
I call them : the legacy guys.
The only thing I can think of is that the "legacy guys" retain the memory of all the legacy stuff, and the ability for them to maintain that piece of legacy/core/monolith piece of software that no one dares to touch.
I guess that's valuable for the company, but not certainly for the employee.
They stagnate exactly because by working on that legacy stuff they can rarely learn new tech, thus they wont be able to find a job at that level anywhere outside their current company.
What came first, the chicken or the egg in your scenario? Did they stop doing great work because the rewards didn't match? Or did you stop matching because they stopped doing great work?
> the vast majority of people just stagnate, get complacent
Even if you're right - 100% of the time, about 100% of people - the value of having the one guy who remembers why it was done this way and how it was fixed last time it broke available to look at it when it needs looked at is priceless.
I think there's more variables at play though. A person who has been at a company 3+ years has figured out how to be effective in certain areas, but is also now asked to be effective in a much wider range of areas. They are asked to maintain something they wrote in their first year, they are asked to attend meetings or respond to emails because they have the knowledge and influence, they can't start anything new because they are so pivotal to the thing they're currently doing. And yeah, these things are important to the company, but they make the worker feel like they're stagnating. The company starts to get in their way and they feel like the only way to do something they find interesting is to leave.
Companies need to give engineers the opportunity at a clean slate. Let them shed responsibilities and pretend they're just a very competent new hire with the freedom to start working on whatever they want to. If it's a larger company, you can usually transfer to another team somewhere, but you still get pinged about stuff you never want to spend time on again.
3 years is also the amount of time it takes to become the resident expert in one of the company's Scary Basements, and then both your productivity and morale hits the crapper while this tired old beast that nobody wants to support you in modernizing needs fixes and tweaks.
> that comes to an end after about 24-36 months of working at the same company
Have you looked into why?
The one job where I stayed over 10 years was the one where my expertise was highly respected (large degree of decision-making autonomy, no micromanagement via agile) and I was able to fluidly change projects every 2-4 years. The pay wasn't that great but it never mattered because the job was so rewarding.
Most other jobs just micromanage one to death and stagnate career, so a couple years of that kind of abuse is all one can take before moving on to the next deathmarch.
I find the biggest problem I have is that as time goes on too many people come to recognize me as a person who can likely solve their problem. Somewhat ironically this makes it more difficult to accomplish things over time because I'm constantly getting pulled into things to give my $0.02.
I fully recognize that some of this is my fault and possibly poor boundaries and time management. But it's easier to just leave every few years and also more lucrative. So there's zero incentive for me to stop this from happening.
This is ridiculous. I would prefer being at my current job, leverage my tribal experience to build things (and I have specific things on my mind) better and faster.
If I pitch this to my CTO, he will agree that using my knowledge to build things better and faster aligns with business goals.
Only middle management rationalizes theories such as you proposed. Middle management sometimes just forgets what is the goal of their job and instead focuses only on their actions (self obsession), ego and the presentation of success. An example of middle management self-obsession is your use and throw mentality. Middle management does this because they don't actually listen to their reports. Managers think they are on another dimension and don't need to hear anything from anyone.
A really competent middle manager would know that senior engineers, especially ones with tribal knowledge are the real 10x engineers in practice. Not because they type fast, not because they are hungry and energetic but because they can process situations and circumstances faster in their head to yield results.
If I were a middle manager, I would do my utmost to retain trustworthy people around me. It's almost a no brainer productivity boost.
My anecdotal opinion is that the first year it's important to show that you are productive. You cut the Jira tasks into extremely small ones and seem very productive to management because tickets get moved, but it's all smoke and mirrors (hell, you haven't seen half of the tech stack, and there is little documentation on the architecture most of the time).
A senior developer on the other hand might say they didn't do much because they think "it was just small things that I've done before". You really have to look at the commits.
Companies have been bankrupted because of the "let's just get two new ones"-mentality, not seeing that the lead time for developers to become relatively productive by knowing the ins and outs of large codebases is very, very long (for backend development, frontend is more cookie cutter).
IMO I think your hiring is broken. You should look for things like willingness to learn and ask about previous jobs to see if the candidate experience stagnation. Is your company really getting a decent ROI after only 2-3 years of an employee in a specific role??
>there are many more competent lawyers and designers out there
Curious if you could elaborate on how you came to this conclusion? According to ONET [1] there are 819k lawyers in the U.S. but 1.469MM software programmers.
If you come from a software background I wonder if it’s easier to spot an incompetent programmer than an incompetent attorney which could bias the heuristic. Or do you think there’s something else at play that makes the proportion of competent software developers inherently much lower? E.g., there’s no “bar exam” for programmers to ensure a basic level of competence
"in my experience most developers do their best work after about 6-8 months of starting a job at a new company, and that comes to an end after about 24-36 months of working at the same company. After that the vast majority of people just stagnate, get complacent, the job stops being interesting to them and they move on."
Thanks for sharing this, I think you are probably "right" even though what you said is not an easy/popular thing to say.
What is your observed sample size on this? Could you elaborate on how you see people stagnate, and why you think this might be?
I'm not convinced this isn't explained entirely by compensation. There are perhaps a dozen large tech companies at which an only moderately remarkable engineer can make $500k a year right now. That number has gotten bigger every year for the last decade at least, and the much larger pool of "every other software company" is increasingly falling behind. You should follow up with your exits a few years down the line and see where they end up long term. I bet a few of them will have retired - how often do your engineers retire at 35?
This absolutely happens. A lot depends on the company and role, but in my experience after 24-36 months you tend to become known more broadly in the company and are passed around as “person who knows about x” and these type of interactions characterize most of your days. It’s not a bad spot to be, but definitely not the most productive arrangement.
It may well be true, but I doubt it for companies like AWS, which has enormous infrastructure, many implicit and explicit processes, and a peculiar culture to run such processes and leverage such infrastructure effectively. Losing good people means losing guardian of such culture, mavens of the infrastructure, and custodians of the processes.
I was in Amazon and Google, I never saw a case where the developer stagnant before the product/management went into stagnant.
Developers just write code, and they just accumulate more knowledgeable and skills with the stuff they work on. How can they stagnant is something not obvious to me at all...
That didn't piss me off at all. But agree that might offend others. I do see myself getting stale in different shops. I kinda stopped jumping around every 3 years at this point though. I might just sit for a while to make sure there is stability going forward.
I don't really understand this article, or the current trend of job hopping. I'm from the generation where you have one job, maybe two, and that's it: I've had 7, but I really only ever wanted one good job.
For some perspective: when I left Intel circa 2010, I was a Senior Staff Engineer fighting to get promoted to Principal Engineer (followed by Senoir Principal, then Fellow, then Senior Fellow, hahaha). FYI I loved Intel for the first 10 years, and hated the last 12.
I made $130k base salary, $70k typical bonus (EB+ECBP), and stock options (most of which were worthless). This was after over two decades there, started in '88.
Recently, a friend (12 years younger than me) was hired by Intel to work in one of the ML groups. He asked if the starting salary was fair: they offered him $400k. I was angry, jealous, and shocked. I have friends that are STILL there, grinding away at sub-200k base salary after nearly 30 years, and they are too scared to leave.
So this idea of coders flitting from job to job just seems so alien to me. I'm obviously from a different generation. I don't even know what I would ask for pay if I ever left consulting. Headscratcher.
> I don't really understand this article, or the current trend of job hopping.
The answer is in your comment: your friend who started recently at Intel is getting more than double the salary of the long-timers. What's not to understand?
I remember my first day at Intel. A guy was putting his stuff in a cardboard box, never to be seen again. It was during a downsizing, and my boss reminded me how lucky I was to be an intern. "The only guy with job security."
Remarkably he's still there, and I still have other friends there, nearly two decades later. One of them writes on FB over and over about how pointless the meetings are, and complains about the stock price.
When I left, I managed to get myself an offer for the management track, via a friend on the same track. I turned it down thinking I'd probably regret it, but I decided during the internship that there was something about this apparent elevator to the C-suite that didn't quite seem right to me. The ease of being at what at the time was an unassailable monopoly perhaps seemed both too good to be true and probably hiding issues down the line, both for the business and in terms of internal competition climbing the greasy pole.
But also changing jobs every now and again has had other liberating effects. I have a lot more confidence that it can be done (since it's been done lol) but also there's a variety in seeing various businesses and people that's hard to get if you stay put. The fact that new jobs generally means more money is a big bonus on top of that. I suppose a lot of firms get a huge saving from people who don't look around much.
There's a lot of implicit loyalty here. You're very loyal to Intel even when they didn't treat you the best. Why? What happens when you underperform, will they show you the same loyalty?
Regarding the story of a long-established company having to adapt to FAANG/post-dotcom pay... I've seen a different response to that.
In this case, I was the prospective new hire, at a well-regarded large company. They had a large number of software developers who'd pulled off some very impressive technical accomplishments (comparing favorably to most any tech company you could think of), and had been doing so since before FAANG... In the offer, they made the level Director, even though the role was non-management hands-on technical IC. And the comp. people had also added an additional incentive program that wasn't standard for this level. I figured that might be to work around the company's pre-FAANG pay grades for software-ish people. The team, business unit, and SVP were great, and I was actually very anxious to move. But then the offer letter came from corporate, and turned out to be laden with surprise clauses (regulatory, etc.), and corporate was unable to provide copies of documents that it referenced as things to which I'd be agreeing. My decision mostly came down to the intuitive (besides the practical costs of the surprise eleventh-hour asks): feeling that I'd be at the mercy of any Kafkaesque bureaucratic accidents of a large institution, more than I think I would be at a certain larger FAANG, while the total comp. wasn't close enough to that FAANG -- so accepting would feel more like being a scared loser, than like willfully investing towards success.
Sounds like Intel's variation of paying close to FAANG might've been the way to get that new hire (despite whatever perceived big-established-company downsides there might've been), but at the cost of demoralizing the existing engineering staff who had pre-FAANG comp. (Who then might feel like the losers.)
Has this problem been solved by any long-established company that has employed top-skilled technical people since before FAANG, without paying competitively?
How many companies will be around in 30 years? Half the companies I've worked for in the past do not exist anymore. The idea that you could get a job and stay there until retirement is antiquated at best.
Guessing that I'm less than 10 years younger than you, I had a college professor that told my class to change jobs every 5 years to maximize income. That was in the early 90s.
I read the other replies explaining that the huge discrepancy you’ve seen should be expected. But I think it’s worth pondering if your shock & jealousy should be tempered by the ML thing. ML engineers make more than general software engineers everywhere. At least they did for a while between roughly 2015 and 2020. I don’t know what’s happening up to the minute, but ML hiring and crazy salaries seems to be cooling off a bit now as far as I can tell. Also did the ML guy have an advanced degree that your long-timer friends didn’t? That’s another way to start higher.
However, lots of folks leave for a while, get some new experience, and come back with a big boost in salary and maybe title. Give it a try if still interested.
> The hard truth that many companies struggle to wrap their heads around is that they should be paying their long-tenured engineers above market rate.
From an ethical point of view, maybe. From a rational point of view, maybe not.
Jobs are "sticky" — it's a pain to apply for jobs, arrange interviews, deal with the possibility of getting rejected. And if you do get an offer and accept you will be leaving colleagues that may be friends, risk your position being less stimulating, have to move house and/or deal with a new commute.
There is a very real salary range between "low enough that I'll think about applying for other jobs" and "so low I'll actually start applying for jobs". Employers are aware of this and are paying salaries accordingly. It sucks for everyone in that salary band but — ethics and long-term viability aside — it's still the rational economic choice for employers. Every now and again someone will quit and get their deserved 40% increase, but many will delay leaving for years, or simply put up with it indefinitely, saving employers tons of money.
Of course this may not be the case forever. It seems like recently the cohort of people who find interviewing and changing jobs more tolerable (the so-called "job-hoppers") is increasing in size. If you happen to be a part of this cohort, then congratulations, you're winning the job-market pain-of-change-vs-salary arbitrage game and will enjoy above-average year-on-year salary increases for at least the near future.
> There is a very real salary range between "low enough that I'll think about applying for other jobs" and "so low I'll actually start applying for jobs". Employers are aware of this and are paying salaries accordingly.
This is the difference between employers who play the game at a low level and employers who play the game at a high level. If you play at a low level, then you view your workers as interreplaceable cogs in the machine. You charge for soda at vending machines and balk at shelling out a few hundred bucks for a ping pong table. Sure, it's "expensive" when people leave, since their replacements are more expensive (not to mention ramp-up costs), but your perspective on your employees is how much they cost you to employ, so you try to keep that number as low as possible for as long as possible.
Higher-level players order dinner to the office every night because they understand that the price of food is so ridiculously cheap compared to the additional productivity that the only way it doesn't make sense is if you manage your employees by what they cost and not by the value of their employment. Higher level players grant their employees large raises without being asked because they understand that defensive raises prevent your employees from searching for new work in the first place. Higher level players understand that loyalty has value, trust has value, and tenure has value.
Are lower-level players rational? Sure. They're also either stupid, or of low enough relative productivity that the market will subsume them soon enough.
You laid out the exact reasons I stayed as long as I did at my last job, even after it became clear I was not happy with my compensation. (except for the moving part - hurray living in a 'tech' town with lots of opportunities I guess.) Although I am really confident at this stage of my career in my abilities and reputation, interviewing is such a pain in the ass overcoming that inertia takes a bit, and you are right, companies count on that inertia.
I've found a different kind of stickiness. I've been in enough circumstances that I now value sane management and co-workers who I like. I'm not in a hurry to leave a situation like that, because I know that it can be rare. I don't need to maximize my money; I can get decent money while minimizing my misery.
People here on work visa (H1-B) have to go through renewal of their work visa application as it is tied to their employer. This step while being fairly straightforward can add to the inertia in switching jobs.
This is a big factor. If I switch I want a 10-20% raise not because that’s very important in itself but because I’m taking a massive risk and have to endure a horrible process when switching.
My experience has been the opposite, in that sticky jobs are jobs held by people who aren't in demand. There's a balancing act for employers ("brilliant but flighty" is less desirable than "good but sticky") so it's certainly possible to argue that jobs being sticky for less-than-brilliant people is a good thing... but in my experience, jobs aren't sticky because of inertia for brilliant people.
> There is a very real salary range between "low enough that I'll think about applying for other jobs" and "so low I'll actually start applying for jobs".
True, the other side is if you're trying to hire and pay the same industry salary, people aren't going to move because what's the point? If you're trying to hire a lot of people you have to pay more than average just to get people interested.
Seeking that band sounds to me like an optimization trap as it wrongfully assumes the cost of churn from gambling it is less than the cost of turnover and growing salaries. It sounds a bit like deciding where we really need to cut costs are deep sea oil rig gaskets.
Software engineers especially can take on side projects to supplement their income. Maybe a bit less focus on the day job to reflect the below market pay. Keeps things in balance.
1. Organizations will often see bumping up an employee's pay to match another offer as some variant of extortion and it's they view this as disloyal. Never mind that the other offer clearly shows they're now below market. I didn't say it makes sense;
2. There is friction in changing jobs and companies and people will generally have a threshold for making that jump (eg they won't switch for less than a 20% raise). So over the entire pool of employees it's cheaper to let a few go than give everyone a raise when many wouldn't leave;
3. Companies have a philosophy that you do the job you get promoted to first and then you get promoted to it and paid subsequently. Worse, often it takes time for things like equity to catch up. You may get a discretionary grant when you get promoted or you might not. And it can take years of annual refreshes to get to the total comp off a new hire at the same level;
4. Organizations seem to make the standards higher for existing rather than new employees. I think this is in part to avoid level and compensation inflation;
5. Up to a certain point there is an expectation of growth. Some of this is formal (eg up to T5 at Google). Some of it is more informal. They make the determination that even though you're at a terminal level and that's fine, if you've been there for years you're probably not going any higher so you won't be one of their future leaders or stars; and
6. Diversity. Tech companies have explicit goals around having certain minorities essentially over-represented compared to the demographics of, say, CS graduates. I guarantee you such explicit goals create perverse incentives that extend to how they handle retention.
7. Tech companies (explicitly or not) are skeptical of people who don't switch jobs. People call them "lifers" as a denigrating term, for people who are just coasting. Switching jobs implies that you're hungry or ambitious (regardless of whether it's true), whereas remaining at a job shows that you are complacent.
This is a great list, to elaborate on #4, I think there's another factor at play related to the social implications of Dunning Kruger. To be specific: ones sense of ones own productivity and value to the company is not very well correlated to actual performance.
For new hires, management doesn't what their value will be, so it really comes down to market rates and negotiation based on the limited signal. If you make a bad hire you can chalk it to classic market-for-lemons problem and you deal with it via pip or letting them go.
However once someone is established, their performance is more or less well-understood by their peers. It's at this point that the disconnect between ones own perceived performance and the broader perception becomes deadly, because peers talk, and if one of them gets a fat raise and the other doesn't then it becomes a whole can of worms. The merit of the situation will get lost in the individual perceptions and entitlements which is likely to result in an overall morale hit one way or another. Sure this can happen with new hires, but it's more easily explainable, especially in the current climate where market rate has shifted a lot and so you literally won't be able to hire if you don't play the game.
Many companies do pay for people to stay, but its debatable if its worth it.
The last company I worked for gave me significant golden handcuffs. Probably 30-40% more than I could get elsewhere. They had a "cost of replacement player" policy, where they count the cost of hiring, sourcing, training over the years, etc, and come up with a number thats almost always way above market rate for people who have been around a bit.
Attrition was lower than industry average...but not by much. The reality is that in big tech, salaries are high enough that people stop caring. People left for a variety of reasons, the most common one being "I want to see how it is elsewhere" (especially from college hires who have been at the company several years). Others leave because they want to work at a startup. Some leave to join their friends. Some because they move to follow a significant other who got a job elsewhere (many prefer offices over WFH, so offering that only helps so much).
In the end, again, retention is higher, but when you crunch the numbers, its very debatable if it's worth it for the company. Worse, sometimes companies end up "competing" over it, so even if you pay a lot, the next one offers more because they know your salary bracket, then you raise yours until one gives. That sounds great for the employee but there are budgets and limits at some point.
And then there's the topic of counter offers. The uncomfortable truth is that there's very significant demographic differences when it comes to folks who use the "I got an offer elsewhere, pay me more and Ill stay". If you give counter offers when that happens (as opposed to across the board bracket increase), you quickly end up with statistically significant discrepancies, and that's not ok.
Devs also leave after completing all the meaningful, interesting work and finding there is none left. It feels good to build and launch a product - or even add features that can have an impact on the bottom line. It is something very different to work on a list of features that you know very few people, if anyone at all, are going to use. Same goes for maintenance.
> The uncomfortable truth is that there's very significant demographic differences when it comes to folks who use the "I got an offer elsewhere, pay me more and Ill stay".
What differences are those?
I tend to think that it’s a bad idea anyway. Once you’ve done it, your employer will know that you’ve already thought about leaving, so much so that you’ve already completed an interview process and have gotten an offer. Surely that must tend to be damaging to the relationship going forward (not saying that it should be, but that it often is).
Especially in Silicon Valley, there seems to be a lot of itchy feet in tech that leads people to changing jobs every 2 to 3 years because some people get bored easily and get the impression it's almost required. Historically it wasn't. And it still isn't in most industries and most places (including tech jobs elsewhere). The two larger places I've worked, 10+ year stints were, if maybe not the norm, extremely common. I've spent most of my career in three jobs +/- 10 years each.
There was an interesting paradox last time I was a people manager.
Sometimes people would leave and get a bigger raise than we'd budgeted for them for that year. But at the same time, we never took long to hire a replacement at the same budget we'd been paying them. This required us to be diligent at doing market adjustments when necessary, but also led me to some other thoughts on compensation: if we think employee A is worth $X, and they get a job offer for $X*1.2, neither company has to be wrong. Maybe there's a bigger need at the moment in the other company. Maybe they're going to be working on something more valuable to that company than they were working on here. Maybe to us they've been a solid but non-exceptional performer, but the other company sees potential for them to do more in the interview. Maybe the other company just has more to spend. Maybe they're the third best-performer on the team, and we chose to allocate more to the top two people, so can't do as much to keep them as they'd like.
You're leaving out some serious costs incurred by your company and team. The loss of institutional knowledge, the loss of expertise, business process knowledge, personal relationships that could make hard changes much easier. Sure, you hired someone for $X instead of $X*1.2 but in terms of work done you probably missed out on a lot and came out way behind.
Strongly agree, I've experienced this myself from both sides of the table.
The concept of "the market" for engineering talent is far more nuanced and multifaceted than the nice x/y plots used to correlate compensation and experience (not meant as a criticism to the author at all).
I think what this misses, which I saw in another comment, is the take here is an individual one.
If someone leaves and gets a 20% raise, while it may be an isolated incident, I believe it's more often than not an example where the market rate has shifted up and a company is slow to catch on.
While you may find someone new who's willing to accept $x instead of $1.2x, there is likely a large difference between the person being hired and the person leaving which represents the 20% discrepancy. And there's a cost on both sides that's not captured in the 20% differential.
As others have said there's the loss of institutional knowledge and know how. But the new person may also be more junior or is switching domains and so has less experience and thus willing to accept a lower salary.
It also takes a decent amount of time to hire someone new. Usually at least a few weeks. And I'm sure it can take longer. Sometimes 1 person leaving also means you really have to hire 2 people to be as effective as you were before. And of course, the new hire may end up asking for $1.2x anyway if they negotiate.
When all this is said and done, my personal belief is a 20% raise is far cheaper for retention just by the numbers.
There may be several non math based reasons for not offering a 20% raise to retain someone, but purely by the math I think its always going to be cheaper to give a 20% raise.
TLDR: I think this possibility is a false equivalency that just because you can hire a new person at $x means you're in the same spot as before.
The flaw with this argument is the assumption that the value add of a given skillset is approximately equivalent in different environments.
We see this for example on a larger scale in OLED tech, where a key OLED engineer in South Korea might be worth $250k to the Korean Economy but worth $2.5M to the Chinese economy, which is why poaching was halted by classifying the job as a national security interest.
The profit/employee ratio at Apple is over a million dollars, so a valuable tech employee there should be making seven figures. That kills MBA’s brains (and the traditional power structure), which is why the cartel worked behind the scenes on wage suppression.
Author here! I'm not arguing that software engineers should necessarily be paid in proportion to the end economic result of their employment. Although that's an interesting point for another article perhaps! Rather simply that companies tend to undervalue domain specific knowledge and forget how costly and time consuming it is to hire and retrain new team members. This should be taken into account when considering compensation structures to retain your top talent when considering the open market is always available to them.
Management tends* to undervalue software development in general, and see software developers as generally replaceable pieces. So, why bother paying above rate when even paying at rate feels like too much for many companies?
Combine that with the fact that it takes a while for the impact of someone's loss to be truly felt (and the fact that developers who leave are often scape goated), and most managers just can't get their head around the idea that a competent software developer is worth $200K/year + benefits.
Not to mention that turnover costs are mostly hidden costs; rarely will anyone attribute a problem to a single individual leaving, and then connect that fact to "we should do a better job retaining people."
*Yes, there are great places to work where this is not the case. That's just not everywhere, even in SaaS companies.
Basically, why do I get such big raises when I switch companies, but getting a nontrivial raise when at a company is like pulling teeth?
How come every company I work for is willing to give me a huge raise and reward me for my achievements at other companies, and not do the same for achievements at that company?
The discussion that followed was illustrative. But I just came to accept it as a fact of life. I wish I could find a place to invest myself in long term, but that has yet to be found...
It's important to remember the whole "30-40% raise when you switch jobs" only really happens at the beginning of your career. Your next job switch will maybe be 20-30%, your next one 10-20%, etc. until you reach the inevitable compensation plateau. I'm over 20 years into my career and my last job change was for +1% or so. No company would offer more.
If one could actually get a 40% bump every job change perpetually through their entire career, someone who starts at $100K would only have to change jobs seven times to reach >$1M. No way on earth that is happening for the vast, vast, vast majority of tech workers who job hop.
The short answer is that this is how it is in a growth industry with high talent demand. If you were, say, a grocery bagger, you wouldn’t see that kind of salary jump. The moment coding is no longer an in demand talent, this won’t happen anymore. Hope you retire before that happens.
You have to see this from the point of view of a middle-manager whose main concern is his own career and salary. First, it's much easier to manage junior than seniors, more so when you are not an engineer yourself. Also, it's more likely you get a better salary when managing a large team of junior than a small team of senior. Even better, you can become a manager of managers if there is a bunch of juniors to manage. Another problem is that an employee cannot earn more than his boss, and non-tech managers salaries cap at a certain point.
There is also the near infinite pipeline of desperate undergrads taking the first decent enough offer that lands in their lap. Wring them dry for a few years and when they leave after realizing what they are actually worth, there are 10 more 22 year old applicants ready to take their place. I'd probably bet that most tech companies outside the most glamorous operate like this. It's just cheaper and that's all most companies care about quarter to quarter, not a deep mature efficient back end or anything that experience and expensive talent brings you.
It happened to me, in my previous company, I was clearly underpaid, but the job was fine, people were nice, nothing to complain about except for the pay. Considering the situation, I looked somewhere else, found an offer for a similar job that was about market rate, went back to my company with the proposal and told them to match the offer. I was even ready to accept slightly less, but I didn't get anything, zero, no negotiation possible. I asked to see my boss the next day, he didn't even ask me why, I think I was already written off.
And I am not an isolated case. The worst part is that I am sure they lose money doing that, because when they hire people at the same skill and experience level, they hire at or above market rate. It is very likely that they hired someone to replace me for more than what I asked them.
Usually, everything else being equal, the more people move, the better they get paid.
Maybe in FAANG world, salaries really do increase linearly like the graphs from the blog showed, but in the F500 corporate and contracting world, the slope starts leveling out after 10 years of experience.
A decent and ambitious dev can definitely gain 30% salary increases after their first few jumps, but once you're at the "senior" level, it's just not happening.
In the first 5-6 years of my career, I jumped about 4 times, each with a large increase: from $55K to $80K to $100K to $120K and finally to $140K about 7 years ago in a relatively high COL city in East Coast US.
As expected, even though my knowledge and skills have really increased over the past 7 years at my current gig, the company gives only the typical 2% inflation raises each year, and there is no equity or bonus system based on seniority.
So now I'm at about $160K, which is still okay for my area, but disappointing considering somebody with similar experience and absolutely no institutional knowledge would be hired for my position at $180K (maybe higher in this market).
But I'm stuck. I can go and play the interview game. And based on what I've seen, at best I'm going to get a salary offer of maybe $180K, and of that $20K increase, I'll end up pocketing maybe $1K / month extra, as all of the extra income will be taxed at my max rate.
Is that worth leaving a company where I've earned respect, have a lot of knowledge, know is tolerable, and where I've got "credibility" and a history with senior executives and management?
It's not for $1K / month, which may even be less if it turns out health insurance has a higher deductible, or I end up having to spend $200 / month more on commuting costs.
I think most seniors hit this same glass ceiling earlier and earlier in their career - by mid to late 30's. And unless they move into management or really strive to jump to the next tier (e.g. FAANG company or finance industry), then there's no real financial incentive to jump, and a lot of risks if your current git is tolerable.
And employers know that.
Is that worth leaving a company where I've earned respect, have a lot of knowledge, know is tolerable, and where I've got "credibility" and a history with senior executives and management?
That's where you make the play of going to whoever controls your salary and saying "I've got an offer that pays much better than here. Can you beat it?" People aren't going to look at you differently for it; it's part of business.
Why are you stuck with this world if there's a clear ceiling?
> at best I'm going to get a salary offer of maybe $180K
If you get a $20k increase every 2 years starting from $160k by hopping jobs, that's way more than your yearly 2%. If you're in the right location, the only risk is to quit a job 2 months in because it's actually not what you expected and come back to a company you initially rejected, or start applying again. If you're a dev in your 30s you should have enough money to stay afloat for at least a few months, in which case this is not that big of a risk.
There's also a risk staying in the same company for very long: if you keep doing the same, using the same tech, you can become complacent and your skills irrelevant. At which point staying at your company is not really a choice anymore.
I live in coastal New England, and I faced a similar situation until ~6 years ago, when I started working for all-remote companies.
I've been fortunate to find all-remote employers who pay average non-FAANG silicon valley salaries, regardless of where in the U.S. you live. The result is I'm paid a little (+20%?) higher than I would at a non-fintech company in Boston or NYC.
I was a manager for 25 years (and stayed at the company for almost 27).
When my team was finally dissolved, in 2017, the person with the least tenure had a decade. The person with the most had almost 27 years (he and I started on the same day, in 1990).
The pay was...not so good. The corporation had some fairly lousy HR policies.
I'm told that I was the reason that these folks stayed.
Apparently, I was a half-decent manager. I hated the job, but did it well.
These were a different breed of engineer from what seems to be the benchmark, these days. They were very experienced, senior-level C++ engineers. We did image processing pipelines, and various forms of "engine" code (like that BASF ad: "We don't make the software you use. We make the software you use better."). A lot of my management style involved abstracting the corporate HR policies, and working with my team. They all had families. One actually had a serious medical issue, during his tenure. Most had to deal with various emotional and family issues.
I also completely supported them pursuing any training they wanted; whether or not it directly applied to their work with my team.
I had to deal with each person as an individual. I had to understand their drives, and work with them. I treated them all with the utmost respect.
They worked very hard. They stepped up to the plate, when it was crucial, and I let them have slack, when the dust settled.
That's great to hear that you provided an awesome space for your team.
I think we won't see this kind of loyalty much going forward though, the opportunity cost now of not changing jobs for more $ has a greater downside now that 20 years ago. House prices are beyond ridiculous, lockdowns create confusion about the next 12-24 months, the economy is in a terrible state, but somehow the stock market marches forward.
The way I see it, engineers need to make their money now or risk being left out in the cold for when many assets move out of reach from the middle class.
I don't want a yacht, I just want to own a home with no debt. Apparently that is not an easy thing for many people to do anymore.
I literally had this conversation with my boss yesterday, and I was a bit floored that they don't quite "get" it.
I'm the lead dev at a small co that does work, mostly custom WordPress, for gov / edu / SMB (mostly NGO or trade groups). I'm the senior technical staff... there's a junior dev and a "project manager who codes but doesn't read log files".
I've been working with this company for 7 years and never gotten a raise. We have "unlimited PTO" which really just means I have no idea how many days off I can take. I mostly work with the biz because it used to be quite flexible and was only a 30-hour-a-week commitment. That's become much less flexible as we lost the ability to stack hours without "approval", I've started to be the only person on-call, I now have a junior who more or less reports to me, etc, etc.
I'm looking for work now, mostly because the cost of realestate where I am is outpacing my ability to save for a down payment.
The thing that got me a bit worked up is that when I asked my boss if they'd ever done the math on what it'd cost to replacement (even leaving out the cost of training) and their response was that they were 100% sure I'd make more money at another company-- they are just paying me what they feel like they can afford.
Then they gave me an immediate 5% raise and 1.5% cash bonus.
None of this makes one bit of sense to me... if I leave, they are going to have to find someone (or several someones) who can operate containers in GCP, write WP/Gutenberg blocks, Figma->PHP WP themes from scratch, and write integrations/ imports/ scrapes for these sites they build.
I've been interviewing and know what that kind of work pays, and how much the folks charge for that... but this boss of mine seems prepared to let me quit rather than up my pay. For full disclosure, I'm making 70K/yr+ health insurance and who the hell knows how many vacation days.
It's fun to do job interviews after all this time, and pretty gratifying that folks are so interested to speak with me, but I'm a bit worried how this person is going to get the stuff done that I've been doing at the price they've been selling the work.
I really struggled with this a few years back. I was adamant that I didn't want to "play the salary matching game." My boss insisted they didn't have the budget for a raise. I didn't want to job hunt, then bring my new offer to my boss, etc. I let myself be underpaid for at least 3 years because I was sure that my results should speak for themselves. Then I got really bitter and fed up. I got a job offer that was a 50% raise. I took it to my boss and immediately our company magically had a 50% raise in the budget. I quit in the middle of that interview because I couldn't stomach the idea that he'd been intentionally underpaying me all that time.
It changed my outlook on companies and playing the salary matching game completely. While I'm still in demand, I'm always looking for a better offer. I am planning on this bursting sometime. In the meantime, I'm going to get paid.
This is because many businesses are ran from an accounting perspective.
When they give you a huge raise, payroll costs are up. Yet you won't necessarily deliver a revenue increase to match it. So it's a financial loss.
This might trigger you to leave, but accounting doesn't care about future potential events.
Similarly, I could make the point to my boss that an additional monitor, would increase my productivity by 20%.
Accounting disagrees. Hardware costs are now up 20%, which is real money spent. Yet there's nothing in the books suggesting more revenue. So another financial loss. "Productivity" is not revenue, it's an abstract concept in knowledge work.
It's a very one dimensional way to look at things, and far from a good one, but it might explain some things.
If this is what they can afford to pay and you move on then they will get to decide whether they can eliminate your position (maybe they can focus on a different part of their business and quit building custom WordPress sites) or pay more. Or get by with someone too junior to be able to do the work but hope that customers won't notice. Or maybe close the company down.
I was working on a startup that could tell an employer if their employees were looking for a new job so they had a chance to try and retain them instead of paying the huge cost of having to hire, train, put strain on the team, etc.
I talked mostly to startups between 10 and 400 people, but the problem I heard from most leaders was "if they are thinking about leaving, fuck em, they are dead to me already". I tried to reason with them, but it was fought as if held like religious belief. I mean if it's your baby they are unhappy with, I guess you can get defensive and maybe you are still in a scrappy mindset, but it was a bit frustrating for me as my idea was not hitting very well :/
My wife was considering leaving her job, but not because she hated the work, or the company, but because she wasn't challenged, given opportunity or paid for her effort, when colleagues got paid more to do 1/20th of the work. If she was managed and compensated properly, she would have been more than happy to be retained, and I imagine there are a lot of others in that scenario (but more who just want to escape their manager of course, which is also very good valuable for the boss to have when trying to retain people).
>I talked mostly to startups between 10 and 400 people, but the problem I heard from most leaders was "if they are thinking about leaving, fuck em, they are dead to me already". I tried to reason with them, but it was fought as if held like religious belief. I mean if it's your baby they are unhappy with, I guess you can get defensive and maybe you are still in a scrappy mindset, but it was a bit frustrating for me as my idea was not hitting very well :/
I've seen HR on several places referring employee changing companies as "treason", not only casually but on internal communication. So with that framing, and the expectancy of employee loyalty, I wouldn't expect retention to be a high priority.
> they gain domain knowledge that is specific to that company, and that stuff is incredibly valuable. The wild thing is that it’s only valuable to that one company!
From the engineer point of view, this is a bad deal as the knowledge they get is precisely not transferrable to another company. So staying is a risk (these skills won't even exist elsewhere) and there is a lost opportunity for the employee. They could be at another job, learning actually transferrable skills, thus improving their standing on the market.
Solution: minimize company-specific knowledge, make it easy to grok and not company-specific. To be a bit blunt: your flavour of pile of poo codebase isn't particularly interesting so why should I learn it if compensation doesn't match the missed opportunity?
Author here! My intention with "domain knowledge" point is mostly about all the non-coding stuff. Things like how your company functions, who to talk to about different issues, deep product knowledge and understanding the customers. I actually think transferrable skills grow as well, usually more on the technical side but also on the soft skills side in a generic way. I think the non-transferrable stuff is somewhat unavoidable because of the nature of products, domains, and organizations being meaningfully different.
Many engineers are on their way out when they announce their departure. If they said: "hey, I'm thinking about joining this other company for a better compensation", that would be a topic of discussion. Most engineers instead tell me: "hey, I signed a contract with this other company. This is my last day".
The other point is that money is not the only motivator (esp. in our industry). People just like change, either more responsibility, or less responsibility, maybe more autonomy or more direction, maybe different leadership, etc.
Especially for younger engineers (I'm thinking of software engineers in this case), it isn't just about money, but also experience. It is really easy to get type-cast into a specific role in the company and it can be hard to break out. One developer I interviewed spent 10 years maintaining one pearl script. Just one. He wondered why he was having trouble finding a job. Don't be that guy.
But it is also about the money. When you can get a 20% bump by switching jobs...hard to pass that up.
Unless the outcome of that conversation is a systematic review of how reward works for all employees & a counter-offer with no risk that breaking the kayfabe about the company mission harmed my future aspirations within the company, the conversation is too risky to have. The problem will be back in a year.
They don't? I was given an 11% raise (without negotiating) this year because the tech company I work for wants me to stay.
I could probably get more by leaving and finding a new job (15-25%) but 11% is more than enough to convince me to stay. Also, there are factors other than money at play, such as not having someone breathing down your neck, having coworkers who are nice, respecting your superiors, and so on.
I have a friend who recently left a position at a startup paying ~200K (which is a lot here, we're not in SF/NY) for a 145K position purely to avoid dsyfunction, stress, and incompetence.
Your anecdote proves the point. If your friend was paid more, they might not have left.
But in essence what you highlight also shows why companies don't pay to keep people to stay. Instead of paying someone money who hates their job, they might prefer paying less money to a new grad who isn't burnt out on their culture yet.
>I’ve watched talented engineers leave companies for greener pastures after painfully short tenures. I’m even guilty of this myself — I left an amazing company after less than two years to join Ethena as VP of Engineering.
Engineers can leave after months and still get jobs. You're not guilty of anything for leaving after 2 years for a VP position.
It is hard if not impossible to attribute an individual employee's performance to company growth. Many variables can impact company growth - so even if engineering does their job,product many not and vice versa.
Even if everyone does their job exceedingly well, a sub optimal strategy could kill the company. Or the market could shift. How do you account when company stops growing? If the spending will only go up, how will the company justify the increase in budget when there are bad times.
> It is hard if not impossible to attribute an individual employee's performance to company growth. Many variables can impact company growth - so even if engineering does their job,product many not and vice versa.
A somewhat related anecdote that I love: In an online lending company where I was a manager before, I had the Data Science team reporting to me. At some point, one of the interns created a variable that improved the ML risk scoring model in such a way that the loan default decreased in about 2%. That is HUGE for a portfolio that has something like 10% default. This intern's variable saved the company a tremendous amount of money... yet the company did not give him anything for an improvement that was 100% measurable in $.
What if a company actively encouraged its employees to interview at competitors, and to welcome, even expect, external offers as part of discussions around professional growth, roles, and compensation? They could call it "peer review."
The company would offload the work of finding market rates onto its competitors while potentially gaining insights into competitors' operational logic. And as a machiavellian bonus, this arrangement might depress its own employees' market rates because other companies might be hesitant to extend offers to candidates they suspect are not serious.
I notice developers who switch jobs a lot claim to do so to “grow”. But they might not really stay anywhere long enough to get good mentorship and feedback. Growth takes tough feedback that we often don’t want to hear.
There’s almost no market incentive to “grow”, and much more incentive to job hop, never leaving a honeymoon phase with an employer.
Why would you grow as a developer? It’s much easier to switch jobs for a pay raise.
The market is hot for developers, that there’s very market pressure to grow, TBH. (That is if your priority is purely financial, which often is not the full picture)
How many engineers leave for salary as opposed to other reasons?
When I started my career after the dotcom bus, salaries were quite low. At one point, I was making less at each position after yet another layoff. Then the market improved, and I was making considerably more with each new job.
Nowadays, I still job hop, but primarily because I do not like the role I am in. Companies will over promise and then never deliver. Bad managers. Many many bad managers.
On the one hand Mr. Dean rightly recognizes that longer-tenured developers bring more company-specific and domain-specific expertise to the table and they should be paid attractively to prevent them from leaving and taking that knowledge with them.
On the other hand he touts his use of a compensation formula, reducing engineering salary to a formula rather than taking into account an individual's background, experience, expertise, demeanor, and individual impact. (To be fair, he does emphasize that the formula will include "performance" in some way, but I've always been leery of boiling down performance to a simple equation. We've all been in roles where people have had material impacts other than lines of code committed, features completed, or KPI scores.)
I suppose I fundamentally agree with the author's premise that tech salaries should rise with the overall market to keep institutional knowledge from walking out the door, but on the other hand I don't think following a simple equation is the best way to get there.
Using money as a mechanism for alignment is not always effective or useful in creative fields. Engineers join a company for a variety of reasons, such as wanting to be part of the mission, coworkers, personal development, brand/location/perks/benefits, and so on. If somebody wants to leave, it's because they have fallen out of alignment. When people are out of alignment they can grow resentful or hard to motivate, and that in turns creates a bad state of affairs for both an employee and the company. There's an opportunity cost here where somebody could join the company who has better alignment.
Another way to look at this is that some level of turnover can be a good thing. In the same way that some universities will not allow former students to become professors in order to inject new thinking, companies benefit from new people coming in and injecting new ways of thinking into their organizations. So encouraging people to stay to maintain organizational memory is probably bad over the long term.
I think the answer is relatively simple. It is cheaper for the company to let a usually small percentage of their employees leave than it is to give larger pay raises to all their employees.
> If a developer of a certain caliber is able to demand a given salary on the open market, why isn’t their existing company paying them that very same amount?
One possibility would be it's because of the price point that the manager has in his head for that individual. I don't remember the actual term from Dan Ariely's book, but it was about becoming attached to the first price you hear. So if you know the current salary of employee X, and they want more, you could be reluctant. But an unknown person that you want to hire will ask for more, and that might be fine.
Another possibility is that the management doesn't always know who they should keep, or simply they have a different perspective on who or what is valuable. So a regular employee might wonder that they let a person go, but their contributions were maybe either unknown or not as valued by the management.
I’ve changed jobs a few times and achieved great compensation. But each hop required arduous months of networking, study, and interviewing, all on top of a full time job. I know other engineers who are more talented than me, older, and get paid half as much, because they don’t have the personality type to go through that gauntlet. Some of these people work at companies that pay very well, but their managers have successfully cowed them from demanding promotions they deserve. Their employers are getting an amazing value. Why would they rock the boat?
In short, the software engineering interview (and leveling) process is designed to discriminate between employees with different levels of competence signaling and negotiation skill, so each employee can be paid as little as possible.
This hits home for me so hard. I just left a job after 5 years of playing the loyal soldier. It's been almost 2 years since I got a promotion without a raise. My manager has been constantly working with the HR to get me as much aligned with what I should get but his hands are tied by the corporate bs that he needs to work with. I got an offer from another similar revenue/size company and I was in two minds. The company literally asked me what I wanted and then just gave it to me (nearly twice what I'm earning today). It's a shame that my current company not only didn't keep up with the market, but also dragged its feet for 2 years to keep up with its own internal compensation structure.
> then for whatever reason find that it’s much easier to get recognition for that growth outside that company.
It is interesting that 99% opinion out there between engineers community is always the same. For you to get a better pay rise / career leap, you have to move company. I'm not sure why this is always the case, I guess it is different for those who joined startup like Netflix, Stripe, etc before they go viral.
Actually at this point because I'm still young, I'm sure I can do career jump many times for the next decade. But yeah, at one point having 1 company that appreciate you with good compensation is kind of like the end goal when I'm pretty old and don't have the energy to keep moving
This is something I assume we've all noticed. I just switched companies a couple of months ago and that's the first time the company I was leaving threw the brief case full of money at me. Interesting that 6 months ago I was only worth a 2.3% raise, but suddenly I was now worth a 25% raise. Didn't matter, I believe workers should make unlimited PTO a demand and I let them know that was another reason I was leaving... death to limited time off, long live unlimited.
Back to the point. I imagine somewhere in the next few years I will get another offer at 25% bump after a few years of small 2.5% bumps. Just the way it works. I chuckle, but then I think there must be something I don't know.
To reply to the title and not the article, tech companies do pay engineers to stay…just probably not you. That’s the point of RSUs, LTI, and other grants that are unlocked through retention. More get released to employees during their tenure based on performance. If you aren’t being paid to stay, chances are that was a systemic consequence of performance. Not always, but usually.
There are pros and cons to losing employees, and quite often it’s Pareto optimal to let people move on to bring in new talent. Engineers are generally paid pretty well, so money is rarely what a departure is about. I’ve seen a lot of engineers go, and only once was money the first reason.
While I agree with the premise, this reads like the wishes of a budding new head of engineering that hasn't yet been ground down by HR. I wish him luck.
The most successful company I've ever worked for had over 300 employees and 0 in HR.
A few interesting thoughts in here. I had tended to think of the social stigma against discussing salaries as being detrimental to workers and probably encouraged by companies to save a few bucks. But on the flip side, if a company was to be scrupulously honest and made their best effort to pay according to actual value to the company and let everyone know openly how much that was, I expect there would be a lot of drama and hurt feelings over evaluations of exactly who was contributing how much. Maybe it's best to let those sleeping dogs lie after all.
Established tech companies can and do pay their engineers to stay using stock grants. The upside to the company is they can modify those grants based on market forces and performance, the compensation is not (entirely) a fixed bottom line cost. The upside to the employee is they can earn some multiplier of their base salary for some number of years.
If you are a smaller company or start-up where you cannot give tradable equity then you have to offer something else. But if Amazon are hiring in your city then best to not try to compete.
Perhaps if software teams didn't write such shitty software it would be easier to qualify things like profit sharing and equity. I would certainly prefer to have half the salary if that means I were earning a nice slice of the quarterly profit.
Unless you are selling software to a customer software is always a cost center. It is a tool, a means to end, which may enable business down the road but at any moment is just a money sink. That said it is generally lower risk for all parties to allow developers to write shitty software than attempt to connect software releases to revenue change.
In the world of web most developers I have worked with over my nearly 2 decades toil in configurations and composition. There is little or no application creation, and the application creation that does occur does so by a few internally trusted individuals irrespective of their pay or title.
To be very clear shitty software decisions almost always come down to a single question: Is a given decision primarily focused on business goals or developer preferences. For example is Spring MVC, Angular, or whatever a consideration because it will save the company $10 million over the next 2 years or is it because the company is more invested in hiring developers than internally training them?
The biggest simplification that I disagree with in this post is that impact rises monotonically.
It's true that long-tenured engineers (if they're good) can do amazing things. Things that other engineers don't have the implicit knowledge or political capital to do. The problem is that once that project is over, it's not guaranteed that the next project will be as impactful.
So ... do you pay them for their impact? And promote them? Knowing you're guaranteed nothing the next quarter?
Or do you put up barriers to promotion? "Sustained performance" or "multiple successful projects?"
I'd love to see an approach to IC comp that's variable. Land a huge project; get a bonus. Everything past Senior Engineer is temporary; if you want to be paid like Senior Staff or Principal, do the work in that year. I suspect orgs could justify being more generous with bonuses because it's not recurring.
It's at odds to a lot of the way engineers look at comp, but it would align money with what individual businesses need in a more interesting way than the current "plan on your RSUs going up by 50% next year" comp plans at FAANG.
> It's true that long-tenured engineers (if they're good) can do amazing things. Things that other engineers don't have the implicit knowledge or political capital to do. The problem is that once that project is over, it's not guaranteed that the next project will be as impactful.
You hinted at this by mentioning political capital, but in my experience as engineers gain experience at the company their impact largely grows in ways that aren't obviously visible. It's not like they are churning out work or managing teams that have ever increasing product impact, it's that their job responsibilities expand to include things like:
- Convincing potential hires they should join the company.
- Speaking frankly to leaders when newer employees don't feel comfortable doing it.
- Seeing large cross-cutting issues that require time and experience at the company to identify.
- Mentoring newer employees so they get up to speed and become productive quickly.
- Arbiters of information and documentation that tends to never get written down. "Person X can help you learn about Y, Team Z is responsible for that, etc."
These kinds of activities are critical to highly efficient companies, but rarely ever acknowledged as impact. At least I've rarely ever seen these kinds of things show up in regular performance reviews, and yet it's painfully obvious when these activities are missing.
I wonder if there's some tacit understanding between HR/recruiting/biz at tech companies that paying for retention will lead to engineering comp running wild across the board and make all of these businesses more expensive to run.
Feel free to teach me a lesson, but I feel this could be possible because:
- If people were paid to stay, then the supply of engineers in recruiting pipelines would decrease.
- If top performers were paid to stay, then the mere existence of a "counter-offer" mechanism would open up the door for bidding wars, where each bid is actually positive indicator for the quality of the talent. Today bidding wars largely only exist for somebody with multiple new offers, where neither company actually has a great measure of the talent.
- Retention pay is likely a compounding expense for the employer. Finance departments hates compounding liabilities.
Altogether would it make the labor market more efficient? Probably.
Would it make businesses less profitable? Probably.
In urban tech centers, wages increased sharply over the last 10 years. Both due to base wage increase and tech stock appreciation.
Once you are within a company you will be given catch-up raises but in a fast moving market you will always be able to create a bidding war for your talent and increase your pay beyond what the employer will offer you.
You have 3 options.
1. Climb the ranks. Technical or managerial. This takes time and is rewarded generously at most tech companies.
2. Get lucky with insane stock appreciation. Stay four years. Leave when your income drops in year 5.
3. Leave every couple years for significantly more money, by combination of up-leveling and getting the now higher market rate.
The Bridgerton example is silly and not comparable. His character is barely in the other books, so of course he's not in the other seasons. It's like asking why Professor Quirrell isn't in the second Harry Potter film.
Companies consider any employee who is not selling (not bringing in dough) and who is not an exec - a liability.
HR's exists to keep minimizing liabilities - maintaining set of excuses to enforce minimal possible pays, ensuring employees have little or no say over important matters, prioritizing diversity over talent and painting a good face over all the necessary corp BS to maximize profits.
Engineers are necessary evil that "cost lots of money but doesn't bring any revenues". This of course an idiotic point of view but that's how execs are thinking.
Articles like these vastly overestimate people's desires to switch jobs. Yes one good engineer left last quarter because they were underpaid and someone gave them a better offer, but a hundred others stayed put. Things still overwhelmingly worked in the company's favor overall.
And add the fact that technical interviews are still designed to be as painful a process as possible, so much so that people I know have given up guaranteed raises just to not have to go through it again.
Also, just because the job market is hot doesn't mean there aren't TONS of chumps.
The number of people out there who are happy being underpaid because of inertia far, far exceeds the number of people who will actively leave a job for another to get a bigger pay day.
Companies are caught because if they give the subset who are actively dissatisfied a raise, they are giving the "inert employees" a raise as well.
Hence they have a huge disincentive to give anyone a raise.
> we intend to create a formula that takes into account title, years of tenure, and performance to create a compensation graph that scales with company impact as closely as possible. By making it predictable...
Performance is hard to measure. It is highly dependent on the biases of the person measuring. So despite having a "formula", the outcome is not at a all predictable.
It's a sellers market right now, so jumping job to job is beneficial. Companies are willing to pay top dollar and salaries are on the rise.
I like this approach. It incentivizes and rewards. Even if things changed and this turned into a buyer's market, it should help with employee happiness. Buyer's markets tend to drop employee happiness as employees feel trapped.
Ofc this would be dependent on how critical that specific personnel to the group or company overall.
One thing to note though, when the employer is handed over the 2 week notice, for the employee, the process has been at least months in making. I don't think at that point, it is merely a matter of money, sometimes people do want to shake things up.
Unless the engineer doesn't provide some business value way beyond expectations and a promotion is done, it will all come down to the cfo and HR, that's the reality.
That pair has financial objectives and they have data and experience to know if hiring new(with all costs involved) or increase a salary makes more sense to their bottom line.
The analysis looks very reductive and seems to ignore the scientific knowledge about what motivates employees to quit/stay.
One thing we know for sure: most people don't quit a company, they quit a manager. Companies are traditionally bad at identifying good managers. I think poor loyalty is mostly symptomatic of poor management.
Engineering compensation at big tech is too rigid to award high performers adequately.
Some folks double the impact of others in the same role / level, and make 20% more, at most.
Leaving and joining a competitor moves you to market rate. You fall behind each year at the job / role in this market.
Finance departments set grids of pay that have varying degrees of complexity. The problem is that they tend to stick to these grids regardless of the impact of net talent loss. The thinking is, the company as a whole is better off sticking to the grid than overpaying any employee.
Strictly if they aren't pro-actively paying competitively, they either won't honestly match and or if they belatedly do, you shouldn't trust them because they will repeat it again.
This isn't just for programmers or engineers - it's any job.
Probably because it doesn't work long term. Sure a bit of extra money can keep someone around for a short duration. Eventually that person is going to leave for the underlying reasons that aren't financially motivated.
I think special in the tech world, money is by far not the most important thing, because we all get enought money for a happy life. There are many other factors as well.
I like the approach. It seems to assume that impact is easy to measure though. It’s actually very hard to measure problem avoidance versus problem solving.
I dunno, I tried causing a positive impact, but management is deaf. That $5M new software we don't need? Don't bother explaining. You will be ignored. They will spend a fortune on it, fire/recruit, and realise it wasn't needed 2 years down the line when the execs have been made famous for being early adopters of the technology. They probably got to speak at some conference or were made an ad about how great they are
Best to keep my head down, don't want to push elbows with this lot
>At Ethena, our track record of transparency, open feedback channels and an experienced management team put us in a position to make these types of bold policies that other companies may struggle to operationalize.
Never fails to make me smile watching capitalists advocate for planned economies :)
This isn't going to end well for Matthew, well if he doesn't work the back side of the curve, let me explain;
The challenge is performance is transitory and pay is forever. Specifically, you will have engineers who happen to be on a project at a time when they can have a big impact, and they do and you want to reward that. But then the next few years might be polishing that project's stability and corner cases which will "feel" like very little impact. As a result if you change their pay to reflect their impact when they first deliver, and leave it like that, then the next few years will "feel" like the curve is inverted and your paying and not getting the impact that you would expect from that level of pay.
This is why, invariably, engineer pay tends to evolve into "base pay" + "bonus pay" which can be thought of as the cost of keeping you around and the appreciation for what you have done for us this year. Many people make the "bonus pay" a fraction of your base pay, in that way an increase in your base pay will be reflected in larger bonuses later. Google famously did this and then added a twist which was called a "personal multiplier"(PM). This PM could range from 0 to 3, and the trick was it was kept secret. In that way you could never know whether or not your manager was "playing favorites"[1]. But it gave them a nice talking point about being "open" about how you would be compensated while not letting you convert the how into actual numbers.
The second thing is that everyone is different. And even when they are a lot the same, they are different. Sometimes people will reach a compensation level that meets all of their needs, and lets them save for retirement, and they don't "need" any more than that. Tandem had a great term for that, it was called people who "retired in grade" which was code for someone who was not being motivated by pay any more so they weren't working as hard as it was possible to work them.
The third thing is that sociopaths love a score. They really really do. All you have to do to get the most out of a sociopath is tell them how you are going to score them and let them see how they score relative to other people. (you'll say "pay" in your discussions but the sociopath will hear "score.") These folks will invest all of their time and effort in "winning", and because they are sociopaths they won't necessarily use that tactic of "work harder than those you are competing with." They may in fact spend all of their time developing schemes to sabotage other efforts in order that their effort stands out. Really not a great place to be, really.
The bottom line is that compensation is hard, doing it well requires that you be honest about what you would pay someone to replace the person you are evaluating and verifying that you are paying them at least that much. And when people start going the other way, you need a plan for that too (you can fire them of course, but as the article mentions they have lots of domain specific knowledge that is handy). Generally successful companies move those people to working on projects that are important but not urgent.
[1] To no ones surprise, the managers were playing favorites.
There are some great rationales from people here who hire, and gave me a different viewpoint, so I appreciate why companies do that. They do so because of economic reasons - people stop becoming productive after a year, as Kranar notes, or people don't want to leave because it's a pain in the ass to apply for a new job as well as leaving friends behind.
.
One thing I personally have said for a long time, is that when you are just starting your career, you should get it in your head to change jobs as much as possible - so through your 20s to mid-30s. The reason is because a job move will almost always increase your pay, much more than any company ever will.
The trajectory of income earnings at your early stages will be the most dramatic because there is a ceiling, for the most part (there will always be outliers), on how much you can earn, no matter what. You'll never see a programmer making $2 million, doing programming, for example. So if you start up at $60,000, just for example, the faster you get to $150K or $200K, if possible in your specialty if you have one, the better, because incremental increases will slow down at that point, no matter what. It will be much more difficult to get a job at $200K, as it will be to get to $75K. (Don't worry about the exact numbers, I'm just using them as an example).
When you're in your in the 32 years old to 35 years old, you can start looking for a long-term job that has your values and interests.
It used to be that companies wanted people at their jobs for a long time because it showed stability, and that they would stay with the new company a long time. I'm sure there are companies like that still out there, but if you change jobs a lot, like every 2 years, hiring companies will more likely look at your history and think you are a "hot commodity" that everyone wants to hire which causes more competition from hiring companies.
There's also the fact that if you go from $50K to &75K to $100K over 6 years, rather than $60K to $76K over 6 years, the hiring company will find it much easier to increase th pay the person making $100K to $130K, rather than pay the $76K person to $130K. Even if both have the same exact skill level. It's just human nature. And it is kind of true. The person making $100K knows their value and goes out and gets it, the other is more complacent, whether you think that or not or have all kinds of reasons why this is not true. Those are your reasons, not the hiring company's reasons.
Finally, the other thing about changing jobs a lot at the beginning of your career and making more money is that when you do get a raise, let's say 10% raise for the two people in this example, the person staying at the same company for 6 years and goes from $50K to $78K will get a raise of $7,800 (and the same with a bonus), while the person going from $50K to $100K will get go get a $10,000 raise (and bonus). And that difference will keep getting larger the more money you make, obviously.
Fuck loyalty to the company - they have zero for you. And your friends will still be your friends as you all disburse over time to new companies, and you will have a nice network over the country. Plus you will make new friends at your new company and expand your network even more.
And, by the way, your absolute best way to get more job offers and higher pay, is by giving talks and publishing. I know one guy that gives technical talks twice a week, anywhere there's two or more people. I talked to him about it, and he said that he gets at 2-5 job offers per day sent to him. When you do public speaking, you become a thought leader, or industry leader. The same goes if you publish something - in a well-known website or a chapter in a book compilation, or whatever. You are again a thought leader.
Some comments were deferred for faster rendering.
Kranar|4 years ago
After observing this I don't really mind hiring people to work for 2-3 years and then have them move on to another role, and most people I hire I do so with the expectation that I'll get a good two years of work and not much more.
A very small percentage of people continue to improve over the long term, and those people I am happy to continue increasing their pay, but I don't really go out of my way to retain employees and I don't think it's particularly worth it to do so.
This blog post mentions a kind of impact based compensation structure, and while I can respect the idea behind it, I am skeptical that they've managed to find a deterministic and impartial way of measuring "impact". I don't presume to have such a system so I pay based on what I observe in the market and let the market decide what the value is of software developers. For example, I genuinely don't know if software developers have more of an impact than the product designers, or the legal department even though I pay software developers much much more. What I do know is that it's much easier for me to hire a competent lawyer or UX designer than it is to hire a competent software developer and there are many more competent lawyers and designers out there... so I pay them less, regardless of whatever objective measure of impact may exist.
wpietri|4 years ago
I was chatting with a Trader Joe's cashier Sunday. It turns out they change jobs every hour. That was a surprise to me; when I long ago worked in a grocery store, I was assigned to one position for 8 hours for every shift. Why does Trader Joe's do it? To keep things interesting: "She tells Money that the change in jobs during shifts helps to keep things interesting for employees. 'It's perfect because it breaks down your shift. You don't get tired doing one repetitive thing,' she told them." https://www.mashed.com/175743/workers-reveal-what-its-really...
If Trader Joe's can do it hour by hour, I think tech companies can do it at least every year or so.
I'm hiring right now and one of the major draws for the good people I'm talking to is the chance to do something interesting. If that's why their coming, it's unsurprising that I'll have to keep giving them that over time. For us, and for most places I've worked, I think that's doable.
b3morales|4 years ago
rfrey|4 years ago
1) Three years of lesser performance from the new employee as they climb that curve
2) The very real risk that your new hire will not be successful, or if they are successful, will not achieve the same level of performance.
Also, I invite you to challenge what you consider "stagnation". It is not possible to continue linear improvement in a given role: good employees achieve mastery, and while they will still be improving that might not be evident to their managers who are looking only at work outputs. If a company does not want employees who are masters at their task, but rather want people to move up or move out (counter-productive as that might be), then it is literally middle management's job to find new roles for successful engineers, and I suppose fire the previously successful engineer if they're not up to the task. Complaining about an engineer "stagnating" in the same role after they've mastered it is just lazy thinking and lazy management.
alex-nt|4 years ago
abeppu|4 years ago
Only once you have deep knowledge of the systems you work with does it really make sense to give you work like a complex redesign of a group of components in an online system. And you then have a responsibility to help new team members learn. You do more code reviews, and more consulting on projects for which you are not a primary contributor. And you get ugly projects that are related to your area of demonstrated "expertise". Is that "slowing down"? Or are you just doing different kinds of stuff? And is it because the engineer stagnated, or that the organization created a morass around them?
alfalfasprout|4 years ago
Truth is, losing a tenured engineer carries a MUCH larger cost than HR and some managers seem to understand-- these engineers understand the nuances behind why certain decisions were made, what kinds of things tend to work and don't, minutiae of various systems that simply will never get documented, etc. Not to mention the influence they can carry in the org.
You're not wrong that a lot of engineers stagnate after a few years... but it's a big logical jump to put that blame on them rather than the org they're joining.
That said, I like to always call out that there are "developers" and there are "engineers". The majority of software roles call for the former and these tend to be more "replaceable". It's harder to say that for the latter where they are involved in more strategic technical decisions.
munchbunny|4 years ago
cbushko|4 years ago
It is common knowledge that the average developer leaves after the 2 year mark. When that happens, everyone else is left holding the bag and they become the new experts.
Companies are full of self created abandonware.
Another person leaves and it is now two extra things that the vet has to become the expert on. Then three, then four and on and on. Next thing you know, your vet isn't getting any work done because they are holding too many bags. As the expert, they are in too many meetings trying to keep other people productive. They are pulled into too many critical issues and they are trying to mentor new developers in your ever revolving door of new people.
But they are unproductive
No. They are keeping your company afloat and you aren't compensating them for it.
535188B17C93743|4 years ago
Obviously it's not great to have companies hanging on by the thread of a single person's knowledge over 10 years, but I feel like at a lot of companies (especially smaller companies), this is the reality.
machinelearning|4 years ago
From what I’ve observed, the reason for this is not that people intrinsically lose the motivation to do great work.
Rather, often they realize that the company’s ability to reward their performance doesn’t scale with their effort.
Company’s have to delicately balance incentivizing performance of newer employees vs. risking alienating older employees who probably have a lower base rate but are key to the company’s daily operation.
The schelling point eventually settles to an environment where people surge for a few months and coast while doing the minimum amount of work.
This is especially true in a smaller company where cash flow may be constrained. Though the smaller companies often have more flexibility to offer non-monetary rewards like an overblown title or growth opportunities.
The “optimal” strategy for the company is to overpromise rewards to new hires to get them to do most of the challenging work while doling out minor incentives when needed once employees are indoctrinated and somewhat burnt out.
ed_elliott_asc|4 years ago
I’ve seen it time and time again, start somewhere new and start with very few meetings and you can really deliver.
jjav|4 years ago
I'm curious if you grill the lawyer on some abstract topic from their undergrad courses (possibly 20 years ago) and make them write it perfectly on a whiteboard? Meaning, the same way software developers get interviewed?
Or do you look at the lawyer's professional experience and hire based on that?
It's easy to hire people when you make it easy, it's difficult when you put up artificial barriers to prevent the hiring.
alkonaut|4 years ago
The impact of new hires can still be great when it comes from bringing fresh ideas and perspective (e.g processes, tech knowledge) and that obviously fades as everyone with a long tenure at the company has used the same tech.
lmilcin|4 years ago
Or, another explanation, you are mistaking cause and effect.
Maybe the people figure out they could be earning so much more somewhere else but they are unlikely to get the kind of raise at their current place, so they get disillusioned and demotivated?
And then they change the job getting the significant raise, further reinforcing the behavior. Now they join another company fully expecting the same thing to happen in 2 years.
brightball|4 years ago
I think many people come into a job for a specific project(s) during which there is a ramp up period of understanding the requirements, limitations, team, how the company works, getting to know people (6-8 months).
Then after working on that project, delivering it, iterating on it, tuning it, working through potential production support issues and some scaling items...in many cases the vast majority of the work is done (2-3 years).
At that point, a few things happen because this developer is ready for a new project or new challenge, as are most of the people who were involved with that project.
Their options are:
- Find a new project at the company and restart the learning period as they transition in a potentially lateral move. If this happens, it's unlikely the company is going to give them a sudden compensation boost when in the eyes of management they're continuing to do their existing job.
- Seek training related to some advanced problem that they solved to become the company's expert on the subject, in which case the company will likely pay for the training but not a subsequent boost in compensation (because in their eyes...they just paid for the training)
- See how well they have marketed themselves to find out if the company has recognized their talent to promote them into a higher level position with an equivalent pay bump or potentially managing a team. The only problems is that you can only promote so many people, so this person will be the exception and not the rule.
- Update their resume with the newly acquired skills and have somebody else pay them market rates to start a new project at a different company, using their current job as leverage to get a significant bump in compensation. Meanwhile, you'll be paying new market rates to hire the replacement.
It's no secret why people often just jump jobs. You've finished one project and you're going to transition to a new one anyway, getting a fresh start can be a good choice. Additionally, no matter how much people like their situation in one job they will end up building up frustrations with certain people and/or management over time. As long as those people are still around, it will increase their likelyhood of leaving.
But ultimately, you're looking at the likely timing of concluding one project and then exploring options for what's next. IMO, that coincides with your timeline.
WYepQ4dNnG|4 years ago
I join a company, work hard the first year to get a promotion and do the fun stuff, after that, I relax and stick around to vest most of the stocks and leave around the 2nd/3rd year.
I have seen so called "architects" at big co that had been there for decades bringing absolutely no value to the table. And always asked myself why would the the company retain, promote and pay these guys big bucks. Nonsense.
I call them : the legacy guys.
The only thing I can think of is that the "legacy guys" retain the memory of all the legacy stuff, and the ability for them to maintain that piece of legacy/core/monolith piece of software that no one dares to touch.
I guess that's valuable for the company, but not certainly for the employee.
They stagnate exactly because by working on that legacy stuff they can rarely learn new tech, thus they wont be able to find a job at that level anywhere outside their current company.
They are stuck.
diob|4 years ago
Always hard to tell.
commandlinefan|4 years ago
Even if you're right - 100% of the time, about 100% of people - the value of having the one guy who remembers why it was done this way and how it was fixed last time it broke available to look at it when it needs looked at is priceless.
teawrecks|4 years ago
Companies need to give engineers the opportunity at a clean slate. Let them shed responsibilities and pretend they're just a very competent new hire with the freedom to start working on whatever they want to. If it's a larger company, you can usually transfer to another team somewhere, but you still get pinged about stuff you never want to spend time on again.
Pxtl|4 years ago
esprehn|4 years ago
http://www.theallianceframework.com/about-the-book.html
Thinking about my career (and others) this way has helped me remove a fair bit of stress when making job, role or project changes.
jjav|4 years ago
Have you looked into why?
The one job where I stayed over 10 years was the one where my expertise was highly respected (large degree of decision-making autonomy, no micromanagement via agile) and I was able to fluidly change projects every 2-4 years. The pay wasn't that great but it never mattered because the job was so rewarding.
Most other jobs just micromanage one to death and stagnate career, so a couple years of that kind of abuse is all one can take before moving on to the next deathmarch.
Consultant32452|4 years ago
I fully recognize that some of this is my fault and possibly poor boundaries and time management. But it's easier to just leave every few years and also more lucrative. So there's zero incentive for me to stop this from happening.
nine_zeros|4 years ago
If I pitch this to my CTO, he will agree that using my knowledge to build things better and faster aligns with business goals.
Only middle management rationalizes theories such as you proposed. Middle management sometimes just forgets what is the goal of their job and instead focuses only on their actions (self obsession), ego and the presentation of success. An example of middle management self-obsession is your use and throw mentality. Middle management does this because they don't actually listen to their reports. Managers think they are on another dimension and don't need to hear anything from anyone.
A really competent middle manager would know that senior engineers, especially ones with tribal knowledge are the real 10x engineers in practice. Not because they type fast, not because they are hungry and energetic but because they can process situations and circumstances faster in their head to yield results.
If I were a middle manager, I would do my utmost to retain trustworthy people around me. It's almost a no brainer productivity boost.
LAC-Tech|4 years ago
Fair. That's about as long as it takes me to realise "nothing fundamental is going to change", so I tend to start losing motivation at this point.
Thankfully I'm a contractor so that's about when I exit anyway. Everybody wins!
danielscrubs|4 years ago
A senior developer on the other hand might say they didn't do much because they think "it was just small things that I've done before". You really have to look at the commits.
Companies have been bankrupted because of the "let's just get two new ones"-mentality, not seeing that the lead time for developers to become relatively productive by knowing the ins and outs of large codebases is very, very long (for backend development, frontend is more cookie cutter).
mcot2|4 years ago
bumby|4 years ago
Curious if you could elaborate on how you came to this conclusion? According to ONET [1] there are 819k lawyers in the U.S. but 1.469MM software programmers.
If you come from a software background I wonder if it’s easier to spot an incompetent programmer than an incompetent attorney which could bias the heuristic. Or do you think there’s something else at play that makes the proportion of competent software developers inherently much lower? E.g., there’s no “bar exam” for programmers to ensure a basic level of competence
[1] https://www.onetonline.org/
tclancy|4 years ago
vp8989|4 years ago
Thanks for sharing this, I think you are probably "right" even though what you said is not an easy/popular thing to say.
What is your observed sample size on this? Could you elaborate on how you see people stagnate, and why you think this might be?
NationalPark|4 years ago
mberning|4 years ago
hintymad|4 years ago
craftinator|4 years ago
> so I pay them less, regardless of whatever objective measure of impact may exist.
Ah, the classic "blame the person you hired for being bored with a low paid, dead end, high churn rate job", most excellent.
justicezyx|4 years ago
I was in Amazon and Google, I never saw a case where the developer stagnant before the product/management went into stagnant.
Developers just write code, and they just accumulate more knowledgeable and skills with the stuff they work on. How can they stagnant is something not obvious to me at all...
unknown|4 years ago
[deleted]
rhacker|4 years ago
SavantIdiot|4 years ago
For some perspective: when I left Intel circa 2010, I was a Senior Staff Engineer fighting to get promoted to Principal Engineer (followed by Senoir Principal, then Fellow, then Senior Fellow, hahaha). FYI I loved Intel for the first 10 years, and hated the last 12.
I made $130k base salary, $70k typical bonus (EB+ECBP), and stock options (most of which were worthless). This was after over two decades there, started in '88.
Recently, a friend (12 years younger than me) was hired by Intel to work in one of the ML groups. He asked if the starting salary was fair: they offered him $400k. I was angry, jealous, and shocked. I have friends that are STILL there, grinding away at sub-200k base salary after nearly 30 years, and they are too scared to leave.
So this idea of coders flitting from job to job just seems so alien to me. I'm obviously from a different generation. I don't even know what I would ask for pay if I ever left consulting. Headscratcher.
returningfory2|4 years ago
The answer is in your comment: your friend who started recently at Intel is getting more than double the salary of the long-timers. What's not to understand?
lordnacho|4 years ago
Remarkably he's still there, and I still have other friends there, nearly two decades later. One of them writes on FB over and over about how pointless the meetings are, and complains about the stock price.
When I left, I managed to get myself an offer for the management track, via a friend on the same track. I turned it down thinking I'd probably regret it, but I decided during the internship that there was something about this apparent elevator to the C-suite that didn't quite seem right to me. The ease of being at what at the time was an unassailable monopoly perhaps seemed both too good to be true and probably hiding issues down the line, both for the business and in terms of internal competition climbing the greasy pole.
But also changing jobs every now and again has had other liberating effects. I have a lot more confidence that it can be done (since it's been done lol) but also there's a variety in seeing various businesses and people that's hard to get if you stay put. The fact that new jobs generally means more money is a big bonus on top of that. I suppose a lot of firms get a huge saving from people who don't look around much.
ctvo|4 years ago
neilv|4 years ago
In this case, I was the prospective new hire, at a well-regarded large company. They had a large number of software developers who'd pulled off some very impressive technical accomplishments (comparing favorably to most any tech company you could think of), and had been doing so since before FAANG... In the offer, they made the level Director, even though the role was non-management hands-on technical IC. And the comp. people had also added an additional incentive program that wasn't standard for this level. I figured that might be to work around the company's pre-FAANG pay grades for software-ish people. The team, business unit, and SVP were great, and I was actually very anxious to move. But then the offer letter came from corporate, and turned out to be laden with surprise clauses (regulatory, etc.), and corporate was unable to provide copies of documents that it referenced as things to which I'd be agreeing. My decision mostly came down to the intuitive (besides the practical costs of the surprise eleventh-hour asks): feeling that I'd be at the mercy of any Kafkaesque bureaucratic accidents of a large institution, more than I think I would be at a certain larger FAANG, while the total comp. wasn't close enough to that FAANG -- so accepting would feel more like being a scared loser, than like willfully investing towards success.
Sounds like Intel's variation of paying close to FAANG might've been the way to get that new hire (despite whatever perceived big-established-company downsides there might've been), but at the cost of demoralizing the existing engineering staff who had pre-FAANG comp. (Who then might feel like the losers.)
Has this problem been solved by any long-established company that has employed top-skilled technical people since before FAANG, without paying competitively?
dec0dedab0de|4 years ago
annoyingnoob|4 years ago
Guessing that I'm less than 10 years younger than you, I had a college professor that told my class to change jobs every 5 years to maximize income. That was in the early 90s.
dahart|4 years ago
mixmastamyk|4 years ago
However, lots of folks leave for a while, get some new experience, and come back with a big boost in salary and maybe title. Give it a try if still interested.
bitcoinmoney|4 years ago
selimthegrim|4 years ago
ukoki|4 years ago
From an ethical point of view, maybe. From a rational point of view, maybe not.
Jobs are "sticky" — it's a pain to apply for jobs, arrange interviews, deal with the possibility of getting rejected. And if you do get an offer and accept you will be leaving colleagues that may be friends, risk your position being less stimulating, have to move house and/or deal with a new commute.
There is a very real salary range between "low enough that I'll think about applying for other jobs" and "so low I'll actually start applying for jobs". Employers are aware of this and are paying salaries accordingly. It sucks for everyone in that salary band but — ethics and long-term viability aside — it's still the rational economic choice for employers. Every now and again someone will quit and get their deserved 40% increase, but many will delay leaving for years, or simply put up with it indefinitely, saving employers tons of money.
Of course this may not be the case forever. It seems like recently the cohort of people who find interviewing and changing jobs more tolerable (the so-called "job-hoppers") is increasing in size. If you happen to be a part of this cohort, then congratulations, you're winning the job-market pain-of-change-vs-salary arbitrage game and will enjoy above-average year-on-year salary increases for at least the near future.
solatic|4 years ago
This is the difference between employers who play the game at a low level and employers who play the game at a high level. If you play at a low level, then you view your workers as interreplaceable cogs in the machine. You charge for soda at vending machines and balk at shelling out a few hundred bucks for a ping pong table. Sure, it's "expensive" when people leave, since their replacements are more expensive (not to mention ramp-up costs), but your perspective on your employees is how much they cost you to employ, so you try to keep that number as low as possible for as long as possible.
Higher-level players order dinner to the office every night because they understand that the price of food is so ridiculously cheap compared to the additional productivity that the only way it doesn't make sense is if you manage your employees by what they cost and not by the value of their employment. Higher level players grant their employees large raises without being asked because they understand that defensive raises prevent your employees from searching for new work in the first place. Higher level players understand that loyalty has value, trust has value, and tenure has value.
Are lower-level players rational? Sure. They're also either stupid, or of low enough relative productivity that the market will subsume them soon enough.
sillyquiet|4 years ago
AnimalMuppet|4 years ago
lakevieew|4 years ago
alkonaut|4 years ago
mauving|4 years ago
My experience has been the opposite, in that sticky jobs are jobs held by people who aren't in demand. There's a balancing act for employers ("brilliant but flighty" is less desirable than "good but sticky") so it's certainly possible to argue that jobs being sticky for less-than-brilliant people is a good thing... but in my experience, jobs aren't sticky because of inertia for brilliant people.
zz865|4 years ago
True, the other side is if you're trying to hire and pay the same industry salary, people aren't going to move because what's the point? If you're trying to hire a lot of people you have to pay more than average just to get people interested.
Nasrudith|4 years ago
paul_f|4 years ago
unknown|4 years ago
[deleted]
cletus|4 years ago
1. Organizations will often see bumping up an employee's pay to match another offer as some variant of extortion and it's they view this as disloyal. Never mind that the other offer clearly shows they're now below market. I didn't say it makes sense;
2. There is friction in changing jobs and companies and people will generally have a threshold for making that jump (eg they won't switch for less than a 20% raise). So over the entire pool of employees it's cheaper to let a few go than give everyone a raise when many wouldn't leave;
3. Companies have a philosophy that you do the job you get promoted to first and then you get promoted to it and paid subsequently. Worse, often it takes time for things like equity to catch up. You may get a discretionary grant when you get promoted or you might not. And it can take years of annual refreshes to get to the total comp off a new hire at the same level;
4. Organizations seem to make the standards higher for existing rather than new employees. I think this is in part to avoid level and compensation inflation;
5. Up to a certain point there is an expectation of growth. Some of this is formal (eg up to T5 at Google). Some of it is more informal. They make the determination that even though you're at a terminal level and that's fine, if you've been there for years you're probably not going any higher so you won't be one of their future leaders or stars; and
6. Diversity. Tech companies have explicit goals around having certain minorities essentially over-represented compared to the demographics of, say, CS graduates. I guarantee you such explicit goals create perverse incentives that extend to how they handle retention.
notJim|4 years ago
7. Tech companies (explicitly or not) are skeptical of people who don't switch jobs. People call them "lifers" as a denigrating term, for people who are just coasting. Switching jobs implies that you're hungry or ambitious (regardless of whether it's true), whereas remaining at a job shows that you are complacent.
dasil003|4 years ago
For new hires, management doesn't what their value will be, so it really comes down to market rates and negotiation based on the limited signal. If you make a bad hire you can chalk it to classic market-for-lemons problem and you deal with it via pip or letting them go.
However once someone is established, their performance is more or less well-understood by their peers. It's at this point that the disconnect between ones own perceived performance and the broader perception becomes deadly, because peers talk, and if one of them gets a fat raise and the other doesn't then it becomes a whole can of worms. The merit of the situation will get lost in the individual perceptions and entitlements which is likely to result in an overall morale hit one way or another. Sure this can happen with new hires, but it's more easily explainable, especially in the current climate where market rate has shifted a lot and so you literally won't be able to hire if you don't play the game.
shados|4 years ago
The last company I worked for gave me significant golden handcuffs. Probably 30-40% more than I could get elsewhere. They had a "cost of replacement player" policy, where they count the cost of hiring, sourcing, training over the years, etc, and come up with a number thats almost always way above market rate for people who have been around a bit.
Attrition was lower than industry average...but not by much. The reality is that in big tech, salaries are high enough that people stop caring. People left for a variety of reasons, the most common one being "I want to see how it is elsewhere" (especially from college hires who have been at the company several years). Others leave because they want to work at a startup. Some leave to join their friends. Some because they move to follow a significant other who got a job elsewhere (many prefer offices over WFH, so offering that only helps so much).
In the end, again, retention is higher, but when you crunch the numbers, its very debatable if it's worth it for the company. Worse, sometimes companies end up "competing" over it, so even if you pay a lot, the next one offers more because they know your salary bracket, then you raise yours until one gives. That sounds great for the employee but there are budgets and limits at some point.
And then there's the topic of counter offers. The uncomfortable truth is that there's very significant demographic differences when it comes to folks who use the "I got an offer elsewhere, pay me more and Ill stay". If you give counter offers when that happens (as opposed to across the board bracket increase), you quickly end up with statistically significant discrepancies, and that's not ok.
disease|4 years ago
Cederfjard|4 years ago
What differences are those?
I tend to think that it’s a bad idea anyway. Once you’ve done it, your employer will know that you’ve already thought about leaving, so much so that you’ve already completed an interview process and have gotten an offer. Surely that must tend to be damaging to the relationship going forward (not saying that it should be, but that it often is).
ghaff|4 years ago
majormajor|4 years ago
Sometimes people would leave and get a bigger raise than we'd budgeted for them for that year. But at the same time, we never took long to hire a replacement at the same budget we'd been paying them. This required us to be diligent at doing market adjustments when necessary, but also led me to some other thoughts on compensation: if we think employee A is worth $X, and they get a job offer for $X*1.2, neither company has to be wrong. Maybe there's a bigger need at the moment in the other company. Maybe they're going to be working on something more valuable to that company than they were working on here. Maybe to us they've been a solid but non-exceptional performer, but the other company sees potential for them to do more in the interview. Maybe the other company just has more to spend. Maybe they're the third best-performer on the team, and we chose to allocate more to the top two people, so can't do as much to keep them as they'd like.
light_hue_1|4 years ago
astuyvenberg|4 years ago
The concept of "the market" for engineering talent is far more nuanced and multifaceted than the nice x/y plots used to correlate compensation and experience (not meant as a criticism to the author at all).
bern4444|4 years ago
If someone leaves and gets a 20% raise, while it may be an isolated incident, I believe it's more often than not an example where the market rate has shifted up and a company is slow to catch on.
While you may find someone new who's willing to accept $x instead of $1.2x, there is likely a large difference between the person being hired and the person leaving which represents the 20% discrepancy. And there's a cost on both sides that's not captured in the 20% differential.
As others have said there's the loss of institutional knowledge and know how. But the new person may also be more junior or is switching domains and so has less experience and thus willing to accept a lower salary.
It also takes a decent amount of time to hire someone new. Usually at least a few weeks. And I'm sure it can take longer. Sometimes 1 person leaving also means you really have to hire 2 people to be as effective as you were before. And of course, the new hire may end up asking for $1.2x anyway if they negotiate.
When all this is said and done, my personal belief is a 20% raise is far cheaper for retention just by the numbers.
There may be several non math based reasons for not offering a 20% raise to retain someone, but purely by the math I think its always going to be cheaper to give a 20% raise.
TLDR: I think this possibility is a false equivalency that just because you can hire a new person at $x means you're in the same spot as before.
bsder|4 years ago
The problem is that companies budget raises that barely cover yearly inflation.
If you aren't budgeting raises at 7-10%+ per year, your good employees will leave. It's simply logical.
hellisothers|4 years ago
mensetmanusman|4 years ago
We see this for example on a larger scale in OLED tech, where a key OLED engineer in South Korea might be worth $250k to the Korean Economy but worth $2.5M to the Chinese economy, which is why poaching was halted by classifying the job as a national security interest.
The profit/employee ratio at Apple is over a million dollars, so a valuable tech employee there should be making seven figures. That kills MBA’s brains (and the traditional power structure), which is why the cartel worked behind the scenes on wage suppression.
mattydoincode|4 years ago
modeless|4 years ago
sparker72678|4 years ago
Combine that with the fact that it takes a while for the impact of someone's loss to be truly felt (and the fact that developers who leave are often scape goated), and most managers just can't get their head around the idea that a competent software developer is worth $200K/year + benefits.
Not to mention that turnover costs are mostly hidden costs; rarely will anyone attribute a problem to a single individual leaving, and then connect that fact to "we should do a better job retaining people."
*Yes, there are great places to work where this is not the case. That's just not everywhere, even in SaaS companies.
vbtemp|4 years ago
Basically, why do I get such big raises when I switch companies, but getting a nontrivial raise when at a company is like pulling teeth?
How come every company I work for is willing to give me a huge raise and reward me for my achievements at other companies, and not do the same for achievements at that company?
The discussion that followed was illustrative. But I just came to accept it as a fact of life. I wish I could find a place to invest myself in long term, but that has yet to be found...
ryandrake|4 years ago
It's important to remember the whole "30-40% raise when you switch jobs" only really happens at the beginning of your career. Your next job switch will maybe be 20-30%, your next one 10-20%, etc. until you reach the inevitable compensation plateau. I'm over 20 years into my career and my last job change was for +1% or so. No company would offer more.
If one could actually get a 40% bump every job change perpetually through their entire career, someone who starts at $100K would only have to change jobs seven times to reach >$1M. No way on earth that is happening for the vast, vast, vast majority of tech workers who job hop.
madrox|4 years ago
heisgone|4 years ago
frankbreetz|4 years ago
This is only a problem in some places and is made up problem by management. Why can't someone make more then there boss, besides ego?
nharada|4 years ago
I definitely have not found this to be the case. Good senior folks require very little active management.
toephu2|4 years ago
Actually this is quite common at FAANG companies.
E.g., I make more than my boss.
unknown|4 years ago
[deleted]
delaynomore|4 years ago
Wait...ICs do not care about their own career and salary? That's news to me (Sr. IC).
asdff|4 years ago
GuB-42|4 years ago
It happened to me, in my previous company, I was clearly underpaid, but the job was fine, people were nice, nothing to complain about except for the pay. Considering the situation, I looked somewhere else, found an offer for a similar job that was about market rate, went back to my company with the proposal and told them to match the offer. I was even ready to accept slightly less, but I didn't get anything, zero, no negotiation possible. I asked to see my boss the next day, he didn't even ask me why, I think I was already written off.
And I am not an isolated case. The worst part is that I am sure they lose money doing that, because when they hire people at the same skill and experience level, they hire at or above market rate. It is very likely that they hired someone to replace me for more than what I asked them.
Usually, everything else being equal, the more people move, the better they get paid.
hiram112|4 years ago
A decent and ambitious dev can definitely gain 30% salary increases after their first few jumps, but once you're at the "senior" level, it's just not happening.
In the first 5-6 years of my career, I jumped about 4 times, each with a large increase: from $55K to $80K to $100K to $120K and finally to $140K about 7 years ago in a relatively high COL city in East Coast US.
As expected, even though my knowledge and skills have really increased over the past 7 years at my current gig, the company gives only the typical 2% inflation raises each year, and there is no equity or bonus system based on seniority.
So now I'm at about $160K, which is still okay for my area, but disappointing considering somebody with similar experience and absolutely no institutional knowledge would be hired for my position at $180K (maybe higher in this market).
But I'm stuck. I can go and play the interview game. And based on what I've seen, at best I'm going to get a salary offer of maybe $180K, and of that $20K increase, I'll end up pocketing maybe $1K / month extra, as all of the extra income will be taxed at my max rate.
Is that worth leaving a company where I've earned respect, have a lot of knowledge, know is tolerable, and where I've got "credibility" and a history with senior executives and management?
It's not for $1K / month, which may even be less if it turns out health insurance has a higher deductible, or I end up having to spend $200 / month more on commuting costs.
I think most seniors hit this same glass ceiling earlier and earlier in their career - by mid to late 30's. And unless they move into management or really strive to jump to the next tier (e.g. FAANG company or finance industry), then there's no real financial incentive to jump, and a lot of risks if your current git is tolerable. And employers know that.
JohnWhigham|4 years ago
That's where you make the play of going to whoever controls your salary and saying "I've got an offer that pays much better than here. Can you beat it?" People aren't going to look at you differently for it; it's part of business.
hiq|4 years ago
Why are you stuck with this world if there's a clear ceiling?
> at best I'm going to get a salary offer of maybe $180K
If you get a $20k increase every 2 years starting from $160k by hopping jobs, that's way more than your yearly 2%. If you're in the right location, the only risk is to quit a job 2 months in because it's actually not what you expected and come back to a company you initially rejected, or start applying again. If you're a dev in your 30s you should have enough money to stay afloat for at least a few months, in which case this is not that big of a risk.
There's also a risk staying in the same company for very long: if you keep doing the same, using the same tech, you can become complacent and your skills irrelevant. At which point staying at your company is not really a choice anymore.
CoastalCoder|4 years ago
I've been fortunate to find all-remote employers who pay average non-FAANG silicon valley salaries, regardless of where in the U.S. you live. The result is I'm paid a little (+20%?) higher than I would at a non-fintech company in Boston or NYC.
ChrisMarshallNY|4 years ago
I was a manager for 25 years (and stayed at the company for almost 27).
When my team was finally dissolved, in 2017, the person with the least tenure had a decade. The person with the most had almost 27 years (he and I started on the same day, in 1990).
The pay was...not so good. The corporation had some fairly lousy HR policies.
I'm told that I was the reason that these folks stayed.
Apparently, I was a half-decent manager. I hated the job, but did it well.
These were a different breed of engineer from what seems to be the benchmark, these days. They were very experienced, senior-level C++ engineers. We did image processing pipelines, and various forms of "engine" code (like that BASF ad: "We don't make the software you use. We make the software you use better."). A lot of my management style involved abstracting the corporate HR policies, and working with my team. They all had families. One actually had a serious medical issue, during his tenure. Most had to deal with various emotional and family issues.
I also completely supported them pursuing any training they wanted; whether or not it directly applied to their work with my team.
I had to deal with each person as an individual. I had to understand their drives, and work with them. I treated them all with the utmost respect.
They worked very hard. They stepped up to the plate, when it was crucial, and I let them have slack, when the dust settled.
It seemed to work for me. YMMV.
phist_mcgee|4 years ago
The way I see it, engineers need to make their money now or risk being left out in the cold for when many assets move out of reach from the middle class.
I don't want a yacht, I just want to own a home with no debt. Apparently that is not an easy thing for many people to do anymore.
scarecrowbob|4 years ago
I'm the lead dev at a small co that does work, mostly custom WordPress, for gov / edu / SMB (mostly NGO or trade groups). I'm the senior technical staff... there's a junior dev and a "project manager who codes but doesn't read log files".
I've been working with this company for 7 years and never gotten a raise. We have "unlimited PTO" which really just means I have no idea how many days off I can take. I mostly work with the biz because it used to be quite flexible and was only a 30-hour-a-week commitment. That's become much less flexible as we lost the ability to stack hours without "approval", I've started to be the only person on-call, I now have a junior who more or less reports to me, etc, etc.
I'm looking for work now, mostly because the cost of realestate where I am is outpacing my ability to save for a down payment.
The thing that got me a bit worked up is that when I asked my boss if they'd ever done the math on what it'd cost to replacement (even leaving out the cost of training) and their response was that they were 100% sure I'd make more money at another company-- they are just paying me what they feel like they can afford.
Then they gave me an immediate 5% raise and 1.5% cash bonus.
None of this makes one bit of sense to me... if I leave, they are going to have to find someone (or several someones) who can operate containers in GCP, write WP/Gutenberg blocks, Figma->PHP WP themes from scratch, and write integrations/ imports/ scrapes for these sites they build.
I've been interviewing and know what that kind of work pays, and how much the folks charge for that... but this boss of mine seems prepared to let me quit rather than up my pay. For full disclosure, I'm making 70K/yr+ health insurance and who the hell knows how many vacation days.
It's fun to do job interviews after all this time, and pretty gratifying that folks are so interested to speak with me, but I'm a bit worried how this person is going to get the stuff done that I've been doing at the price they've been selling the work.
elpatoisthebest|4 years ago
It changed my outlook on companies and playing the salary matching game completely. While I'm still in demand, I'm always looking for a better offer. I am planning on this bursting sometime. In the meantime, I'm going to get paid.
fleddr|4 years ago
When they give you a huge raise, payroll costs are up. Yet you won't necessarily deliver a revenue increase to match it. So it's a financial loss.
This might trigger you to leave, but accounting doesn't care about future potential events.
Similarly, I could make the point to my boss that an additional monitor, would increase my productivity by 20%.
Accounting disagrees. Hardware costs are now up 20%, which is real money spent. Yet there's nothing in the books suggesting more revenue. So another financial loss. "Productivity" is not revenue, it's an abstract concept in knowledge work.
It's a very one dimensional way to look at things, and far from a good one, but it might explain some things.
mcherm|4 years ago
kilroy123|4 years ago
CosmicShadow|4 years ago
I talked mostly to startups between 10 and 400 people, but the problem I heard from most leaders was "if they are thinking about leaving, fuck em, they are dead to me already". I tried to reason with them, but it was fought as if held like religious belief. I mean if it's your baby they are unhappy with, I guess you can get defensive and maybe you are still in a scrappy mindset, but it was a bit frustrating for me as my idea was not hitting very well :/
My wife was considering leaving her job, but not because she hated the work, or the company, but because she wasn't challenged, given opportunity or paid for her effort, when colleagues got paid more to do 1/20th of the work. If she was managed and compensated properly, she would have been more than happy to be retained, and I imagine there are a lot of others in that scenario (but more who just want to escape their manager of course, which is also very good valuable for the boss to have when trying to retain people).
CoastalCoder|4 years ago
I would think that if a manager was unaware of the job-hunting, that was intentional on the part of the employee.
licebmi__at__|4 years ago
I've seen HR on several places referring employee changing companies as "treason", not only casually but on internal communication. So with that framing, and the expectancy of employee loyalty, I wouldn't expect retention to be a high priority.
unknown|4 years ago
[deleted]
p0nce|4 years ago
From the engineer point of view, this is a bad deal as the knowledge they get is precisely not transferrable to another company. So staying is a risk (these skills won't even exist elsewhere) and there is a lost opportunity for the employee. They could be at another job, learning actually transferrable skills, thus improving their standing on the market.
Solution: minimize company-specific knowledge, make it easy to grok and not company-specific. To be a bit blunt: your flavour of pile of poo codebase isn't particularly interesting so why should I learn it if compensation doesn't match the missed opportunity?
mattydoincode|4 years ago
ppeetteerr|4 years ago
The other point is that money is not the only motivator (esp. in our industry). People just like change, either more responsibility, or less responsibility, maybe more autonomy or more direction, maybe different leadership, etc.
Last, signing bonuses are quite large...
cwbrandsma|4 years ago
But it is also about the money. When you can get a 20% bump by switching jobs...hard to pass that up.
yupper32|4 years ago
thrwyoilarticle|4 years ago
odiroot|4 years ago
Is it a US-specific thing? Never heard of anyone getting it.
throwawaysleep|4 years ago
slibhb|4 years ago
I could probably get more by leaving and finding a new job (15-25%) but 11% is more than enough to convince me to stay. Also, there are factors other than money at play, such as not having someone breathing down your neck, having coworkers who are nice, respecting your superiors, and so on.
I have a friend who recently left a position at a startup paying ~200K (which is a lot here, we're not in SF/NY) for a 145K position purely to avoid dsyfunction, stress, and incompetence.
ggggtez|4 years ago
But in essence what you highlight also shows why companies don't pay to keep people to stay. Instead of paying someone money who hates their job, they might prefer paying less money to a new grad who isn't burnt out on their culture yet.
vsareto|4 years ago
Engineers can leave after months and still get jobs. You're not guilty of anything for leaving after 2 years for a VP position.
ilrwbwrkhv|4 years ago
nell|4 years ago
It is hard if not impossible to attribute an individual employee's performance to company growth. Many variables can impact company growth - so even if engineering does their job,product many not and vice versa.
Even if everyone does their job exceedingly well, a sub optimal strategy could kill the company. Or the market could shift. How do you account when company stops growing? If the spending will only go up, how will the company justify the increase in budget when there are bad times.
xtracto|4 years ago
A somewhat related anecdote that I love: In an online lending company where I was a manager before, I had the Data Science team reporting to me. At some point, one of the interns created a variable that improved the ML risk scoring model in such a way that the loan default decreased in about 2%. That is HUGE for a portfolio that has something like 10% default. This intern's variable saved the company a tremendous amount of money... yet the company did not give him anything for an improvement that was 100% measurable in $.
cproctor|4 years ago
The company would offload the work of finding market rates onto its competitors while potentially gaining insights into competitors' operational logic. And as a machiavellian bonus, this arrangement might depress its own employees' market rates because other companies might be hesitant to extend offers to candidates they suspect are not serious.
Dunedan|4 years ago
Also check out their culture document, which is quite interesting as well: https://jobs.netflix.com/culture
softwaredoug|4 years ago
I notice developers who switch jobs a lot claim to do so to “grow”. But they might not really stay anywhere long enough to get good mentorship and feedback. Growth takes tough feedback that we often don’t want to hear.
There’s almost no market incentive to “grow”, and much more incentive to job hop, never leaving a honeymoon phase with an employer.
Why would you grow as a developer? It’s much easier to switch jobs for a pay raise.
The market is hot for developers, that there’s very market pressure to grow, TBH. (That is if your priority is purely financial, which often is not the full picture)
donretag|4 years ago
When I started my career after the dotcom bus, salaries were quite low. At one point, I was making less at each position after yet another layoff. Then the market improved, and I was making considerably more with each new job.
Nowadays, I still job hop, but primarily because I do not like the role I am in. Companies will over promise and then never deliver. Bad managers. Many many bad managers.
maxk42|4 years ago
On the other hand he touts his use of a compensation formula, reducing engineering salary to a formula rather than taking into account an individual's background, experience, expertise, demeanor, and individual impact. (To be fair, he does emphasize that the formula will include "performance" in some way, but I've always been leery of boiling down performance to a simple equation. We've all been in roles where people have had material impacts other than lines of code committed, features completed, or KPI scores.)
I suppose I fundamentally agree with the author's premise that tech salaries should rise with the overall market to keep institutional knowledge from walking out the door, but on the other hand I don't think following a simple equation is the best way to get there.
throwawaysleep|4 years ago
danielrhodes|4 years ago
Using money as a mechanism for alignment is not always effective or useful in creative fields. Engineers join a company for a variety of reasons, such as wanting to be part of the mission, coworkers, personal development, brand/location/perks/benefits, and so on. If somebody wants to leave, it's because they have fallen out of alignment. When people are out of alignment they can grow resentful or hard to motivate, and that in turns creates a bad state of affairs for both an employee and the company. There's an opportunity cost here where somebody could join the company who has better alignment.
Another way to look at this is that some level of turnover can be a good thing. In the same way that some universities will not allow former students to become professors in order to inject new thinking, companies benefit from new people coming in and injecting new ways of thinking into their organizations. So encouraging people to stay to maintain organizational memory is probably bad over the long term.
graton|4 years ago
locallost|4 years ago
One possibility would be it's because of the price point that the manager has in his head for that individual. I don't remember the actual term from Dan Ariely's book, but it was about becoming attached to the first price you hear. So if you know the current salary of employee X, and they want more, you could be reluctant. But an unknown person that you want to hire will ask for more, and that might be fine.
Another possibility is that the management doesn't always know who they should keep, or simply they have a different perspective on who or what is valuable. So a regular employee might wonder that they let a person go, but their contributions were maybe either unknown or not as valued by the management.
ksaun|4 years ago
fshbbdssbbgdd|4 years ago
In short, the software engineering interview (and leveling) process is designed to discriminate between employees with different levels of competence signaling and negotiation skill, so each employee can be paid as little as possible.
darth_avocado|4 years ago
robertwt7|4 years ago
It is interesting that 99% opinion out there between engineers community is always the same. For you to get a better pay rise / career leap, you have to move company. I'm not sure why this is always the case, I guess it is different for those who joined startup like Netflix, Stripe, etc before they go viral.
Actually at this point because I'm still young, I'm sure I can do career jump many times for the next decade. But yeah, at one point having 1 company that appreciate you with good compensation is kind of like the end goal when I'm pretty old and don't have the energy to keep moving
systematical|4 years ago
Back to the point. I imagine somewhere in the next few years I will get another offer at 25% bump after a few years of small 2.5% bumps. Just the way it works. I chuckle, but then I think there must be something I don't know.
madrox|4 years ago
There are pros and cons to losing employees, and quite often it’s Pareto optimal to let people move on to bring in new talent. Engineers are generally paid pretty well, so money is rarely what a departure is about. I’ve seen a lot of engineers go, and only once was money the first reason.
jnwatson|4 years ago
The most successful company I've ever worked for had over 300 employees and 0 in HR.
ufmace|4 years ago
midnightclubbed|4 years ago
If you are a smaller company or start-up where you cannot give tradable equity then you have to offer something else. But if Amazon are hiring in your city then best to not try to compete.
austincheney|4 years ago
Unless you are selling software to a customer software is always a cost center. It is a tool, a means to end, which may enable business down the road but at any moment is just a money sink. That said it is generally lower risk for all parties to allow developers to write shitty software than attempt to connect software releases to revenue change.
In the world of web most developers I have worked with over my nearly 2 decades toil in configurations and composition. There is little or no application creation, and the application creation that does occur does so by a few internally trusted individuals irrespective of their pay or title.
To be very clear shitty software decisions almost always come down to a single question: Is a given decision primarily focused on business goals or developer preferences. For example is Spring MVC, Angular, or whatever a consideration because it will save the company $10 million over the next 2 years or is it because the company is more invested in hiring developers than internally training them?
trjordan|4 years ago
It's true that long-tenured engineers (if they're good) can do amazing things. Things that other engineers don't have the implicit knowledge or political capital to do. The problem is that once that project is over, it's not guaranteed that the next project will be as impactful.
So ... do you pay them for their impact? And promote them? Knowing you're guaranteed nothing the next quarter?
Or do you put up barriers to promotion? "Sustained performance" or "multiple successful projects?"
I'd love to see an approach to IC comp that's variable. Land a huge project; get a bonus. Everything past Senior Engineer is temporary; if you want to be paid like Senior Staff or Principal, do the work in that year. I suspect orgs could justify being more generous with bonuses because it's not recurring.
It's at odds to a lot of the way engineers look at comp, but it would align money with what individual businesses need in a more interesting way than the current "plan on your RSUs going up by 50% next year" comp plans at FAANG.
bobsomers|4 years ago
You hinted at this by mentioning political capital, but in my experience as engineers gain experience at the company their impact largely grows in ways that aren't obviously visible. It's not like they are churning out work or managing teams that have ever increasing product impact, it's that their job responsibilities expand to include things like:
These kinds of activities are critical to highly efficient companies, but rarely ever acknowledged as impact. At least I've rarely ever seen these kinds of things show up in regular performance reviews, and yet it's painfully obvious when these activities are missing.JayStavis|4 years ago
Feel free to teach me a lesson, but I feel this could be possible because:
- If people were paid to stay, then the supply of engineers in recruiting pipelines would decrease.
- If top performers were paid to stay, then the mere existence of a "counter-offer" mechanism would open up the door for bidding wars, where each bid is actually positive indicator for the quality of the talent. Today bidding wars largely only exist for somebody with multiple new offers, where neither company actually has a great measure of the talent.
- Retention pay is likely a compounding expense for the employer. Finance departments hates compounding liabilities.
Altogether would it make the labor market more efficient? Probably. Would it make businesses less profitable? Probably.
5cott0|4 years ago
bravetraveler|4 years ago
They do, eventually - there's a term: "golden handcuffs"
urthor|4 years ago
You can't just give one guy a raise. Especially in this age of Level.fyi, salary transparency works both ways.
Basically they are cycling through every other strategy other than an across the board pay band raise.
unknown|4 years ago
[deleted]
encoderer|4 years ago
Once you are within a company you will be given catch-up raises but in a fast moving market you will always be able to create a bidding war for your talent and increase your pay beyond what the employer will offer you.
You have 3 options.
1. Climb the ranks. Technical or managerial. This takes time and is rewarded generously at most tech companies.
2. Get lucky with insane stock appreciation. Stay four years. Leave when your income drops in year 5.
3. Leave every couple years for significantly more money, by combination of up-leveling and getting the now higher market rate.
Number 3 is the easiest path.
SpeakMouthWords|4 years ago
Trias11|4 years ago
HR's exists to keep minimizing liabilities - maintaining set of excuses to enforce minimal possible pays, ensuring employees have little or no say over important matters, prioritizing diversity over talent and painting a good face over all the necessary corp BS to maximize profits.
Engineers are necessary evil that "cost lots of money but doesn't bring any revenues". This of course an idiotic point of view but that's how execs are thinking.
metalex|4 years ago
paxys|4 years ago
And add the fact that technical interviews are still designed to be as painful a process as possible, so much so that people I know have given up guaranteed raises just to not have to go through it again.
urthor|4 years ago
The number of people out there who are happy being underpaid because of inertia far, far exceeds the number of people who will actively leave a job for another to get a bigger pay day.
Companies are caught because if they give the subset who are actively dissatisfied a raise, they are giving the "inert employees" a raise as well.
Hence they have a huge disincentive to give anyone a raise.
aristofun|4 years ago
There’s no economical value of holding him back.
It’s cheaper to hire a replacement within planned budget.
Another point — in well organized business any engineer in any position is a replaceable unit.
Otherwise business is not scalable.
So companies do the right thing.
The right question is — why many engineers are staying for so long, even though its not profitable for them after some time/experience?
flowerlad|4 years ago
Performance is hard to measure. It is highly dependent on the biases of the person measuring. So despite having a "formula", the outcome is not at a all predictable.
MentallyRetired|4 years ago
I like this approach. It incentivizes and rewards. Even if things changed and this turned into a buyer's market, it should help with employee happiness. Buyer's markets tend to drop employee happiness as employees feel trapped.
karmasimida|4 years ago
Ofc this would be dependent on how critical that specific personnel to the group or company overall.
One thing to note though, when the employer is handed over the 2 week notice, for the employee, the process has been at least months in making. I don't think at that point, it is merely a matter of money, sometimes people do want to shake things up.
yawaworht1978|4 years ago
nokya|4 years ago
One thing we know for sure: most people don't quit a company, they quit a manager. Companies are traditionally bad at identifying good managers. I think poor loyalty is mostly symptomatic of poor management.
ctvo|4 years ago
Engineering compensation at big tech is too rigid to award high performers adequately. Some folks double the impact of others in the same role / level, and make 20% more, at most.
Leaving and joining a competitor moves you to market rate. You fall behind each year at the job / role in this market.
unknown|4 years ago
[deleted]
ChicagoDave|4 years ago
xyzzy21|4 years ago
This isn't just for programmers or engineers - it's any job.
cable2600|4 years ago
Even McDonalds and fast food joints do it. They have benefits that cost a lot if the employee continues to work there.
Always finding new employees via citizens or H1B Visa workers.
ChrisMarshallNY|4 years ago
datacruncher01|4 years ago
SergeAx|4 years ago
The point is that companies should compensate their top-impacting engineers with equity, not money.
_trampeltier|4 years ago
mathattack|4 years ago
IanCal|4 years ago
collaborative|4 years ago
Best to keep my head down, don't want to push elbows with this lot
haho4|4 years ago
Companies just do not value their own employees over new ones.
rajacombinator|4 years ago
sigzero|4 years ago
sammyloso|4 years ago
sammyloso|4 years ago
omegaworks|4 years ago
What are you, a communist? :)
tedchs|4 years ago
arielweisberg|4 years ago
tschellenbach|4 years ago
cyanydeez|4 years ago
black_13|4 years ago
stakkur|4 years ago
cblconfederate|4 years ago
plankers|4 years ago
Never fails to make me smile watching capitalists advocate for planned economies :)
unknown|4 years ago
[deleted]
ChuckMcM|4 years ago
The challenge is performance is transitory and pay is forever. Specifically, you will have engineers who happen to be on a project at a time when they can have a big impact, and they do and you want to reward that. But then the next few years might be polishing that project's stability and corner cases which will "feel" like very little impact. As a result if you change their pay to reflect their impact when they first deliver, and leave it like that, then the next few years will "feel" like the curve is inverted and your paying and not getting the impact that you would expect from that level of pay.
This is why, invariably, engineer pay tends to evolve into "base pay" + "bonus pay" which can be thought of as the cost of keeping you around and the appreciation for what you have done for us this year. Many people make the "bonus pay" a fraction of your base pay, in that way an increase in your base pay will be reflected in larger bonuses later. Google famously did this and then added a twist which was called a "personal multiplier"(PM). This PM could range from 0 to 3, and the trick was it was kept secret. In that way you could never know whether or not your manager was "playing favorites"[1]. But it gave them a nice talking point about being "open" about how you would be compensated while not letting you convert the how into actual numbers.
The second thing is that everyone is different. And even when they are a lot the same, they are different. Sometimes people will reach a compensation level that meets all of their needs, and lets them save for retirement, and they don't "need" any more than that. Tandem had a great term for that, it was called people who "retired in grade" which was code for someone who was not being motivated by pay any more so they weren't working as hard as it was possible to work them.
The third thing is that sociopaths love a score. They really really do. All you have to do to get the most out of a sociopath is tell them how you are going to score them and let them see how they score relative to other people. (you'll say "pay" in your discussions but the sociopath will hear "score.") These folks will invest all of their time and effort in "winning", and because they are sociopaths they won't necessarily use that tactic of "work harder than those you are competing with." They may in fact spend all of their time developing schemes to sabotage other efforts in order that their effort stands out. Really not a great place to be, really.
The bottom line is that compensation is hard, doing it well requires that you be honest about what you would pay someone to replace the person you are evaluating and verifying that you are paying them at least that much. And when people start going the other way, you need a plan for that too (you can fire them of course, but as the article mentions they have lots of domain specific knowledge that is handy). Generally successful companies move those people to working on projects that are important but not urgent.
[1] To no ones surprise, the managers were playing favorites.
France_is_bacon|4 years ago
.
One thing I personally have said for a long time, is that when you are just starting your career, you should get it in your head to change jobs as much as possible - so through your 20s to mid-30s. The reason is because a job move will almost always increase your pay, much more than any company ever will.
The trajectory of income earnings at your early stages will be the most dramatic because there is a ceiling, for the most part (there will always be outliers), on how much you can earn, no matter what. You'll never see a programmer making $2 million, doing programming, for example. So if you start up at $60,000, just for example, the faster you get to $150K or $200K, if possible in your specialty if you have one, the better, because incremental increases will slow down at that point, no matter what. It will be much more difficult to get a job at $200K, as it will be to get to $75K. (Don't worry about the exact numbers, I'm just using them as an example).
When you're in your in the 32 years old to 35 years old, you can start looking for a long-term job that has your values and interests.
It used to be that companies wanted people at their jobs for a long time because it showed stability, and that they would stay with the new company a long time. I'm sure there are companies like that still out there, but if you change jobs a lot, like every 2 years, hiring companies will more likely look at your history and think you are a "hot commodity" that everyone wants to hire which causes more competition from hiring companies.
There's also the fact that if you go from $50K to &75K to $100K over 6 years, rather than $60K to $76K over 6 years, the hiring company will find it much easier to increase th pay the person making $100K to $130K, rather than pay the $76K person to $130K. Even if both have the same exact skill level. It's just human nature. And it is kind of true. The person making $100K knows their value and goes out and gets it, the other is more complacent, whether you think that or not or have all kinds of reasons why this is not true. Those are your reasons, not the hiring company's reasons.
Finally, the other thing about changing jobs a lot at the beginning of your career and making more money is that when you do get a raise, let's say 10% raise for the two people in this example, the person staying at the same company for 6 years and goes from $50K to $78K will get a raise of $7,800 (and the same with a bonus), while the person going from $50K to $100K will get go get a $10,000 raise (and bonus). And that difference will keep getting larger the more money you make, obviously.
Fuck loyalty to the company - they have zero for you. And your friends will still be your friends as you all disburse over time to new companies, and you will have a nice network over the country. Plus you will make new friends at your new company and expand your network even more.
And, by the way, your absolute best way to get more job offers and higher pay, is by giving talks and publishing. I know one guy that gives technical talks twice a week, anywhere there's two or more people. I talked to him about it, and he said that he gets at 2-5 job offers per day sent to him. When you do public speaking, you become a thought leader, or industry leader. The same goes if you publish something - in a well-known website or a chapter in a book compilation, or whatever. You are again a thought leader.
cryptica|4 years ago