DevX released this editorial yesterday. I must say that I have to agree with most of the opinions that were stated in this article, both from the optimists and the pessimists.
I work in a small software shop (7 developers). Our owner was looking at outsourcing to southeast Asia. As he delved into the actual costs, I think he realized this only works for larger operations that have the ability for people to specialize. The people who specialize in the grunt work of programming are the ones who are in danger of having their job outsourced.
Even in a small shop, we have grunt work. At some point, somebody has to write code. In my opinion, writing code is grunt work.
We already use an alternative to outsourcing this kind of work. Two of the positions on our staff are college interns. We try to hire juniors, keep them for two years, and then hire another junior to replace them.
We can pay two college interns the same salary as we would pay an outsourcing company for a single developer. There are other factors to consider, of course, such as experience, training time (which takes away from the potential productivity of other developers), and overhead (office space, a computer, benefits, etc.). Internships, though, certainly merit consideration.