Find me an American who's qualified for the job and they'll be hired on the spot. My employer has had a very hard time finding qualified people. The key word here is qualified. I don't care what race, sex, sexual orientation or anything else, as long as you wear pants and can code I'm happy. The problem is that there are far too few Americans graduating with Computer Engineering degrees. I need someone who is good at writing software and understands hardware. When I code I have several documents open at the same time, usually datasheets and schematics.
A standard CS degree doesn't have the hardware background and I'm sorry to say that a lot of code I've seen from EEs is utter crap. Finding someone good at both seems to be damned near impossible.
It often takes months to find someone qualified for a position. Too often the person I interview doesn't even have decent C programming skills, let alone understand things like CPU cache, virtual memory, multi-core programming (up to 48 * 2 right now) or how to interact with complex hardware devices.
I don't want someone who just adds a quick fix or hack. I want someone who does it right, even going so far as to reengineer code if it will make it better (i.e. easier to maintain, more portable, etc.) The code I get from vendors who design boards for us almost always is crap. The first thing I do is throw it out and start over. I try and maintain strict separation between board specific code, our code and the standard U-Boot bootloader code. I've ripped out almost all board-specific code from the common code and put it where it belongs along with minimizing the amount of board-specific code that is required.