Oh, my. If you had said "average GDP per capita" or "total real GDP" or even "many people" better off, OK. Free immigration is very much like free trade: it makes the system as a whole more efficient, but there definitely are winners and losers in the process. In the limiting case of 1 immigrant, employees in that immigrant's field lose (slightly), and everyone else wins, including that immigrant's employer.
So, in my view, these things should be controlled in such a way to try to make sure the winners aren't people already winning and vice-versa. But not to the point of cutting off our nose to spite our face; there is this tradeoff between equity and efficiency.
> If immigration forces people to be programmers, then homegrown programmers will be disproportionally affected by immigration...I don't think this would have happened had immigration been "free"
Well, I agree, and this is pretty close to a tautology. As the "high-skill natives" in an H1B field, we're the primary losers from the policy, whereas most people benefit.
I'm coming at this from the assumption that there is some number of immigrants per year, X, that society is willing to tolerate. Would we prefer X Albert Einsteins or X random people? You are arguing that the former would cause a market distortion; maybe true, but still preferable, I'd say.
And I think that it doesn't really matter whether immigrants are enslaved to a particular company, or whether they're simply selected for a particular set of skills. If you allow only programmer immigrants, most of them will program, whether or not they're required to, because their alternative is unskilled labor.
> I think the H1B visa is too narrowly defined
I agree, but that's the power of lobbying for you. Actually I'm not in programming per se, but science (with computing aspects). Tons of H1Bs here for science as well.
It would make more sense if it were defined by salary rather than field, although may be hard to implement.