For instance, suppose that land can be used to grow either lemons or avocados. Avocados suddenly become very popular and fetch a high price. Land that was formerly used to grow lemons is now used to grow avocados. So the price of a lemon now reflects the opportunity cost of not growing an avocado.
Because people can no longer get lemons at the price they used to pay, or at a 50% markup, they claim there is a "shortage" of lemons. They create an immigration system where someone is allowed to come into the US and farm land - on the condition that they grow lemons. The immigrant is not allowed to grow avocados, nor is the immigrant allowed to do something other than farming. You're here to grow lemons buddy, because there's a shortage of lemons. Ok, fine, grow lemons for 7 years, and we'll give you freedom, but only after you've made a massive investment in setting up a lemon operation and costs of changing would be high.
What this does is ensure that absolutely nobody with the freedom to decide what to grow will ever grow lemons. It will also ensure that the price of lemons will never reflect the opportunity cost, so the market signals that would bring prices back into equilibrium, encouraging people who can choose to grow avocados instead will now be suppressed.
This is why a lot of people have no problem with immigration, but are opposed to "employer sponsored" (corporate controlled) immigration designed to fill specific shortages. What these programs end up doing is creating market distortions that make long term problems even worse, all while limiting personal freedom.
It's not that hard to solve, just say that immigrants are free to study what they wish and work in what fields they wish. Employers don't get a say in this. If they aren't offering pay and work conditions strong enough to draw immigrants into programming, any more than for people born here, fine. I see absolutely no reason let corporations tell immigrants they have to be programmers rather than real estate agents, lawyers, nurses, drywall installers, or sandwich shop owners, just so employers can get to hire programmers at salaries that aren't good enough to draw people with freedom into the field.