When people say they want career progression, and opportunities, what they mostly mean is they want more money. Unfortunately, most companies have fallen into the trap where if someone has a title of X they can only make up to Y, regardless of how good they are at their job or how long they've done it. When that happens then the name of the game is getting a promotion in order to keep making more money. That creates a perverse incentive, and the result is political bullshit that is typically misaligned with the company's interests which further drives away your high performers.
End the perverse incentives. Pay your people well if they're doing a good job, regardless of how long they've been doing the same job or what their title is. Reward seniority and loyalty. Suddenly, you'll find that employee retention goes through the roof, and you don't have to worry about hiring new people all the time.
While I broadly agree with your point, rewarding seniority is at odds with rewarding people based on how good they are at their jobs, from the perspective of incentives. The two are not always correlated and this is often why some companies hire externally instead of promoting from within.
That said, companies are often wrong to hire externally as they misattribute their problems to their employees instead of to their own leadership. It is easier for them to blame others instead of themselves.
Paying for equal performance on the measurable aspects of the job is easier to do than putting a value on institutional knowledge. As an old bird that has had time to internalize the tech stack, I can make one comment along the line of “Don’t do that, and here is why...” — getting that kind of contribution noticed and valued is harder.
Parent comment is really saying to find a way to put a value on institutional knowledge.
From my experience, I see institutional knowledge as a double edged sword - it can save you from some mistakes but, very often, it's also the thing standing in the way of progress.
I don't think I can count how many times I've seen a really poorly designed solution causing real pain, and everyone even knows it's bad, but it will never change until X leaves the org, which they have no intent of doing until they're rolling out on a stretcher. Usually X has been there a long time and knows everyone - often they've created enough messes that only they understand to avoid getting laid off. Heck, if the messes are big enough, they can even look like an above average performer to people who aren't overly familiar - generally never top of the stack though, as that might get them asked to take on more work.
> it's also the thing standing in the way of progress.
The luddite attitude is orthogonal. Does it happen? Sure. But I also have the expectation that senior staff should be identifying the New, Better Way all the time. And are well-positioned to measure “better”. It is part of providing engineering leadership. An old bird that isn’t keeping up needs a job performance message.
> From my experience, I see institutional knowledge as a double edged sword - it can save you from some mistakes but, very often, it's also the thing standing in the way of progress.
I can’t agree with you more. Having a combination of individuals with historical knowledge and new individuals with fresh perspectives can be so refreshing. We recently hired an external architect on the team. She’s great technically. However, I would argue her greatest contribution is fresh perspectives. She suggests ideas others (include me) hadn’t considered due to past negative experiences with team X or Y. By not being as aware of past histories or projects gone bad, she can encourage us to rethink things.
Usually in such cases institutional knowledge has a better chance of answering the question what causes the pain and how to fix it and what are tradeoffs.
Person A didn't do the unwise thing because they knew the system inside out.
Person B did an unwise thing and spent the weekend working to fix the consequence.
If the problem was subtle and management didn't immediate corelate the action of Person B with the problem, they are likely to profusely praise Person B's working their asses off to save the company during the weekend.
On the flipside, if the company only contains A kind of people or if A people are too influential, it's likely that you'll stick in a local optimum where people are not incentivized to try out new things that may fail but may also succeed.
I mean isn’t that why vesting cliffs exist? I’d extend them to be for far more money but over far longer if I was the employer, but the job market won’t bare it.
That's actually a really good idea. Reuse an already common tool to reinforce what you want. If you stay here longer than your 4 year cliff we'll refresh you at 1.5x the last schedule. That's about what a company would end up dumping into a person's salary who is tenured anyway.
There's also the military approach where there's a clock and you either get promoted or you are out. And then it repeats. Languishing isn't really allowed as an option.
If a job/task only requires entry level skills, why are senior employees doing them?
Not at all. In fact, Netflix didn't even have levels until very recently. When I worked as a management consultant, about half of people left the company every two years at each promotion gate. Netflix's turnover was far, far lower.
Seniority has a very real value in tech, though. It probably doesn't have much value if you're say, a doctor, working with different systems each time that look similar.
But in programming, you deal with systems, you know the undocumented gotchas of the system, and understand the flow of it better than someone who's completely new to it. You know when Chesterton's fence applies and when it doesn't. I often tell startups to promote the juniors instead of replacing them with seniors, because the junior who built the system would be able to modify it better.
Even in sales and product, there's some value to understanding what the customer wants and aligning that to the features or a specific pitch and such.
> It probably doesn't have much value if you're say, a doctor, working with different systems each time that look similar.
You either don’t know what a doctor does or I don’t understand the point you were trying to drive. Doctors spend decades refining their ability to recognize all kinds of issues that have vastly different conditional probabilities of occurring. Internalizing that is the entire value of a doctor over webmd.
Being a doctor isn’t as simple as absorbing a mechanic’s guide to the human body and just doing the same procedures over and over.
I think he means that a doctor with 15 years experience after school can change hospitals they work at with minimal impact.
A hiring a senior engineer with 15 years experience, but not at your company, might not compare as favorably to an intermediate engineer with 8 years total experience, but 3 years at your company.
Yeah, they're synonymous in many cultures (the amount of time someone holds their current post, and not experience skill). But it seems they mean different things in this context.
Tenure, domain knowledge, and skill are all pretty different underlying things.
Promoting someone with tenure just because of their domain knowledge is an extremely good way to hit the Peter Principle. You can get people who know the system very well but don't know how to take a step back and look around and evaluate the broader context vs just plugging along the same way as yesterday. Especially if you've never hired someone with those skills to teach them. You also run into bus-factor issues and robbing-Peter-to-pay-Paul limitations around "this person's domain knowledge would be useful for this new project, but we've never ramped someone up to take over what they're doing now."
Then there are the people who manage to get tenure without actually absorbing too much of that domain knowledge... so you need to be able to evaluate that, plus skills/aptitude/potential, not just years-in-seat, when deciding who to promote, when to hire, etc.
I think you imply it, but the important part is whether someone can learn a new position.
People quoting the "Peter Principle" usually ignore that it is normal to promote beyond current skill level, since it is common to learn a position when in that position.
The Peter Principle is that eventually an employee hits a roadblock where they are failing to learn the new position. That failure is usually attributed to the person, but I would guess the root cause is usually a lack of training ability within the organisation (not commonly recognised as the problem).
I am not a manager, but I see these stereotypical misconceptions all the time... I'm not accusing you of ignorance at all: I'm just pointing out you could be clearer to help us all!
Aren't these reasons why management is supposed to exist? If they can't figure out how to manage these situations, the issue is with the managers, and the new hiring should begin there.
> you know the undocumented gotchas of the system ... when Chesterton's fence applies and when it doesn't.
All too real. Unfortunately, i do think that relying on such expertise is fraught with danger - because both your bus-factor is 1, and it makes it hard to bring up new people.
In practise, this is hard to avoid, but i think a real senior developer should know to document the undocumented, and to communicate (using various mediums) to ensure that nobody needs tribal knowledge to work on a system.
Rewarding seniority works if you have a fair system of performance management in place. Assuming your tenure at a single company is directly correlated with your ability to perform well, and grow and improve your value to the company over time, it would make sense.
That being said, when somebody finds that fair system sustainably in place at a company, let me know. Fair and accurate measurement of an employees performance, free from bias and favoritism ... I'm just not sure that's how people work.
False dichotomy. It doesn't need to be free of bias, just bias shouldn't be completely insane like "you must change job every month". In fact there should be bias for merit, but instead employees are uniformly undervalued.
> they misattribute their problems to their employees instead of to their own leadership
It seems to be the case that effective and competent leadership is the exception. Even in the military, where enormous amounts of money are spent on attracting, training and retaining leadership; they're simply aren't very many that are very effective. Mediocre leaders get promoted and that's just what everyone else gets to deal with. Other examples include professional sports, academia and politics. The tech industry is hardly an exception here.
Not always, but still I would assume that people with complex tasks generally become more experienced and accumulate specific knowledge over time that makes them better at what they do. Therefore, it should be the default for employees to get a raise every now and then, unless there are clear signs that someone is not performing and the employer is not interested in keeping the person.
>as they misattribute their problems to their employees instead of to their own leadership
In my own very limited experience of mid-size companies, it seems like senior leadership is first on the chopping block when dissatisfaction becomes real. However, the expected value of those positions is much larger due to compensation (i.e. $2e6 x 1 year = $2e5 x 10 years, better assuming execs can find jobs within a few years)
“ That said, companies are often wrong to hire externally as they misattribute their problems to their employees instead of to their own leadership. It is easier for them to blame others instead of themselves.”
After talking to a lot of managers it really seems that a lot of them are deeply skeptical of the people they themselves have hired.
"Leadership" usually means executives and those folks live in a different world of comp than Engineers and Project Managers, maybe even Product - but I know that bit isn't always truthy.
Almost all of the companies I worked at hired senior positions from outside the company instead of promoting from within.
The other issue I ran into was being so good at the position I was in that I was "unpromotable". Got told that a lot as an IC. Was then told even though I was fully qualified for the promotion, I would not get it nor the accompanying salary.
> Almost all of the companies I worked at hired senior positions from outside the company instead of promoting from within.
It's one of those things that goes by "Yeah, yeah, we know the studies, doesn't work that way in real life, it's cheaper to just fuck over your employees, pay new employees more, most of the old dumb fucks are to stupid/lazy to ask for a raise/go to an interview", just like work from home used to be.
Until reality kicks in, some tectonic shifts happen and they start screaming they can't find good employees.
This is how my last job was, I was there for 7 years, finally left, tripled my compensation (I was very underpaid), and now most of the engineers I know from there have also left.
You're getting some snarky replies but I can totally see this being included in a management methodology to get the most out of an IC. It's not a good thing but it would work on some
The worst part is that after a point in your career there's no path to promotion just for doing your job really well. You are expected to always take on new roles and responsibilities, some of which may not be suited for your personality or interests, and the net result often is that you get promoted and make more money but your overall useful output decreases. I know so many amazing engineers who had to essentially give up writing code, prototyping and tinkering – stuff they were really passionate about – to advance to staff+ levels. Now their time is spent in an endless stream of meetings, and the entire organization is worse off because of it.
Some companies have a concept of “terminal levels”, which means if you get to this level and keep doing a good job and have no desire to keep chasing promos, that’s totally fine and they’ll keep increasing your comp according to your value, which does increase as you stay and accumulate institutional knowledge, experience, and reputation (and owed favors, political connections, friends in senior places, accomplishments under your belt, etc etc).
If this is your path I'd strongly recommend tenure in a core revenue generating project. Avoid projects in cost centers, especially those that serve small / non-critical business needs or have potential off-the-shelf replacements that could be purchased and integrated into the business. Don't assume that leadership will be rational about replacing an internal system with an off the shelf one, if someone comes along with a mandate for change all bets are off.
Don't assume you can rely on political capital when your area of work is being turned down, odds are there are a dozen other people that are trying the same thing. Leadership would likely want to retain lower cost junior employees with the rationale that they have potential in addition to being cheaper.
All good advice. I’ve made a career out of never assuming the good fortune will last. Sometimes your standing is rooted high enough to be above the reorg; sometimes it ain’t.
But it's also a Faustian bargain that many engineers knowingly enter into. They are trading their professional coding passion in for more money and status. For some, this isn't much of a loss. For others, it is. It really depends.
I just went from Midwest money to Bay money without moving out of the Midwest as an IC. I'm basically set for life and I know I don't want to be a people manager. Maybe someday I'll be staff/principal but I really don't mind sitting at a terminal level slinging code.
You have the choice of managers knowing what the job is or managers that have never done the job. In general managers that know what the job is are better managers.
True, but there should always be a rewarding progression for someone that doesn't want to be a manager or change role. Because if the only rewarding path they see is to switch employers -or get counter-offers to try and get their wage bumped, then that's a problem. It's also a common theme for companies to be forced to give higher wages to new-hires, leaving their own veterans (that are actually more valuable) behind.
Someone is ought to make a game like factorio out of this: you manage workers with semi-predictable output, and have to pay them out of your semi-predictable profit. You can never lower anyone's salary, only fire someone, and that costs a fee (severance). There is outside pressure that forces workers to need more money - inflation - it's also semi-predictable, but it never goes down. My suspicion is that in a well modeled game like this, there's no steady-growth mode when everyone is happy, and the organisation always collapses, even under perfect management.
> Pay your people well if they're doing a good job
Comparing peoples performance objectively in a large organisation is essentially impossible. Only the people working closely with someone really have any idea, and even then they only see part of the picture.
OTOH, I can’t tell you the number of mid (or even poorly) performing teams whose lead tells me that everyone on the team is well above average. (I guess logically that I can only conclude that it’s a team leadership problem causing the under-performance...)
100%. One counterexample (unfortunately the only one that comes to mind) is sales, where performance has an immediate positive cash & profit impact that is trivial to measure. Top salespeople can earn more than the CEO's of their companies.
In the backend of the org, this is harder to do, because the impact is hard to measure and comes to fruition later in the game.
One solution is to have small teams of engineers that own their companies - ie, millions of tiny startups. That way, brilliant contributions lead to large profits for the contributor.
But how engineers can be fairly compensated in large orgs, I'm not sure. This is a fundamentally hard problem. Removing the salary ranges might help.
> One counterexample (unfortunately the only one that comes to mind) is sales, where performance has an immediate positive cash & profit impact that is trivial to measure.
Nope!
Two salespeople closing the same total value over a year can have vastly different impacts on the business.
Say Alice cares about how well the customers she brought in are doing. She follows up on their experience every six months. She talks to the people in the organisation who fulfills the customer desires. She makes sure there's a good customer--product fit, and her customers are just at that edge where they challenge the organisation to do better without demanding of them the impossible.
On the other hand, Bob doesn't care about how customers do. He just wants to close deals. He finds bad customer--product fits but convinces them anyway by promising rainbows and daisies. The customer is unhappy from day 1, because they never get what they were lead to expect. The organisation is stressed out trying to fulfill unreasonable demands.
Alice is a net positive contributor, Bob is at best neutral -- both close the same value, remember!
That sales performance measures are easy and instantaneous is one of the most damaging myths governing my current workplace. It's really bad.
Most places I’ve seen have year on year bonuses for sales growth. It doesn’t have be a flat bonus for a given year.
So if Alice finds good customers and retains them, she does better than Bob because that customer is retained and she’s finding new accounts while Bob is trying to find customers to replace the sales he lost this year.
It’s not trivial to develop sales incentive programs, I agree, but it’s way easier than doing it for home office people whose job only has a loose connection to revenue and profit and any measure is inherently subjective.
You are fortunate to have worked in mostly good places! I have seen a lot of sales compensated on commission at contract close. It gets as dysfunctional as one would expect.
I still don't agree it's easier, though. If a customer stays, is it because they've received great support or because the salesperson found a good fit?
What I'm trying to say is "if sales get compensated when a customer sticks around, then so should everyone else supporting that customer".
Basically the only good incentive programme is profit sharing (or ownership) applied across the organisation.
Then again turnover for salespeople is often so fast that just doing 2 'good' years is enough, they move on and the company then needs to find a new salesperson AND new customers.
Sounds a bit like what Google does internally for promotions. Except their execution is failing so badly it is starting to affect the company. And also that I have no faith in this concept any more.
But at the same time you could have the same with bonuses based on how much money your team made. The more granular, the better (albeit there are limits).
Over the years i've had debates with co-workers when someone changes roles with less responsibly, or goes from managing people to not but increases their salary on if that is a "promotion"
My Position has always been "More Money, with less responsibility, is the best promotion one could ever get"
> When people say they want career progression, and opportunities, what they mostly mean is they want more money.
Nah, that has been proven to not be true (at least in most cases).
What usually happens is a combination of various factors, money being one of them. And when money is part of it it usually psychologically functions as a proxy for whether your company/boss cares for you.
Most people want confirmation of their own beliefs about themselves -- they want the company/boss/coworkers to be showing respect and show that they value your work. People want to see that their work is accomplishing something and a lot of people can go to great lengths to lie to themselves that this is the case. And a lot of people also want progress, they want to see themselves doing new things, getting more responsibility, advancing their careers.
I hired and said goodbye to A LOT of software developers. And I do understand that it is difficult to get an honest, unbiased response when you ask them for the reasons for their decisions to leave.
But at the same time you get to experience trying to get people to stay and seeing what works and what does not. Giving raises works relatively rarely -- it only seems to delay. They are already discontent with their job and the higher salary only functions as a sort of gold handcuffs. After quarter century of doing this I literally am still to see a situation when a developer is offered a higher salary and suddenly becomes enthusiastic about their job to have a long fruitful career.
So what does work? Trying to find what causes them to be discontent in the first place and trying to address it. Do they feel they worked for too long in one project? Are they bored intellectually? Are they not getting along with their current boss? Changing the project without any raise is in my experience one of highest success rate things you can do in this situation. That success rate may not be very high (people tend to leave anyway) but at least I have a lot of good stories of people who changed teams and things clicked for them and they liked their new team. The only things that worked better in the past are changing the project WITH upgrade to the salary to reflect the market, and, for the ultimate highest employee-keeping potential - promotion to manager.
If people really did care mostly only about money, upping their salary should have greater success rate than moving them to another team and yet it is the opposite.
Now... this all assumes software developers and we know software developers are not exactly starving. If you are earning very little compared to your needs or when those needs grow suddenly people tend to really start paying way more attention to just monetary compensation.
This depends entirely on your raises. This year I left a unicorn startup to join a faang and got 100%+ increase in pay. I would’ve been happy to stay if the company could beat it, but they wouldn’t budge past 20%. In fact, I went down in level/titles so arguably, I don't care about the respect nearly as much as I do about the pay difference.
I don't know that I necessarily agree with this, I find that a lot of developers particularly younger millennials and generation Z put very little emotional investment in their jobs and treat it as a means to a financial end and nothing more, and honestly I think this is a healthy approach.
So that regard they would prefer more money and couldn't care less care about arbitrary internal recognition, it's a job nothing more, unless you're actually working in a genuinely meaningful field like advancing medical science for example.
Every time I've ever switched jobs (particularly anything revolving around e-commerce) or other meaningless drivel it's been about the money pure and simple.
Nah, what you say is valid only for people doing menial tasks.
Sure, cheap developers implementing the same endpoint over and over for 20 years for a paycheck are like that, but a good chunk of them actually cares about solving a problem and get recognition in the form of life changing money.
How is a person receiving calls from customers and trying to solve their problems much different from say my job which is receiving calls from coworkers and trying to solve their problems.
Sure, I am paid many times better and the problems I am dealing with are way more complex and varied and I know a lot of people who are asking me for help, the calls are over Slack or Zoom and the timelines and involvement in the issue is much higher. Otherwise, this is the same job.
But to say that the people who are less capable are somehow composed differently psychologically, more resistant to doing repeatable work... it is the same as thinking that people in poor places on Earth are somehow very much different from us, less intelligent and outspoken. This is simply not true -- just go and visit places (and not just tourist attractions). Go to youtube and see people visiting places. Go to library and read a book about people visiting places.
Everybody says that the first thing they experienced is this feeling of everywhere in the world they thought being so much different, actually being very much the same as home. Buildings are different, views are different, weather is different, wealth is different. But the people and their daily problems are strikingly the same.
People who are paying low wage jobs have exactly the same kinds of problems, they just also have other problems like paying their rent that is keeping them doing the job they don't want to be doing because they just don't have any other option.
Mostly true but these days we have the case where regardless of capability it is sadly necessary to put a Ln person to do an Ln's job not Ln+k's job (for political reasons). This has the perverse effect of someone at Ln being punished for doing a job above their level if they are not also doing their own job. What this means is you can only get promoted if you are doing the equivalent of two levels of work at a given time but if you were hired from elsewhere you only need to do the target level job.
From my perspective this is the way things used to work, then we had the pay equality movement which was largely misinterpreted by corporations to mean "Same title == same pay". The problem is that being a Junior on Team A may have the same cognitive load as being a Senior on Team B. I once led a team that was exactly like that.
Saying "end perverse incentives" makes this seem like some moral oversight driven call-to-action but I think it's more complicated than that.
While its usually pay, sometimes other perks are part of it too. Higher rank = get away with more at most places. If the Staff needs to disappear for a couple of days due to personal reasons everybody wishes them the best. The Junior/Mid will get a lot of questions asked. Thats my professional experience from observation.
When you become low level manager this resets btw, Senior Managers and Directors will want to know where you are, nobody asks why the Director wasn't feeling it for 2 days though.
Other part of it is control. Higher rank means you get to decide which technology and how the problem gets solved and get to play empire building games. Which is fulfilling to some people. Some people want to feel like they are making the decisions, other people like to feel like they have influence on others for self worth. Other people enjoy high level strategic work over doing actual implementation of the work. You pretty much have to get promoted to do strategic style work in tech. My analogy is you enjoy playing a starcraft style RTS where you get joy out of sending the exact right amount of marines to beat that enemy in the most efficient manner, but hate having to do an FPS where you play that marine and have to fight that enemy yourself.
"most companies have fallen into the trap where if someone has a title of X they can only make up to Y,"
Eh, most of the people in the established pay range tend to be at the low or mid range, so the company likely has the ability to pay more. Once they're at the top of rhe range, that shouldn't be much of a problem either... but that assumes the range was created using good industry data. If so, then there shouldn't be a better deal somewhere else (or at least very hard to find).
I think there's often better pay elsewhere because companies generally reactive towards employees rather than proactive. This is also reflected by the data showing lagging indicators.
When you factor in how much it costs to have a roll unfilled, hired a new person, then train them, then productively paying to retain your talent becomes a no-brainer
Well said. But my counter argument is: why does Netflix do a revert course and introduce titles back to their job lines? At the beginning, Netflix used to just have senior SDE title. Now, they are starting to introduce more SDE titles into the company.
If focusing on retention has been working great for Netflix, what made them change their mind?
> Unfortunately, most companies have fallen into the trap where if someone has a title of X they can only make up to Y, regardless of how good they are at their job or how long they've done it.
I don't agree that this is a trap. sure, leveling systems aren't perfect. but they're based on a key insight: there is usually a limit to the impact an engineer can have for a given scope. if I own a single service/component in a larger ecosystem, there comes a point where it doesn't make sense to keep paying me more money to make it even better if my clients/dependencies aren't keeping up. the only way I can continue increasing my contribution to organizational goals is to broaden my scope and start influencing the design of other services/components I interact with. it's not by coincidence that is a major part of how leveling guidelines are written at most tech companies.
People can broaden the scope without leveling. The purpose of leveling is very frequently to give people hoops to jump through, especially at larger companies. Its purpose is another form of retention.
I'm in the process of changing jobs, not an employee, but I don't think it's HR's fault, but that of managers -- they should know the best what value people bring and what are the consequences of losing certain people be.
The managers (in my experience at least, being on both sides of that table) don't have a shred of power in compensation discussions. That makes it a lot harder for the employee to negotiate (by design). Every compensation decision that wasn't pushed directly by HR got pushed to president-level management (these were in 100-500 person companies)
Why? Because they would prefer to keep running on the neverending promotion treadmill? I think a LOT of engineers would rather stay engineers if they could keep getting reasonable raises. The problem is that almost all companies make it impossible to keep getting raises past a certain point _without_ getting promoted.
The idea is to keep everyone making the market rate without them having to job hop every few years
Generally software engineers get crappy 2% raises year-over-year and may or may not get significant RSUs/bonuses, while the market rate is flying up 5+% per year. I think most people on this site who've been working for 10+ years can attest that they snagged a 50% or more pay increase by changing jobs at some point.
I'd still be working at my first crappy post-college job if they'd been nicer to me and I were within 75% of what I can make at a nearby FAANG. But I snagged a 100% pay bump (DOUBLED pay) by changing jobs. And then I doubled my pay again a few years later! And now I've been in my current job 3 years, and I'm pretty sure I could get a 20% increase by changing jobs again even with the recession.
Perverse incentives are borne from cookie-cutter, one-size-fits-all rules thought up in rush for a due-dated result requested by a manager who's in a rush for a due-dated result (continue as per stack of turtles).
> Reward seniority and loyalty
Aware this isn't a whitepaper that deeply explores what's better and worse for a company's workforce retention, but "Reward seniority and loyalty" is dangerously simplistic.
From my limited experience with payroll systems, and having groups of employees doing the same role, all on different rates based on how long they've worked for us, is a maintenance nightmare due to the inability to automate things. Salary bands and levels etc. alleviate this, but there are necessarily fairly tight limits where a 10-year veteran's expectations are just unrealistic. There's a point where "everyone doing this role" should be paid more, rather than this individual should get a higher percentage than their peers if their total remuneration would breach some ad-hoc level of acceptability.
I think a simple description of a wickedly-complex strategy is "know your people". This requires managers that have the time and space to get to know their reports, all the way up the chain.
Just two days ago I was discussing an ex-colleague, who had a bad reputation with our previous management (I was actually explicitly told by management not to bring him into my project). He eventually moved to a new company, and is an absolute star worker there. If he was managed better at the previous place he could have been a star there as well.
Immediate thought-analogy: If Managers treated their reports as Customers; if Managers acted as Sales Reps for the company in their dealings with reports, then retention would be less of a problem (also need to know which "Customers" are worth the effort).
But it all depends on what you're optimising for, and every workplace is different. Know which roles are "soldier out, soldier in", and which require 6 months of knowledge absorption to become remotely productive.
A single rule is as efficient as it gets, but it'll rub a majority of the people the wrong way. A rule for every individual will keep everyone somewhat more happy, but it'll be murder on administrative maintenance. Find your balance point on that scale and re-evaluate based on changing macro-economic situations.
End the perverse incentives. Pay your people well if they're doing a good job, regardless of how long they've been doing the same job or what their title is. Reward seniority and loyalty. Suddenly, you'll find that employee retention goes through the roof, and you don't have to worry about hiring new people all the time.