The US immigration and visa situation is really quite horrendous.
For example, I'm an Australian. That means I qualify for (and have) an E-3 visa. What's that you might ask? It's a special work visa created specifically for Australian nationals. It applies for two years and can be renewed indefinitely.
What's more, unlike an H1B visa, it's not subject to quotas and the employer doesn't first need to "prove" they couldn't find a suitably qualified domestic worker (a system fraught with abuse that simply acts as a wealth transfer system from companies to immigration lawyers).
The problem? When I need to renew it, it may take USCIS months. Plus it's more expensive than applying for a fresh visa. Also, once approved they renew your status not your visa. What does that mean? It means if you leave the country for any reason you don't have a valid visa to re-enter the US so you have to get a new visa anyway.
Basically, you need to leave the country every two years to apply for a new one (since you can't apply within the US, of course).
What's more, each time I will have to fill out the exact same set of questions (DS-160), make an appointment, give them my passport and wait for it to be returned.
Why does this visa exist? Essentially to settle a trade dispute between the US and Australia over wheat. Australia does not subsidize wheat. The US does (as does Europe) to a huge degree, yet Australian wheat is still price competitive but the US keeps Australian wheat out of the US on the flimsy grounds of "quarantine" (something Australia complained loudly to the WTO as an artificial restriction of trade for years, which like most things that are not to the US's advantage, it simply ignored). This was eventually settled and the E3 visa was one byproduct of this.
But you can see just how screwed up the system is that factors like this cause visas to be created.
Others have posted about the whole H1B problem (quotas, etc) and the backlog of green card processing basically allowing employers to treat you like indentured servants. That needs to change.
Some argue H1B visas are used to pay substandard wages in lieu of employing domestic workers. The substandard wages bit is true but that's because of the H1B processing problem. The real problem for domestic software engineers at least is that most people who call themselves "engineers" or "programmers" suck.
I've been shocked at some of the people I've interviewed, their inability to code very simple problems and their complete lack of theoretical foundations. And those are the ones that make it past resume screening and phone screens".
The government needs to accept that tech companies are basically the most mobile in the world. Look at big tech companies and you'll see they need data centers, some of which need to be in the US (which really doesn't employ that many people). Everything else can be done from anywhere*. Barriers to entry, kneejerk legislation (eg Sarbanes-Oxley) and software patents are all contributing to driving the future Googles and Facebooks elsewhere.
All of this makes me a little sad actually because the US has forgotten it's route. The US is a country of immigrants (IIRC population 2 million in 1800, 50 million in 1900).
One of the reasons I've come to New York to work is because I want to see it. New York is the beating heart of commerce and you can see capitalism and commerce in every form here, some pretty, some not-so-pretty.
I want to see it before it doesn't exist anymore.
My picture of the US is one of decay, rotting from within, collapsing under a mountain of debt and unsustainable policies that will be its downfall. The Roman Empire was enormous and collapsed. The British Empire was enormous and collapsed. Don't think it can't happen again.