There is a big difference between H1-B visas and green cards.
The H1-B visa program is a temporary visa. People come to work for a limited time with no plan to put down roots in the US. People with H1-B visas are easier to exploit than other workers because they depend on their employer to stay in the country. This means that employers have a lot of power over H1-B holders.
In contrast, a green card bestows rights as a permanent resident. People with green cards plan to stay permanently in the US. They have almost all of the rights that citizens have. This means they can't be exploited as they can complain, or find a better job.
H1-B visas are not good for American workers. Immigrants with green cards are good for American workers.
There is a very simply principle here: Giving any group of workers more rights helps all workers.
This is why most progressive groups and labor organizations support green cards.
The jobs we are talking about.
The jobs that we are talking about (for most tech jobs) run easily from $60,000 out of college with a decent four year degree. You can easily approach 80 or 90 thousands with some experience.
Even with these salaries, many companies are having trouble hiring.
Tech jobs are international jobs
The idea that jobs in software should be American jobs is problematic.
The United states sells billions of dollars of software throughout the world economy-- in Europe, Asia, and the Americas. Surprisingly no one ever makes the claim that these Americans are stealing Indian, or Chinese, or Colombian jobs.
The idea that programmers should only work on software used in their own countries is ludicrous. Information technology is progressive... each technology builds on other technologies so colloboration is essential (not to mention that technology that works together is best for all involved).
The problem with talented programmers who aren't American
The question that anti-immigration people never answer is what to do with talented programmers.
The idea that only Americans should be allowed to work in an international industry isn't very satisfying. After all, if you were an educated, motivated and brilliant programmer who happened to be born outside of the US... wouldn't you find a way to sell your talents (and feel you had the right to do this?).
My response to international talent (since I don't think it is either fair or possible to shut them out of the industry) is to work with them. First it is in my interest that they have as many rights as possible. The more Indian programmers can demand a higher salary, the harder is for people to pit worker against worker.
My experience with international programmers
I currently work with non-citizens programmers from India, England and China. They are good people, talented programmers and they add to the success of the company.
The fact is... if the company doesn't exploit them, then they are no threat to me (just as other Americans are no threat to me). Quite the contrary, I am very happy to work with them, and I don't care where they are from.
Xenophobia hurts workers
The lesson of the labor movement is that when workers stand up for each others rights, they can't be exploited.
The anti-immigrant movement is making things worse for American workers in three ways.
First, they are doing the exact opposite of what is best for American workers. Instead of trying to give talented workers in other countries more rights (ensuring better salaries and conditions), they are fighting any rights for non-American workers.
Second, they are pushing companies to go to other countries for workers (and then complaining when they do). Rant all you want that companies (who you want to work for) are evil... but this strategy is foolish. Ensure that foreign workers have more rights and companies won't exploit them. Several countries (including Canada and Australia) are now pulling in the talent the US won't take, and using them to create technology. The US is already losing in the competition for new jobs because the talent is elsewhere.
Third, they are keeping me from teaming up with talented programmers just because they aren't American. My career benefits from working with the best minds, and I haven't found that the US has any kind of monopoly here.
Do H1-B visas threaten the wages of American workers?
Yes. This is why I don't like H1-B visas.
If you don't understand why... you didn't pay attention to the beginning of this diary-- people with H1-B visas don't have the same rights I have and can be played against me to my disadvantage.
But to have a generic knee-jerk response against any immigration is folly.
Bringing talented people who want to make a life in the US, and giving them permanent residency with a path to citizenship.
It's the best of all worlds, they have rights and I benefit from their contributions.