There's thousands of kids in countries like India and China that want to become engineers for reasons like "it pays well", "my cousin moved to the States and he was an engineer" and, "my parents told me to".
They go through all of the intense testing and hours of studying in order to become engineers when they finally face the harsh reality. Very, very few of these engineers are "wildly successful" (i.e. moving to the United States). Most of them work jobs in their home countries, with just-better-than-average wages.
All of us in the States probably feel the talent crunch in the Valley; why can't we just ship over that excess of engineers from India or something? Well, we're trying.
There are excellent people from these countries, no doubt (Vinod Khosla, anyone?). But, the issue is, they're very difficult to find. The issue is there's just far too many that are in software solely because they've wanted to earn more money.
Earning more money is definitely a valid reason, but, it should never become the only reason. When that happens, you get drones that try to maximize profit with minimal work. I won't name any names, but, we've all seen the "outsource your work" websites with the marquees, excessive gradients and a note that says "best viewed on Internet Explorer 6".
So, there's an incredible lack of passion, even though they are, on paper, lots of hackers available. If you don't have passion, it is very difficult to be motivated to build something that is awesome and something that people want to use.
I think that passion is one of the defining characteristics of great hackers. They are legitimately interested in what they are doing and this allows them to go above and beyond in terms of results. I'm not suggesting that developers should be screened on the sole principle of how passionate they are, but, I think its something that we too often neglect to take into account.