I recently read Paul Graham's post on immigration and the need to import the best engineers into the states. I think it's absolutely true that immigration reform needs to happen and I have experienced how messed up the visa process is for immigrants in tech startups, but I also think the workplace is changing in such a way where we can now work more globally as teams.
In fact, I'm living this right now as we are building Blinkfire Analytics. As it stands, half of our team is in Chicago, and half of our team is in Valencia, Spain. This is not an "outsourcing" relationship. We work as a team remotely using a combination of video technology (Google Hangouts) and live text/HTML messaging channels ( Slack). These two enabling technologies, and primarily the former which is allowed because of the availability of high bandwidth, are game changers for remote teams.
There are a a number of things I have put in place to make this work:
1) No audio calls
To me, video conferencing is infinitely better than audio on the phone, almost to the point where I shun a regular phone meeting these days. If someone suggests a phone call to me while they are driving in a car, I immediately ask to reschedule as I find these calls to be useless 95% of the time, especially if it is a conference call with multiple parties. So I insist on video meetings that are remote.
2) You still need in-person visits
As good as video is these days, it's not a replacement for in-person meetings. So we still have built into our plan travel back and forth between locations. What is true, is that video conferencing is much easier once you have met someone face to face. I learned this working at Google where we often had to work across locations. I was much more successful visiting remote offices and meeting people face to face, and then flying back and working remotely.
3) Only keep people who can work in this environment
Some employees can work this way, some can't. Do your best to find people who can work with others remotely. They are usually driven, motivated, and will get on the plane to do #2. It's all about communication. If you choose to work in a distributed fashion and an employee can only work with people who are sitting next to them, or they lose focus when not with others, let that person go and move on.
This is generally working well, and it's been a great way to attract really talented engineers that would be much harder to find in Chicago, or anywhere else for that matter.
Working globally in a distributed environment is not seamless, however. Even if engineering talent is quite a bit cheaper outside the US, there's definitely some overhead in having multiple locations, and international ones at that. For instance, you have to pay two sets of lawyers, accountains, payroll systems, and there's always this nagging set of tax consequences you never feel good about.
Nevertheless, it seems to be a better alternative to me than fighing with the US Government on getting talented engineers visas, green cards, or citizenship. We now live in a global economy. Deal with it.