> Firstly, yes, there are a lot of consulting firms
That's true, there are a lot of consulting firms like Tata/Infosys/Wipro that use up a large chunk of the available H-1B visas. They only pay their workers like $80,000 on average, and almost never sponsor a green card. The other thing is that a big chunk (like >50%) of the people at these firms are on visas. I'd like to see a solution that limits that sort of use, and instead provides visas to more legitimate companies, without making it impossible for immigrant students to stay in the country.
One possible solution might be to require higher wages if more than 20% of the employees are on visas. At most of the companies I worked, at least 80% of my coworkers were Americans. But at the same time, I've heard that a high percentage of developers Facebook and Google are on visas. Simply requiring that companies higher wages if more than like 20% of their workforce are on visas, would end the use by consulting firms that are heavily staffed by H-1B workers. It also would not completely shut the door on immigrant students looking for a job after they graduate.
> Tying someone's immigration status to the actions of a single employer makes even basic negotiations like "this work environment is terrible"
This is a misconception. I can change jobs to any employer that is willing to do an H-1B visa transfer. Of course, it reduces the set of companies I can work for, but in tech, most companies will transfer your visa. Another fact is that, before January 17, 2017, you couldn't have gaps in employment, and had to find a new job while working. But this has been fixed, and now H-1B visa holders can quit freely, and have 60 days to find a new H-1B employer. I've pointed it out here: https://news.ycombinator.com/item?id=13452381
In addition, I have been in the exact situation you described -- i.e. "this work environment is terrible". This was before the 60-day rule came into effect, and I actually quit my job anyways. I lost my legal status in the country as a result, but it really wasn't that big of a deal. I just had to do find a new job, fly out of the country, and re-enter, to regain my legal status (and start my new job). I've explained what I did in detail, here: https://news.ycombinator.com/item?id=13361827