I think we should abandon H1-B completely. If someone wants to work in the US, and has a job lined up here, then we should allow them to become a citizen within a year assuming they jump through the necessary hoops (take a night class, pass the citizenship exam, etc). This idiocy of requiring people to wait years, sometimes over a decade, to become a citizen while they work in the US at a well paying job is stupid.
We are a nation of immigrants. It's in most of our blood. Immigrants start businesses far more than native born Americans because they are risk takers... if they are willing to uproot themselves and move to a foreign land, they are likely willing to take other risks as well. That kind of risk taking is what built our nation, and shutting it out only harms us in the long run.
The H1-B program creates trapped workers who have to toe the line and rock no boats, lest they be fired and deported. This allows companies to abuse them in ways citizens would not put up with. An immigrant with citizenship is less of a threat to the livelihood of tech workers than an H1-B visitor, as companies would not be in a position to deport them if they asked for a raise; they could look for other jobs with impunity, and thus would compete on equal footing... and similarly, would not have to put up with artificially depressed wages.
So open up immigration, and fuck the stupid fake 'work' visas.