the idea, i suppose, is to prevent anyone from becoming so integral and important that they will have negotiating leverage over the business.
Cogs needs to be replacible. It's also the core reason why thorough documentation, procedures and runbooks are encouraged.
Why work for someone who clearly doesn't align with your professional values?
I'm not I have literally heard a software engineer which was since recently responsible for hiring just saying just a few sentences apart:
- oh we shouldn't hire this person they only ever worked for the same company so they must not interested in learning and improving themself
and then
- oh we shouldn't hire that person they have switched companies every 2-3 years so they must be bad at their job and jump companies before they get fired
... wtf
and that person didn't get that opinion due to being crazy or so but from spending ~2 days to read up on what you need to look out for when hiring people, i.e. from other software enginers, software project managers and people which founded startups
the problem is not only is there a lot of nonsense out their there are multiple different conflicting engineering cultures out their each insisting only their way is the right way and convincingly pursuing people why the other way is supposedly terrible. Not few of them also pushing a rather toxic culture or a live style which only work for a singles with workoholic like traits or people which at some point in their live had the luck to get rather wealthy and no assume any software enginer in the world is in their position. It's just shit.
If on the other hand you are just saying "well it is unlikely you will get to 9 years" the problem with that thinking is that the closer you get to 9 years and the more you have invested the more likely you will want to stay for 9 and being forced out for no reason is silly. It is a job, not the presidency.
This is exactly the disconnect between people's salary expectations and their actual salary. It's not really based on how valuable your work is, but how easily replaced you are.
Now I also prefer startups and my carrier isn't yet that old (like ~8 years) so never is still the answer.
Through companies being often way less likely to give a trusted long term employee a payrise or trust them with more responsibilities then they are to do so with a new hired employee they have hard times to properly judge the skill of is still an (absurd but not IT specific) issue.
Our organization has a policy that it hires developers on 3-year contracts, and renews them no more than two times. So when you have reached 9 years in the org; when you have become intimately familiar with the domain, and the codebase, and the way the org works etc., you are out.
I am still incredulous that someone has thought that yes, this is exactly how an organization should manage its software engineers.