There are some great rationales from people here who hire, and gave me a different viewpoint, so I appreciate why companies do that. They do so because of economic reasons - people stop becoming productive after a year, as Kranar notes, or people don't want to leave because it's a pain in the ass to apply for a new job as well as leaving friends behind.
.
One thing I personally have said for a long time, is that when you are just starting your career, you should get it in your head to change jobs as much as possible - so through your 20s to mid-30s. The reason is because a job move will almost always increase your pay, much more than any company ever will.
The trajectory of income earnings at your early stages will be the most dramatic because there is a ceiling, for the most part (there will always be outliers), on how much you can earn, no matter what. You'll never see a programmer making $2 million, doing programming, for example. So if you start up at $60,000, just for example, the faster you get to $150K or $200K, if possible in your specialty if you have one, the better, because incremental increases will slow down at that point, no matter what. It will be much more difficult to get a job at $200K, as it will be to get to $75K. (Don't worry about the exact numbers, I'm just using them as an example).
When you're in your in the 32 years old to 35 years old, you can start looking for a long-term job that has your values and interests.
It used to be that companies wanted people at their jobs for a long time because it showed stability, and that they would stay with the new company a long time. I'm sure there are companies like that still out there, but if you change jobs a lot, like every 2 years, hiring companies will more likely look at your history and think you are a "hot commodity" that everyone wants to hire which causes more competition from hiring companies.
There's also the fact that if you go from $50K to &75K to $100K over 6 years, rather than $60K to $76K over 6 years, the hiring company will find it much easier to increase th pay the person making $100K to $130K, rather than pay the $76K person to $130K. Even if both have the same exact skill level. It's just human nature. And it is kind of true. The person making $100K knows their value and goes out and gets it, the other is more complacent, whether you think that or not or have all kinds of reasons why this is not true. Those are your reasons, not the hiring company's reasons.
Finally, the other thing about changing jobs a lot at the beginning of your career and making more money is that when you do get a raise, let's say 10% raise for the two people in this example, the person staying at the same company for 6 years and goes from $50K to $78K will get a raise of $7,800 (and the same with a bonus), while the person going from $50K to $100K will get go get a $10,000 raise (and bonus). And that difference will keep getting larger the more money you make, obviously.
Fuck loyalty to the company - they have zero for you. And your friends will still be your friends as you all disburse over time to new companies, and you will have a nice network over the country. Plus you will make new friends at your new company and expand your network even more.
And, by the way, your absolute best way to get more job offers and higher pay, is by giving talks and publishing. I know one guy that gives technical talks twice a week, anywhere there's two or more people. I talked to him about it, and he said that he gets at 2-5 job offers per day sent to him. When you do public speaking, you become a thought leader, or industry leader. The same goes if you publish something - in a well-known website or a chapter in a book compilation, or whatever. You are again a thought leader.
.
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.