The problem with H1-B’s is that that never know as much as is promised to you. After spending weeks re-training Indian H1-B programmers back in 1999 for a web project and then having them screw up the COM objects on the site, we have never hired anything but American kids.
My experience has been, the Indian programmers are ok at programming, but they don’t understand the business. The business users have to repeat things over and over again, and then they still get it wrong.
In my book, what we call a “programmer” today, should also be a capable business analyst. I won’t hire a programmer that doesn’t have business analyst skills.