Why don't tech companies pay their engineers to stay?
marker.medium.com
marker.medium.com
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.
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.
Exactly.
There are many small companies that will be far more impacted be one of their 2 developers leaving than they would be by the owner being hit by a bus, but they'll still balk at raising salaries.
I remember that in my peak webdev years in 2008, you built webapps by designing the HTML, converting it to templates, filling in data with Django or Rails, and then adding judicious interactivity with JQuery. By 2011 the world had moved on to Angular and SPAs, and you built webapps as a single HTML page and large JS bundle with a bunch of components that you'd fetch data for over AJAX. By 2013 the world moved on to React, and you had all these tools (Gulp, Grunt, Bower, NPM, etc.) to automate packaging and code-reuse. In 2015 people were still using React and more mature versions of these tools, but what changed was the economic reality that you could make lots of money as a webdev, and the industry itself was maturing with demand for new apps dying out.
I'm witnessing this with my team at work too. We have an "old guard" of leadership that joined the team in its peak years in 2018/2019, and learned (and often wrote) the tech stack as it existed then. Now our team is colliding with infrastructure efforts that started elsewhere in the company and were too immature to use last year, but are now starting to bear fruition and get widespread adoption throughout the org. People who were experts in the old way of doing things find that their skills and projects are now largely irrelevant.
I've observed similar technology shifts with backend code (where MySQL was hot in 2003, PostGres in 2006, MongoDB in 2009, Cassandra in 2011, PostGres again in 2015, and now there's this huge explosion of storage solutions) and in platforms (where we were all about the web in 2007, all about mobile in 2010, all about blockchain in 2013, all about smartwatches & VR in 2015, and all about Ethereum & smart contracts in 2018).
My experience has been that paradigms and tools can move fast and are relatively straightforward to pick up. Deep understanding of the underlying problem domain and the systems underneath the abstractions is harder to pick up, but the concepts move more slowly.
That's exactly the same web-dev mindset, only applied to backend code. I find it remarkable that you take a half-life of 12 months to be a given, rather than a screaming red flag.
Yes, the world changes, and code needs to change along with it, but it doesn't change that much. Replacing 50% of your codebase every 12 months, year after year, indicates to me that the organization is just replacing poorly architected code with different poorly architected code, not better code. The codebase is on a random walk, and any forward progress it makes is due to chance and evolutionary pressure, rather than reason and design.
Turnover is definitely not uniform and a 12 month architecture lifespan is not, in my experience, either normal or healthy.
Exactly, and it is a shame. Stability and building on the shoulders of giants is how progress is made. Not by rewriting everything all the time.
Luckily I don't work on frontend UI stuff. I learned UNIX, kernels, cryptography, TCP/IP, SQL and similar technologies in the late 80s to early 90s. While all of these areas have evolved and progressed, it's been a gradual incremental change year to year. A textbook on any of these topics from 1990 is still recognizably relevant, even where details have changed over the decades.
I actually had a personality test where this was one of the things it measured. In my case, I think it did so accurately.
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.
Explains why this mentality exists. Middle management cannot see the impact.
AFAIK in US is typical to change SWE job every few years (those 2-3 years indeed). Those who succeed in doing this consistently (I'm not implying one should, or not) ganerally end up with a high salary, a higher position, and more satisfaction (assuming that change give them satisfaction).
Parent's observation may be a reasonable explanation when looked into context - the time to move on arrives after 2-3 years, and if there's no strong incentive, devs will start to feal uneasy, and move on.
This is not specific to engineering positions, it is a pretty common fixed policy in many industries.
it's shocking the number of developers I've seen left standed in their carrer progression (to quit eventully) due to overhiring and ending up siloed away somewhere
but I guess that's just kind of the way it goes working for other people though
This is like saying, "Making people drive slower will reduce total number of accidents. So lets just reduce all speed limits to 25 miles an hour. It's only the obvious solution right?".
This kind of lazy thinking is called incompetence, because finding really good balanced solutions is actually work. This work involves observing problems, understanding root causes, piloting and experimenting, bringing other mangers, skips and CXOs into alignment, executing retention deftly while keeping reports happy. But this is too much work for managers (but of course too much work for engineers is never too much work).
What a joke! No wonder SWEs complain so much about management.
It is similarly easy to envision an environment engineered to encourage engineers to produce their best work 3 months into a role; Give new engineers one really exciting, well defined, small greenfield project, after that move them into a legacy maintenance role, never give bonuses, raises, etc. I know I'd get burned out pretty quick; my best work would be very early on.
It is harder to envision a systemic change to encourage engineers to always have produced their best work yesterday. I'm not suggesting its easy; by far, the easiest and most common course of action is exactly the environment the parent commentator engineered, where engineers peak a couple years in. But, don't be fooled; the engineering division absolutely suffers in this environment, and it is possible to do better.
If not, you are forever going to be stuck in the cycle of hiring and attrition.
And blindly accepting things as it is, is the root cause of corporate decay.
If you want a high performance team that cares about management and the job, management will have to return the favor. If corporate structures prevent managers from doing this, managers need to band together and fight HR or whoever is far behind the curve.
Sorry, you are representing your company to the ICs. If you, a middle manager, can't talk to the powers-that-be to change the system, your reports will lose their trust towards you.
You need to have a realistic view of how things work to make progress, and managers banding together is comically unrealistic.
In a company where HR or Finance runs tech, you’ll get one set of outcomes. Those outcomes are likely different than if tech runs tech. It’s not shocking to me that Google and Netflix get the results that they do; in those companies, HR/Finance isn’t running tech.
Recruiting and onboarding a new engineer takes months and the lost productivity is at least 100K when you factor in engineering hours spent interviewing, recruiter fees, months for new dev to learn code base, etc.
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.
The way you do this is interview elsewhere, get an offer for 40% more, and _then_ tell your manager that you have an offer for 40% more and that you'd really like to stay but they'd really have to do something about compensation. You'll get more than 5% then (but likely less than 40%). It's annoying that you have to invest the time for this, but it does provide data to your current company that your market rate is in fact what you think it is.
- If am a resource critical enough for the company to match an external offer and keep me because of the work I do and not because I'm threatening to leave, why don't they act on it diligently and offer benefits accordinly (relevant pay raises, shares and etc.)?
- The moment the company becomes aware that I'm considering to leave for some place else, I'm a potential replacement, if a good candidate or a layoff comes along.
If I'm interviewing some place else, when I put my notice, I've made up my mind, I won't stay around long term.
It's not about being critical. Even as a more or less interchangeable programmer, if you've shown that you're actually any good then you're worth keeping.
> - The moment the company becomes aware that I'm considering to leave for some place else, I'm a potential replacement, if a good candidate or a layoff comes along.
If the company/team/project is growing then there's no reason to drop someone, and if it starts shrinking then you're better off being the first out.
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.
The original assertion was that relationships tend to break down in year four, meaning that they aren't likely to make it to marriage in the typical case. Marriage data is only relevant to the outliers who married early, and as far as that goes they could all be found in that 20% quite easily, I'm sure. The data provided is not sufficient to know.
I’m not disputing that humans get together and break up all the time.
It’s unclear that monogamous relationships breakup “at very high rates” due to boredom either. There are many reasons relationships falter, boredom being but one of them.
A monogamous relationship is usually, especially when not arranged, established well before marriage. Divorce rates that hinge on years of marriage and not years of relationship does not provide us with any useful information here.
And why this strange obsession with arranged relationships?
I'm not sure where you find obsession with arranged marriages? The original comment excluded arranged relationships, presumably because people in arranged relationships maintain a relationship for different reasons than those in voluntary relationships. But if you really want to understand his intent, I'm not sure why you're asking me?
Arranged marriages have a lower divorce rate but a higher separation rate; suggesting cultural prohibitions against divorce and not a higher success rate. It's odd to keep culling those types of relationships out.
Ok, that was awesome. Guilty as charged.
The best cure for stagnation I've found is to take long breaks and get into something else.
No, but lack thereof can certainly cause it.
When there's no real reward, what's the point of putting in the extra work and taking risks? Two things that quickly break stagnation.
Have I given up potential pay bumps by not going external? Sure, probably. But I have enough to be comfortable and my company has treated me well, both monetarily and in facilitating these kinds of changes when I've wanted them.
I am in the same shoe of feeling stagnating this year and trying to figure out how to get out of it. The boringness and familiarness just drags along ...
There's just a complete mismatch in how much the company I work for values the experience and skill I gain over time and how much everyone else values it. Over time recruiters come to me with opportunities to make more money, they try to convince me to leave. It's such an obvious disparity I can't help but stop caring about the job I'm doing when it's only real utility to me is that I don't have to put in any effort to keep having it.
Because it's a form of systematic corruption, maybe the biggest kind of corruption in the White Collar world.
The objective is to 'do a good job' , not the minimum, in every endeavour.
Doing the 'bare minimum' to keep a job is actually generally far under-performing, as most companies won't generally let people go.
It's how entire industries stagnate and sink.
When internal participants spend most of their time fighting over the surpluses, it's over.
This applies to companies as whole as well of course, i.e. the $1B government contracts that should only be $500M etc. etc..
Do a good job. If there's a better fit elsewhere, that's fine too.
(I'm making an assumption here that you're not big on Marxism, I guess—maybe you do agree with both propositions)
"If I make a penny my boss makes a dime, that's why I shit on company time."
And, pretty much all of those deviations from theory end up going against workers and in favor of employers. Labor markets aren't truly free because most people can't afford to just quit their job one day, then walk across the street to their former employer's competitor and negotiate a more suitable contract. Health insurance is so expensive that most people probably couldn't afford the amount of coverage they need without the subsidy their employer provides. Meanwhile, employers get away with stuff like union busting, just like Amazon is accused of doing, because "punishable by fine" really means "perfectly legal, as long as you have enough money," so that regulatory fines get treated like just another "cost of doing business."
Is it any wonder the only narrative about the employer/employee relationship we ever hear is the one that's favorable to the more powerful side?
Second - professionals have incredible power and market wages are what they are. Most corporations do not profit in some exceptionally linear way beyond employees.
The 'Giant Lie' is that corporations are some magical entities that collect magic surpluses and shareholders and owners run off or private jets.
The vast majority of companies are not hugely profitable, and most small and mid-sized one's are not. Especially not in some disproportionately 'non linear' way.
Stock prices may be crazy - and those who trade stocks may or may not be making bank - but that's a very odd historical situation we have where shares are trading at absurd levesl relative to profits. That's a market 'dysfunction that may or may not be around for a while that some people managed to make money from, like Bitcoin, it's just a Ponzi-ish thing that has happened.
Corporations are not drowning in profits, and White Collar employees soak up the vast majority of corporate spending.
FYI everything I'm saying applies to mostly white collar professionals, for unskilled labour it's a different story.
Employees are never paid for the marginal value they provide, because for among other reasons, there’s no such thing. You could come up with an infinite number of different ways to calculate that, which could all produce a different value. An employee is either paid something close to the equilibrium price for the labour they’re offering, or something close to the average equilibrium price of all employed union members, if they’re a union member.
First - side point - I didn't indicate that people should be outputting 'maximum work quality effort'. Just 'Doing A Good Job'.
Second - more salient - yes, comp is a big factor, I understand that, but it's a little bit of a marginal issue among professionals.
For workers who can reasonably negotiate a salary beyond the prevailing labour wage, it should be assumed they have market value commensurate on some level with their value.
Corporations are not some vast powerful entities that absorb all the surpluses for their shareholders. It's risky for them.
I would argue that White Collar professionals are in fact absorbing most of the surpluses.
Google could lay off 1/2 it's staff and still make just as much money.
Your point becomes much more relevant when the power asymmetry is stark, when employees have no differentiable skills or power like Amazon employees.
For them, yes, it's a different discussion around regulations, unions etc. and only when those basics are satisfied would it be fair to implore workers to consistently 'Do A Good Job'. But for processionals, it should be a matter of very basic integrity.
Nobody has that objective except the very passionate. A company will happily do a shitty job if it will still get paid. See IBM. See Facebook and Google on customer support.
> Doing the 'bare minimum' to keep a job is actually generally far under-performing
My manager hasn’t seemed to notice that I work a 1/3 of what I used to now.
The basic structure of small consistent pay bumps was extremely effective when people stayed at companies for decades. Work twice as hard and make 2 percent more for the next 30 years, that’s a big bump. Pensions pushed that out so even people nearing retirement still had reason to care.
I am not recommending people do the minimum, just acknowledging how people respond to incentives.
So I’m basically just vegetating until I quit.
That's an extreme example, but even in a "good" system, management is notoriously blind to the actual value of an engineer. In a perfect system, performance could be measured empirically and compensation would be based on that. But no one on earth has figured that out yet, and something tells me they never will.
Imagine a world in which it's very difficult to assess performance, because that's often the reality.
How does this system flourish if everyone is doing the minimum / least?
It doesn't. It fails.
'Do A Good Job'.
That the performance reviews say are a secondary factor.
If you all stop doing good work, it will fall apart quickly and you will all be poor.
I'm replying late, but wow, this is a gem of an argument.
Really? The economic incentives that create this lucrative field in the first place are all gonna collapse if devs realize they don't need to bust ass at their job anymore? It's amazing that you think the individual work ethic of engineers is the only thing holding the tech economy together.
This is very cynical and pretty much wrong.
I would put that attitude probably in the bottom 20%. I think most people want to do a good job.
It's also kind of toxic because unfortunately it spreads.
'Doing a good job' frankly, often does not even mean working harder, from a lower-performing perspective it usually just means actually paying more attention and being more conscientious.
And yes - in a large corporate situation, it's very often sometimes to feel the impact, be recognized etc. etc. - but that shouldn't dissuade from basic professionalism.
If you're truly only 1/3 as productive, your manager surely notices, but there's probably little they can do about it. It may not be to their benefit to even try to fix it.
This is what I mean by systematic decline - this is how bridges never get built, and they go 10x over budget.
This is why NASA spends $200 Billion on only a few launches.
It's why Ford/GM can't innovate.
What Space X and Tesla are doing is in some ways spectacular, but in other ways, they are just doing what they are supposed to, and they can, because people are just doing their jobs.
Life is a giant Prisoner's Dilemma. We can all spend our time trying to do the minimum, or even taking the cream off the top while nobody is looking, in which case, when everyone starts doing that it all comes down - or - we can try to be consistently conscientious.
For real, If there is any single problem with the world its people doing too much. The oceans didn't fill with plastic from people sleeping in. The air didn't fill with CO2 because people clocked out early on Fridays.
Take a step back and look at life. Why should it even be work? Do birds sow seeds? Are monkeys bad programmers? Or, are they just monkeys?
So many, especially systematic problems would be much better resolved when people did their jobs a little better.
Montreal just built a rail line for $500M that may likely become redundant. That's bad, it matters. It's mostly a leadership / management problem of course.
I'd buy that most people want to do a good job. I doubt very much that many care much about doing so, beyond what's necessary or what they expect to gain them greater compensation, at the job they do to earn money to pay the bills. Everyone I know with even a little of that "spark" has had it extinguished by experience. Usually before they're 30. Most reserve their good work for things that pay little or nothing. They care a lot more about that.
Yes if business priorities change I could end up out the door, and that happened once, but no hard feelings. I quit all my other jobs anyway and there was nothing malicious either way.
The clothes on my back, and those if my children, the house we live in, the car we drive all were paid for by my employers. Yes it was a transaction, but a beneficial one on both sides. It’s all good.
You're also selling yourself short. You paid for all that stuff. Your employer paid for the work you did, and probably took more whenever they could; through on-call, off hours work, etc...
I try to comp my time, but I know I put in more then I'm compensated for, even when I was technically "hourly". I'm fine with that, but I expect to take back when I need it.
Why is it a character weakness? Why is it bad for you?
By putting in low to average effort and switching jobs often, I doubled my salary in 5 years. All the while, I've had tons of time for vacations, hobbies, and having a life outside of work. And I've never gotten a single negative performance review. All my 1 on 1 feedback from managers has been glowing.
If a company could use half the labor to get twice the profit, they'd do it in a heartbeat. That's the purest essence of capitalism. Why should I behave differently? The guy on my team who works nights and weekends to get assignments done gets paid the same as I do. He's just more miserable for it.
Sounds like you're talking about the extra time that some places seem to expect. If that's what we're talking about - I totally agree that it's not worth it.
Edit: if I could double my output and know that my salary would double too, I'd do it in a heartbeat. But I've never found a company with a comp structure that can actually achieve that. It's far more effective to just go on autopilot for a year or two, then get a 30% raise at a new job. Rinse and repeat.
I don't think the formula is particularly linear. Double value produced means double the salary is likely the wrong equation, but it is right in principle.
If you work hard you will be developing a lot more relevant skills than floating along. This makes you more valuable. Not everyone recognizes, or is willing to pay for that extra value in salary or promotions. But some people will, and some people are.
In the event you strike out on your own as a freelancer or your own business, working in that manner becomes your lifeblood that will make or break you.
I get more reward and fulfillment from my hobbies and personal relationships than I'll ever get from creating another CRUD app for ${boring_business}. Half effort leaves me more energy for those things, and half effort still gives me more than enough experience and talking points to nail my next interview and demonstrate value to hiring managers.
> In the event you strike out on your own as a freelancer or your own business
I have no intentions to do this, but if I ever did, then as my own boss my performance would be directly tied to what I earn. So yes, I'd have a much different approach.
I didn't say that.
I said they should 'do a good job'.
As should the other company staffers, execs and the company as a whole.
It's difficult to measure employee productivity. Sometimes, managers don't care. Sometimes employees make every effort to hide their lack of productivity.
Despite that we might think of companies as 'evil' - most of them are not. We're all human, none of us like laying people off or firing them. It also comes with negative political consequences i.e. the person you fired may never be a good reference in the future. The manager may have negative incentive to let people go, as their 'worth' is founded on headcount. And truly the vast majority of employers just don't want to layoff or fire if that don't have to.
What this means is that there is quite a lot of 'grey' in the system, and there's a lot of goodwill assumed by all parties.
Everybody is saying that they want to do 'remote work' and at the same time signalling that they may 'want to do the least, because technically, I'm getting paid for that?' - in a situation wherein there is quite a lot of 'trust' expected?
How do we expect employers to 'trust' workers in a 'very noisy productivity assessment channel' with this kind of approach?
It just won't work.
There isn't enough time in the world to be looking over each other's shoulders like that (I particularly don't like Amazon's approach for example).
So the onus is on us to 'do a good job'. It doesn't mean 'break your back' - it means try to do what is expected, keep your chin up, grind through it.
I feel that if people could see the big picture, and see that mountains are climbed one step at a time, that morale across the board would be higher. 'Passion and inspiration' are nice, but fleeting, whereas 'grinding' through the issues is how most things ultimately get done. In this way, they might be more personally incented to 'fix that bug' or 'get that build out'.
I've seen far too many corporate moves that were driven by executives looking to goose the stock price to believe that. You can argue that it's the executive's job to goose the stock price, and thus they "have to" lay off people in order to avoid taking as much of a financial hit in a recession or whatever, but that just gets us back to the original position: the company has a minimum amount of loyalty to me, and, in return, I have a minimum amount of loyalty to the company.
In the face of a major recession, execs are not laying off to 'goose the stock' they are adjusting to the situation.
Of course it does happen, but in the grand scheme of corporate development across all industries, it's not hugely common.
There is a difference between 'loyalty' and 'doing a good job'.
It's not expected that companies will keep contractors for the long term, but they still would be expected to 'do a good job'.
And of course companies do not lay off talented people unless they have to - that makes no sense.
Even the most darkly cynical and Machiavellian Execs will try to keep talent if they can, otherwise, they can't make money. So more appropriately, employees will at least be held onto to the extent that they materially create value.
But again, even in that context 'Do A Good Job'.
Honestly, if even it's a crap company, it still makes sense to 'Do A Good Job'. Even in the face of grind.
The only time I think it makes sense to 'not' do a good job, is where it would be truly utterly futile or illegal etc..
If someone is in a bad situation, they can eventually move on to where their 'good work' is more appreciated / better compensated.
Loyalty isn't a huge requirement, but doing good work is.
My current employer, fortunately, does. Even before COVID, they were flexible w.r.t. work from home, and the management is more than willing to let you do your thing as long as you're delivering results. I will, and have, repaid that flexibility by going above and beyond in handling issues that weren't strictly my responsibility, working late on more than one occasion to ensure that deliverables got out the door in time.
However, I have had the misfortune for working for less understanding management. I've had management say, with a straight face in a team meeting, "If you're working from home, you ain't working." I've worked for management that openly ridiculed employees who had to take time off for family medical emergencies. You can be sure that, in those situations, I clocked out exactly when I considered my shift over.
The former is the employer's problem and as far as the latter, I assume in this discussion that the employee isn't committing borderline or outright fraud with respect to the job description laid out in the contract. Considering how many people get hired to do flex work like security guards or to deprive competitors of talent, plenty of employers are aware of this dynamic.
However, my goodwill only goes as far as "at will" employment protects me, which isn't very much.
Something tells me that the commenters in this thread who are defending the idea of working hard just for the good fuzzy feelings have never been through a bad layoff.
If those sound like awfully specific examples, they are. Each one of them actually happened to someone I know.
Things like that teach me that corporate "good will" is an elaborate show. You are an expense to them, a necessary expense to achieve a certain output. You are paid your market value, not penny more. If they can pay you half your salary to get the same output, they will. If they can lay your team off and get significant cost benefits, they will. You are disposable. That doesn't mean they're bad people, they're just doing what any self-serving profit-seeking bureaucracy would do.
Thus the relationship between an employer and an employee is always transactional, and any feeling otherwise is an illusion. It's not evil - it just is.
The only asterisk to all of this is if you're at a more community-focused organization like a non profit. But the vast majority of companies that employ HN readers are not that.
First - you're mixing streams here.
This is not 'amoral'.
This is just people trading services.
It's not 'amoral' of you to not keep the plumber on when he's done.
Second - companies actually do avoid layoffs. Most companies could layoff 10% right now and not skip a beat. Especially white collar. Google could dump 1/2 it's staff and be just fine.
Most companies have slack and generally avoid doing layoffs unless there's a special situation.
"the relationship between an employer and an employee is always transactional, and any feeling otherwise is an illusion."
Generally, this is the case, yes, why on earth would anyone think it's anything else?
Why on earth would a company employ people otherwise?
But again, once people are employed, they're not doing to drop them instantly.
It's all besides the point, in any case, one should be aspiring to 'Do A Good Job'.
> Most companies have slack and generally avoid doing layoffs unless there's a special situation.
You're just making arbitrary claims here - the fact that companies can and do lay people off without notice and, sometimes, without severance, still confirms the nature of what I'm saying. It's all feel good until it isn't.
> why on earth would anyone think it's anything else?
I don't know; ask the others in this thread. There are plenty of people here claiming that they owe their company things (time, emotional investment) that go beyond the scope of their employment contract simply because it's "nice."
> once people are employed, they're not doing to drop them instantly.
This is simply not the case. Or, rather, it can be the case so easily and at any time that it's foolish to assume otherwise.
Trust and loyalty are 2 way streets, the social contract has been broken by corporations
What’s the alternative, against their will employment? That sounds like it would suck all around.
This is universally how people with actual leverage (i.e. high performing athletes, Fortune 500 C-level execs, etc) get paid.
I just hope it doesn't mean HN is transforming into Reddit, with all the zero sum game people scaring and demotivating each other.
Then like the cops in the prisoners game you are tricking yourself at playing the zero sum game because of trust issues.
I personally have not seen much correlation between pay working hard and getting pay raises, it seems about as likely as getting one for doing the minimum, and the effort to dollars ratio is usually not worth while. I don't want to put in 50% more effort only to get a 5-10% raise. Plus, as stated before, switching jobs results in much bigger pay increases making the raises irrelevant.
In a world like that, the people who just "do a good job" are characterized by some level of stubbornness coupled with an ability to navigate this kind of environment. Should that really be the key skill that matters? Is not being sufficiently stubborn "a form of systematic corruption"? That seems like a fundamentally uncharitable perspective that also provides no real solution. When that's how you see the situation, what can you do about it?
My experience has been that changing environment and process to actively trust people and, crucially, clearly signal that trust improves things far more than blaming people. If you expect people to phone it in, they probably will; if you can establish real trust instead, they'll go out of their way to make something work.
To give an example, at one of my previous jobs, for several years in a row I was noted by my managers as being a high performer and someone who would be ready for leadership. Despite this, I got an average (you did good but that's it) performance rating, because only a few people could get the higher rating. The first year I had just joined so I was excluded by default, the second/third year other people ranked higher and because that rating only went to about 2 people, I missed out. When after this my manager approached me about a lead role, which was extra responsibility but no extra pay, I was pretty much done.
When I was in my 20s-30s I hated people who seemed like they checked out, but I understand that a lot more now. Again, I'll do a good job regardless and if I don't get rewarded for that, I'll find the door and go elsewhere, but I completely understand why people who don't have that luxury or drive would rather keep their heads down and just go through the motions.
So you 'did a good job' and the company maybe indicated there was a future for you, but they couldn't fulfill it. That's not hugely nice.
But can you fathom for a minute that it seems your peers were doing 'An Even Better Job' and perhaps better suited for advancement? At least in the eyes of the company?
Put on your 'Management Hat' for a moment and understand that maybe it's unfortunate you thought there was an opportunity where there was not, but that those kinds of indications are fleeting anyhow.
Someone thought they were going to Lead the League in Scoring until it turns out they didn't.
At very least, despite the companies misrepresentation, a lack of professional maturity for young devs. to assume that 'hope' is a guarantee of anything. When you're a manager, you're a manager, before that, it's all talk.
This scenario isn't even a 2 out of 10 in terms of the mistreatment or misappropriation of employees - it's just a mostly normal thing that happens in noisy channels.
Maybe they were thinking of advancing you - someone else came along. That's life.
I'm glad you seem to want to 'Do A Good Job' regardless, but it should be noted that you're not comped for future prospects of advancement. So in this situation just 'Doing A Good Job' would be an expectation of the job. Not some thing you do on the condition of some future event.
If you are mistreated, obviously, that's not good, and it's the company leadership 'Not Doing a Good Job' but I don't see a strong indication of anything other than normal operations here.
Fighting over surpluses is a very healthy dynamic, it’s a mechanism for individuals and organisations to understand the importance of each other’s contribution, produce price signals and improve the efficiency of the system. Instead pretending that a salary negotiated 10 years ago still matches the value of my contribution produces all sorts of distortions (eg productive employees being blocked in less productive organisations).
There is generally surplus value in any exchange of goods or services that benefits both parties.
Some people insist that if the employer captures it, they have stolen it from the employee, and others think that if the employee captures it, they have stolen it from the employer.
The fact is, it's up for grabs, and what I think is salient morally, is that neither party created it alone.
Isn’t doing the minimum exactly the same as the company paying workers the least amount they can get away with?
Yikes! That's my current situation in a nutshell. My biggest concern is that I don't want to risk jumping ship and landing at a toxic company/team, or landing in a bad work culture.
Don't get me wrong, I've got a nice vision about what I want to do where I am, but I can't get the money to carry it out, so I'm in that "no to low effort" stage.
In my experience there’s almost always something toxic about a workplace, it’s finding one you can live with for a few months or years that’s the trick.
I really don't care all that much about how I'm being paid, I'm pretty easy about it. But it nonetheless played a direct factor in quitting two jobs because I felt I was being woefully underpaid (which I objectively was; although I guess you'll have to my word for it) and efforts to bring it up to a more standard level were being frustrated to such a degree I felt that a lot of "extra effort" I had put in to the job just wasn't being appreciated at all.
Always hard to tell.
Instead, most companies reward no one and wonder why the good ones leave or burn out ("weird, they don't contribute at the same level anymore").
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 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.
More seriously, your observation is brilliant (and almost makes me wish I hadn't just accepted a new role). Because the software field contains such a breadth of things to know and breadth of potential applications, it's hard to get very far without having the kind of mind that is motivated by some level of intrinsic interest, and that can be a currency in its own right.
The perfect match would be pairing a developer that can explain some technology to a 12 year old with a developer that has the equivalent knowledge of a 12 year old (for that technology.) That would keep things interesting and build a very resilient organization.
To keep things interesting/challenging for the experts I'd have them also reach across domains (to system eng, safety, quality assurance, bids, R&D) and sometimes even overreach (blur the boundaries) while protecting them from corporate-strife. Software is far more interesting in the context of the product, the customers, actors on every critical team. I'd also have them try new techs, or find some innovation/maturity budget for 'pet peeve hunts' and we'd often end up with new tools, large-scale improvements in code, perf, readability, robustness, observability, or testing. I'm going off topic here but I'm sad that 'Slack', the book, isn't more widely read.
It seems like modern management theory has gone out of its way to optimize out the impact that any one low level employee can have on the company. And that makes sense when the goal is to make money. But what you're left with is a society full of people in mind numbing dead end jobs developing psychological issues.
This seems like another thing Trader Joe's does—I've been to their stores in a few places I've lived, and while they always have a similar aesthetic, a lot of the specific decorations seemed to be unique per store with nice local details. Of course, this could still be done in a totally top-down way—hiring local consultants or something—but I wouldn't be surprised if a lot of that was done by the store employees.
> And that makes sense when the goal is to make money.
Abstractly, I expect that this isn't the best way to make money. Modern management practices seem to value legibility and control even at the expense of expected income and company resilience. This probably says something fundamental about our culture, philosophy and incentives, but I'm not sure exactly what!
It's only been a year since they were in the news for not letting people wear things that say Black Lives Matter.
And there was also the employee fired for sending a letter to the CEO about working conditions.
https://www.inc.com/suzanne-lucas/trader-joes-dan-bane-firin...
I think there was a boycott, but people move on so quickly.
Would you also insist that TJ allow employees to wear "Meat/Abortion is Murder" buttons?
> employee fired for sending a letter to the CEO about working onditions.
Allegedly. The journalist made no attempt to investigate or disprove TJ's side of the story, not even to ask the employee about it.
They did! The TJ response is right there, after the termination letter, and the way I read it, they confirmed the story beyond a reasonable doubt by producing a denial that only sounds like a defense without context.
It says, "store leadership terminated this Crew Member's employment because of the disrespect he showed towards our customers. We have never, and would never, terminate a Crew Member's employment for raising safety concerns".
Their excuse is that he was not respectful enough to the customers...by demanding management exclude people (after 3 strikes) who refuse to wear masks and are abusive. And this is not a health concern, nor did they have any problem with the other health concerns. Really??
This is how every professional defends the indefensible these days. They craft a "non-denial denial" that communicates a falsehood to people who don't have the context, and doesn't technically lie or deny anything to people who do have the context. It is truly having your cake and eating it too.
And now things are interesting again.
It kept her there for 12 years or so.
The average tenure on many, many teams is 6 months.
Does help starve off the boredom.
"Here's Joe Candidate, he applied for your open position, and he has a 3 month old PIP on track to be resolved in 3 months. Accept or decline the transfer to your team?"
Ultimately, I think you're right. It's impossible to build a bureaucratic pachinko machine that will make the correct personnel decisions. You really need line managers dedicated to coaching staff, and higher-level managers coaching line managers. One-size-fits-all rules are not the optimal solution. But bad management is endemic in so many organizations that I'm sure these abuses go on all the time.
If you have a good manager, maybe its fine. But if your manager needs some headcount to cut.... don't trust them.
Let's say I want a new project. I can search for a new team internally, find a mutual match, sign on, start and.....keep my current salary.
Or I can search for a new team externally, find a mutual match, sign on, and get (in most cases) a significant raise and a new sign-on bonus.
Even at a company I like, there's a significant incentive to leave.
> People hire at companies, bbut leave their boss.
In my anecdata thus rings true.
Searching costs are a lot lower internally (no leetcoding needed in most cases, hopefully) and you are more likely to be able to land something outside of your current skillset, increasing your long term compensation and job security.
It helped a lot in fact in doing quality work. Thinking that you will inherit things you didn't do. That some other people will inherit your work / decisions. And always learning new things / keeping best practices in mind.
It's something I've kept in mind everywhere I've been.
the same 3 core people stayed on the project for 11 years from the begging and hired and fired around weither you're a threat to their position. managers would come and go, they were helpless and held no real power in the project, until they settled for a puppet manager who would defer every decision up to them and act as a secretary.
the result was a huge pile of tech debt that only they could touch and they kept getting raises because the project couldn't afford to lose them, until the project died of it own weight.
Surprise! Your team is shutting down and being moved to New York! Go back to the dating pool!
FB is a company that is successful in spite of all its internal failures.
In the case where people were objecting to being re-shuffled, did they get to pick where they went? Or were they just told? a little agency can help a lot.
In the second year, we had a survey where devs could say what their preference was: (a) team/specific devs (b) topic (c) none
That worked pretty well.
- 1 year doing iOS frontend/product - 1 year doing low-level iOS systems - 2 years as a PM - 1 year doing backend
I was never bored. I think giving engineers the flexibility to move around (provided they stick with one thing for a year or so) is a great way to retain folks. I can also say my efficiency during year 5 was fairly absurd (I won't necessarily say overall productivity was higher at the very end, since my interest in the company was waning, but I saved a lot of time by knowing exactly who to talk to and how systems across the stack worked).
One of the reasons was that they wanted to "cross-train" people. They liked to have a lot of process, and tended to think of employees as "Swiss army knives," that could adapt. They had style guides, and a whole infrastructure (HR and technical), to support this. Lots of training.
Not sure how effective it was. I feel that they weren't as productive as I'd like, but they were really good engineers. I had a lot of respect for them (which doesn't mean that I didn't want to strangle some of them; from time to time).
Much of the administrative work related to educational and research program management is handled by the tenured faculty, and we get rotated regularly through administrative positions. In the sixteen years I've been there, I have, like most of my colleagues, served on a dozen or more committees and have managed programs for periods of several years each. The result of this process is that faculty members tend to become, over time, reasonably competent administrators with a broad understanding of how the university functions, and that in turn helps the university—a large, necessarily complex bureaucracy—to function reasonably well.
We also have a small professional administrative staff, and they also get rotated through positions every few years. They must keep really good documentation of what they do, as staff members are usually able to get up to speed on their new jobs very quickly.
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.
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 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.
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.
Why bother spend time learning anything not applicable at your next role?
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.
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?
Which makes the line chart even worse. Pay is flat but the demands of the job are not.
I’ve seen it time and time again, start somewhere new and start with very few meetings and you can really deliver.
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...
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'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.
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.
The experience gained with years in roles like these isn't just in the use of computer tools, but in how to approach and solve proprietary domain problems with constraints that often aren't obvious. Knowing the pitfalls or conventions inherent in complex or regulated domains like automobile or pharmaceutical safety takes time to learn, making those with such experience more valuable to retain.
Stagnate is also a way of saying got good at the job.
I mean after a couple of years at a place an engineer might be the person that know the systems best in the whole world if they are no commodity. It takes year to gain the experience and inside out knowledge of a complex system.
To me it feels like I get a mental picture over a system after some time where I can smell where bugs comes from and very fast decide were functionality should be inserted. Up to that point things are just a hassle and then it clicks and becomes a breeze.
Then I switch jobs to get a pay raise and the grind begins again ...
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!
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
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.
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.
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?
By your reasoning do you agree with Amazon’s explicit 4 years and out model?
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.
Yet they can't just throw them away, because their peers are not confident enough to support the conclusion that there's nothing of value in there. A litany of "How can we be sure that XXXX" are thrown at the expert to clear, creating continuous inertia.
The choice becomes to keep holding the bags eternally, or go elsewhere they can start fresh.
Is it really junk or are we lacking in time/money/tribal knowledge to understand how it deeply works?
I like to think that I am a Very Good Engineer™ but I am sure that I would produce a similar piece of "junk" if I was under the same lack of requirements, training and time.
who wrote this garbage???
> git blame
oh crap, it was me 2 years ago!I think OP was talking not about code quality but code value. A lot of legacy systems are maintained simply because we don't know for sure that there's not something that relies on them, or that they won't be needed later. The expert wants to discard them, but everyone else insists on keeping them around just in case. That adds burden on the expert.
> are we lacking time/money/tribal knowledge to understand how it deeply works?
This is a serious issue when a system becomes complex enough.
For instance you work there for 4 years, became the most versed into the system, and have a hunch that the manual process to validate all submissions to some system could be wildly simplified.
But then random managers come to ask “are you 100% sure there won’t be hidden issues ?”, and by definition the answer is “no”. And since you’re the only one on the proposition, you have to bear the risk alone if you push it through. You could, but it is hardly worth it (diminishing rewards at your level, heavy bashing in case of troubles).
And there’s ton of other subtle and not so subtle situations where you have some knowledge, you could do something, but you don’t have any backing to make it worth it because others just don’t know. So stuff keeps piling in.
TBF not all companies work like that, but you also don’t end up a lone expert in places where these kind of issues are solved early and organically.
This is why teams creating a billion microservices because it is the pattern of the day gets me a little angry. It is just another unused thing to watch out for.
Imagine if academia tried this.
> 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.
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).
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.
Recently Intel paid a number of employees extra RSUs as a "first step". It does seem the ordering was ML > SW > everyone else (from anecdotes).
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.
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 came to CA hoping to find mad coders lost in thought of their projects. All I see are career athletes
I'm not a status-shower, and the salary increase wouldn't have been enough to be filthy rich (e.g., buy an island). I can't complain though: I ended up about to retire a multimillionaire despite not job-hopping. But I was lucky, I guess, my first mortgage was $600/mo just outside the Bay Area and I sold for ~8x what I paid after living in it for decades. Plus early in life I was forced to pick cheap hobbies that I stuck with: reading and backpacking. :)
My only regret is not taking better care of my back cuz now I can't sleep on a Thermorest+eggshell anymore, and all the fiat currency in the world can't fix that. Feh!
Is that in todays dollars or what it was at the time? If it's in today's dollars that's just incredible.
Cool to read though about what you posted earlier!
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.
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.
It's not clear if SavantIdiot is a SW person (vs HW/fab), but while what you say is correct, note that Intel significantly underpays SW as well. He was a grade 9 employee, which is fairly senior - very few employees will get to that level. Even today, looking on levels.fyi, the typical Grade 7 employee (equivalent of upper L4 in Google) gets about $163K in total compensation (salary + bonus + stocks). The grade 9 person gets about $260K total. The equivalent in Google is from $356K to $490K.
Furthermore, consider this: Intel's problems involve manufacturing - fab, etc. If you're a principal engineer, your total comp is still lower than a new ML engineer with no experience. It's very hard to become a principal engineer - only 4% of employees who get to the grade level below it will ever get to principal engineer.
That ML employee isn't going to help much with fab issues - the principal engineer is. How do you think he'll feel knowing that he's a lot more responsible for the future of the company, yet the guy just out of school will reap more financial benefits than the person who actually played a bigger role in making it happen?
> Also did the ML guy have an advanced degree that your long-timer friends didn’t?
SavantIdiot was a grade 9, which is 2 grade levels above an incoming PhD. SavantIdiot was a very senior person.
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?
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.
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.
I also expect that the moving around every 2 years meme is pretty influenced by Silicon Valley. It certainly isn't the norm I've seen.
And even for those brilliant people who can get it on the first try, you're taking about 2 months minimum to go through the interview process. If you're someone who doesn't like taking risks, that's a tall order until you've become convinced there is no path to promotion within your company.
Even got promoted to management in one of the two jobs! They would sometimes have to take calls from both jobs with one earbud in each ear connected to each laptop.
The industry the companies were in are not known for employing the best and brightest programmers... so I can understand being able to output enough to keep everyone happy. But it still boggles my mind that they never slipped up and got caught.
Most countries I worked in, anything done after hours, not using company resources, and not in the competition space of the employer is simply allowed. No company would be able to enforce that.
In fact (I have had that happen) if the contract tries to over reach, in particular regarding IP, then that clause could just be made void in court.
I work 40 hours/week at a Big-N, but if I put another 15-20 hours per week into my current job I'd get promoted extremely quickly, and get a bigger raise from that promotion than any "side project" I could come up with.
I don't want to do any of that, and moving companies is still probably the easiest way to get a large raise, but my point stands.
That'd be a very rare circumstance.
In most jobs working 15-20 hours overtime each week only gets you 15-20 hours less for living your own life, nothing else.
At all companies I've been at or have intimately known about, there have been clear guidelines for promotions and examples to look at. These are medium to large companies. FAANG and non-FAANG.
I'm sure you're right in a lot of cases, but I feel like at most software companies I'm not too far off.
Gone are those days when this was straightforward.
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.
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.
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.
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.
Dunning-Kroger is approximately “one’s sense of one’s own relative ability capability is tightly-correlated with actual relative ability, but shifted toward the 70th percentile from actual relative ability.”
The usual misunderstanding of DK is believing it to be a strong but inverse correlation between self-perceived ability and actual ability.
“Not very well correlated” not only isn't DK, its a fairly unusual misunderstandings of DK.
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.
"Integrity," "Loyalty," "Honor," "Reliability," "Trustworthiness," "Empathy," "Honesty," I could go on...
You are correct. People sneer at these anachronistic qualities. I've looked up many noses.
But it's what worked for me. I'm fairly happy how things turned out for me.
What was it Hunter Thompson said?
"I hate to advocate drugs, alcohol, violence, or insanity to anyone, but they've always worked for me."
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.
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).
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.
Re: institutional knowledge and expertise, etc - we tried to avoid too much concentration. If all the institutional knowledge for system X is tied up in person Z, what if they want to take on to a new roll, or I want to ask them to work on a different system or a new project? I like people who focus on what they can do next, not solely what they've already done. Otherwise it's a bad place for the company to be even if someone doesn't leave. Change is a constant, flexibility is good.
Re: personal relationships - morale is always something to keep an eye on, but someone having an exciting new opportunity never seemed to hurt the rest of the team's morale that much.
I think you're also making an unspoken assumption that the new hire wouldn't be superior to the person who left in some areas! The most common case of this was "generalist who built a ton of stuff in an earlier phase of the company leaves, replacement is more experienced in the specialized area that that generalist was currently working on since the company was larger now and they couldn't contribute to everything as easily," but that's hardly the only way.
And lastly, as I alluded to about budgeting more to keep the top two performers than the third - I think you're overestimating the amount of effort and/or success put into by the average developer at becoming the go-to expert on specific techs or business processes. If I tell my manager "I know the second most about React, the third most about Node, and the second most about the plugin system business logic" I'm not going to expect them to find me irreplaceable.
It's like trying to argue that a mechanic who has only worked on Ford vehicles for 20 years should be able to quickly have the same proficiency as a mechanic who has 20 years of experience on only Porches. Nonsense.
Remember, a company can typically expect to hold onto a developer for maybe 3-5 years, so even half a year of training is a significant portion of their tenure.
Also you maybe discounting the change in code itself even when I have years at a company I’m still continually learning things because I’m working on new things or new things are being built. If I left a new hire would be able to ramp up on these fresh code based without much hassle. So expertise itself has a half-life in a fast moving field like a lot of software shops.
Change in a way where past experience still translates to value. And yes, with enough money and brute force you can overcome the loss of tribal knowledge, but that's the whole point of this conversation; it's an expensive thing that's often not worth it and definitely not something easily dismissed.
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.
At the point where the market rate has shifted that much and my employer hasn't caught on, I'm out the door myself. ;)
"Maybe the replacements suck in comparison" is certainly something we would've noticed - happily, it wasn't the case.
But we were hiring basically constantly, since there was no team that had enough people for the work the company wanted to do, even before attrition. So we had a good feel for what we could get for the money. If someone on the team can do better elsewhere, though, more power to them - I would certainly take that opportunity too.
Admittedly I'm a little burned on this issue. My previous (and first job) was severely underpaying me and all my coworkers. I stayed there for 3 years, wanted to leave after 1.5/2, put a pause on it when covid hit, and finally completed the move earlier this year just around my 3 year mark.
Leaving got me an 80% raise in total compensation and 4 other people on my team/org all left with at least a 50% bump.
All within a few weeks of each other too o.O!
It's such an interesting dynamic and market today and so fascinating to hear about people's experiences as they jump around. Thanks for sharing your perspective!
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).
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.
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.
Yes, hiring and training is expensive... and the loss of domain knowledge is costly too.
There are a lot of places that aren't making that much money to be able to get to "market rate".
I'd also like to put forth that the idea of a market rate for developers across all industries is one of the things making it hard to find developers. There are more than a few new grads out there that are discounting any job that pays less than $100k/y because they believe that the market rate is that and anything less is being underpaid regardless of industry, company maturity, or locale.
I think it's always important to keep in mind that current developer salaries are the result of a constrained market and not because we innately deserve it or something. Yes it is a high-skill job, but there are plenty of high-skill jobs out there that pay much less.
I spent the first twenty years of my career as a public school teacher, and the last four as a software engineer.
Most of the teachers I knew worked _literally_ twice as hard as the average software engineer I know now, even though they're paid one third as much.
And finding good teachers is just as difficult as finding good ICs. I think the ONLY difference is that it is possible for a lot more people to teach badly than to code badly. And of course that society has decided that teachers aren't worth paying very much.
I was reasonably paid for the area. Sure, I could have been making more if I was to go to a different company (challenging in '09). I'm making more now for a different employer in the midwest.
The thing is that there are companies that don't make $100k/y revenue for the work that the devs do. There are also devs who are willing to work for $50k/y in the rural midwest (which is better than other jobs in the area pay).
To assume that those devs should be paid the same as one in SF would have ultimately meant a loss of jobs in the area as the business wouldn't be able to afford to do that.
There are plenty of places that are not the mid west that are paying more.
More specifically as an employee, I think any incremental value from holding the stock is not compensation FROM the company, since the employee equally has to carry the risk of stock prices going down.
Of course, practically, one's cash flow in any given year is "base + bonus + actual value of the stock that vests in the given year" and can be vastly different from how the company does compensation planning. And this is also what determines income taxes (unless I'm bizarrely mistaken about how income taxes work in some jurisdictions).
Having been a manager at multiple public tech companies, I'll say that this has led to very many 'interesting' comp conversations and not everyone comprehends the distinctions here -- regardless of what's arguably more 'correct'.
For the same reason a manager isn't going to value a $10MM grant in company that ended up being a penny stock, he isn't going to downgrade a company that resurrected from the pits either. Money in hand last year is the best measure possible/available.
edit: and then people will come on here and say "look! Brand new Google employees make 200k!"
Looking at how they handle Google, for example they show base|annual stock|signing bonus.
So when you see 130K base + 33K stock, that was a grant of 130K vesting over 4 years. And then with signing and annual bonus of ~20K, that person is in fact making 200K starting (although the median is probably a bit lower for a completely new employee).
On the other hand, people often forget about refreshes when looking at these things. And while a refresh grant won't be as large as the initial grant, they do make the overall comp significantly larger.
In later years the situation is more complicated as the stock price will move, you'll receive annual refreshes which are performance dependent, and you might reach a new level. While the base salary changes with levels can be modest, 15% or so, refresher targets can practically double from level to level.
But yes - these won't be the public / known numbers. These folks have no incentive to make it public and affect their own future numbers.
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.
And also, thanks for your reply there, nice to hear from you again!
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?
[EDIT] Oh, it's also why devs are compensated like professionals (they haven't been able to figure out how to stop that, yet) but work at open tables crammed together, under management's direct eye, like they're packing cocaine in Colombia or something.
I mean, maybe, but I've never seen anyone even propose a solution to ego so that's still a hard blocker.
> Hydride tanks don't require those high pressures. Other than nuclear arms treaties, is there a technical reason they don't use those instead?
Wait...ICs do not care about their own career and salary? That's news to me (Sr. IC).
I definitely have not found this to be the case. Good senior folks require very little active management.
In a good team trust and experience are essential parts of the formula.
Actually this is quite common at FAANG companies.
E.g., I make more than my boss.
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.
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.
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.
This isn't how it works. The $180K is the max I could get in my industry, and that's because the previous max in 2014 or so of $140K (which I did get) is basically tied to inflation or about 2.5%-3%. So while I've been getting 1.5%-2% raises for 7-8 years, I've been missing out on that extra 1.5%, which is where the extra $20K comes from that other companies might offer.
But if I took a job at $180K, I'm again up against the salary ceiling in my city and industry. There is no $20K raise to be had after another 1-2 years by jumping again. At best, I might get the full inflation rate raises, instead of being lowballed by a percent or two, and which the difference accumulates to a large $20K or so jump only after 6-7 years more.
> 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.
This is definitely true at most corporate tech departments. However, in the contracting world you can jump around to completely different projects and learn a lot of new technologies. So in that sense, I feel I'm okay. The big issue is that you're not exposed to best practices and large scales that you'd see at FAANG. But it's not as bad as being stuck on a single codebase in a single language and framework with a single CI pipeline for 7 years.
How do you know that for a fact? I think you hint at this a bit in your previous comments, but if your city / field are small to the point that every employer is like any other and that there's no variance in compensation, you're SOL. One way to solve this is remote work, if applicable to your field.
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.
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.
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.
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.
You have to remember inflation though...
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.
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.
After we were on system amd thelr regular processes were in place suddenly a lot of people got a massive raise to match the min amount of money this position at this seniority level has to earn.
So far so good. But imagine the surprise of management when people weren't happy about the raise (10 20+ percent in not few cases) but a lot of resentment was voiced for being paid too little for years stating that there isn't enough money for raises and once big corporate brother rules that there is a minimum salary to be paid the money can be shelled out.
I can totally relate with the colleagues who are currently looking at other options because they feel that they were lied to over the years.
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.
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 would think that if a manager was unaware of the job-hunting, that was intentional on the part of the employee.
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.
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?
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...
But it is also about the money. When you can get a 20% bump by switching jobs...hard to pass that up.
Somehow people seem to think it has to be one sided when it comes to professional relationships with your employer. Maybe it's a lack of structured, routine, two sided feedback that makes people not bring up issues around compensation. Maybe employers should ask proactively if the employee is happy with their compensation.
You can say that all you want, but at the end of the day it's you that's losing talent.
Is it a US-specific thing? Never heard of anyone getting it.
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.
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.
Engineers can leave after months and still get jobs. You're not guilty of anything for leaving after 2 years for a VP position.
Leetcode doesn’t filter for skill, it filters for who has too much time on their hands.
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.
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 $.
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.
Also check out their culture document, which is quite interesting as well: https://jobs.netflix.com/culture
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)
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 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.
How many times have you had a deployment go wrong shortly after the one guy who knew how everything worked left? What did it cost the company in terms of developer hours, productivity, opportunity cost? How many times have you witnessed a new hire take 30 - 90 days to get even halfway up to the speed and productivity levels of someone who's been with the company for a year or two? If you're swapping one employee for a small handful of failures plus a new, at-market employee who has half the productivity level for a full quarter then you're easily paying a 25% premium to let that employee go, when you could've retained them and made them feel appreciated for a 6% annual raise. It's frustratingly straightforward to determine which result is better for the company's bottom line.
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.
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.
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.
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
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.
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.
The most successful company I've ever worked for had over 300 employees and 0 in HR.
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.
in proportion to their impact
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?
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.
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.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.
They do, eventually - there's a term: "golden handcuffs"
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.
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.
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.
The moment engineer became founder - tables are turned.
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.
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.
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?
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.
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.
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.
This isn't just for programmers or engineers - it's any job.
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.
The point is that companies should compensate their top-impacting engineers with equity, not money.
Best to keep my head down, don't want to push elbows with this lot
Companies just do not value their own employees over new ones.
What are you, a communist? :)
Never fails to make me smile watching capitalists advocate for planned economies :)
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.
.
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.