I'm not sure that it's so much "xenophobia" as the fact that companies are pretty well-known to be abusing the H1-B process right now to avoid hiring qualified Americans. The advantages for employers are quite strong, not least because H1-B holders have far less mobility and are essentially at the mercy of the employer.
I'd like to see a credible source for this. There are references to a handful of shady companies misbehaving, but I have yet to see hard facts or credible stats (I'm not saying they don't exist). On the other hand, I have seen a lot of xenophobic hysteria and comments from American "IT professionals" whom I certainly wouldn't want to work with.
In my own experience, my employer is struggling to find qualified people. We are a fast-growing startup in LA and simply cannot scale as fast as we would like (mail me if you want more info). There is no shortage of foreign applicants but, afaik, I am one of only two sponsored H1B employees.
Individuals with an H-1B can transfer employers under the AC21 rules. Many people with an H-1B simply don't know it. There's a lot of information from AILA here: http://www.aila.org/Issues/Issue.aspx?docid=12647
The problem with a transfer is that you could "reset" the employment based green card process, putting you to the back of the queue, and adding several more years, and uncertainty to the process.
If you have a GC petition under processing, and switch jobs by transferring the H-1B, at the new job you will have to start the GC processing all over again. Nonetheless, you can transfer the "priority date" (PD) from the first (abandoned) GC petition to the new one.
This piece of misinformation cost me many years, so please don't spread it. I waited too long for the "right job" to come by and wasted many years. I could have started the GC petition at the first opportunity and transfered the PD as I switched jobs.
As mentioned by another poster, you can switch jobs if the EB category stays the same.
In that sense, you do have to wait for the "right-enough" job, where they employer is willing to agree to you categorize you in EB2 or EB1 if you have a PHd.
In addition, companies/lawyers take their sweet time preparing paperwork. Which means:
PERM application in process? Can't switch jobs from 3 months to a year or more. My PERM took > 1 year to be approved. Others I know took more time.
A H1 transfer or PERM can also be autited for no good reason, and waste time for people. An audit will discourage people from switching.
I140 in process? Should I switch and waste time invested in PERM?
You can technically switch, but there is plenty of FUD to give people second thoughts.
You can only transfer the Priority Date (PD) if you have got your I-140 done with the old company and you maintained the same classification when you filed your new labor certification (LC) with the new company (EB2 -> EB2, EB3 -> EB3 ok, but EB3 -> EB2 not ok).
Your last two sentences are spot on... I am guilty of it too.
also most employers have no idea how to accomodate transfers. They're scared by any prospect of extra paperwork or even worse, consulting a lawyer. If the H1B holder was free to move about from job to job as easy as a greencard holder, then all indentured servitude and low wage abuse would cease overnight.
There are not nearly enough qualified and affordable senior level programmers in the country. We tried to hire them. Most candidates, that are senior on paper, do suck, they can't solve even medium complexity problems.
Unless you have a crazy budget, you will spend a loooong time interviewing and going through one shitty candidate after another. We've interviewed close to 60 people, hired 3 (NYC). One of the 3 turned out to be a rat who delegated all the work to other developers, and had to be let go.
In cities like NYC or SF, you need a very high salary to attract true talent.