Currently immigration is something quite interesting to be studied, especially in the US with these long queues to get the green card. If you join a company in the US on a non-immigrant visa (like L-1 or H-1B), you usually start your green card process, either right away or after some time. To set the stage, let me explain better about these visas. L-1 implies that you must leave the country almost immediately if you leave the company. H-1B has a little bit more flexibility: you have one month to find another company that sponsors your visa or you will be out of legal status. Back to the green card, depending on the job requirements, on how your case is filed, it may take many many years to get it. And by many many years, I talk about 5-10 years, sometimes even more than that. Although theoretically possible to change jobs under certain circumstances, few do that because there is a chance the process is withdrawn and you lose your place in the line to get the green card. That means that you are stuck with one company, with one type of job (changing the job may jeopardize the whole process). And, even after you get it, you should stay with the company at least one year to avoid being potentially charged with green card fraud.
I never liked being stuck with one company. And, when living in another country, I never liked the idea of living in that country without being sure that I could stay there and your personal investment in the country won't be lost. For this reason, I never really thought of coming to the US, because of the hard work to get a green card (besides the compromise). And, in my case, I could work in Europe since I am a EU citizen, so that makes me reflect more about what to do.
For a big company, the point is not in getting the actually best and brightest minds (although all big companies say that all employees are the best and brightest!). Nevertheless, the point is not to hire genius, but relatively smart people and make the rules and decisions that benefit the average employee. And who would that be? The one that achieves or even exceeds what is expected based on his/her experience, and that stick with the company for a long time. These delays in the immigration process end up serving the best interest of big companies that are sponsoring the green card for the employees: in average, their immigrant employees will be around for a long time. It may not be used on purpose, but that is the fact and it benefits big companies. Who is brave enough to throw away many years of theirs lives, especially with a family that may be well settled in the country? And isn't it the best deal if you can hire an experienced foreigner paying less than what you would pay for an American with equivalent experience? The difference is only the relocation (which is one-time charge) and green card process (again, one-time charge). When outsourcing is not the best option, that is a great deal to keep big companies competitive in internal US market and also globally. These professionals (the average employee) get stuck over the time due to this immigration issues, sponsorships and related rules. But that is not all.
Other common policy to make people stay with the company: you offer deferred compensation over time. That can be in the form of bonus, stocks, or anything as long that means that the employee will only get it if he/she spends many years at the company. And, on a regular basis, based on contribution, you pay more and more of his/her compensation in this way. Who will leave the company and leave that much money on the table? These are known as golden cuffs.
Third, you create a competitive scheme that only the very best get compensated. That is great for the company, but that has different effects on the employees that end up being blind by immigration, deferred compensation, and this competition. These employees become more focused on whatever they need to do, losing track of skills that are generally applicable to other companies, and more and more skilled on whatever is specific to their employer. And, although I don't know if on purpose or not, but I see that people lose track of what is outside the company and their own view of the company is based on what they learn from the company material (what may be influenced by the company ideology). Back to the market, not knowing what is going on in the market is not too bad if your company follows market standards. But that is not often the case and some particular experiences are very specific and not much valued elsewhere. A professional who leaves such a company, being valued by his/her specific and narrowed knowledge with a high salary, may only get a job that pays much less that what he/she makes. Who would do that?
Fourth, you create an environment where people feel good about themselves because they work for that company. More ideology work is necessary here, but it is not too hard. One can offer entertainment and other sorts of offers that seduce the employee family as well. And associate a good image of the company, so nobody will feel bad about being immoral or unethical to work for such an employer. Any bad press must be worked on and reverted, at least internally.
In this environment, what happens is that the least important thing is if you really love what you are doing. And unfortunately the rest does not pay off if you pursue to do what you love and what you believe in. From my experience since university, though, the majority of people does not care much about that. After all, if all jobs are the same, why not to be with those that offers the points outlined before? At least there is some advantage to be at the big company.
That is sad, very sad. Especially if you care about what you do and/or you are an outlier. [And not to mention how that compare to open source software, but that is a topic for another post.]