People with good people skills, good programming skills, and good domain knowledge are in demand now and will continue to be in demand. People who do work that cannot be easily outsourced—network wiring, for instance—are in demand and will continue to be in demand. Even outsourcing isn’t the cost-saving panacea it looks like on paper. The costs of communication and remote management, and the cultural and language differences, which don’t show up in estimates, are much higher than they appear to be. The only kind of outsourcing that really works well is when all the company needs is a bunch of low-skill code grinders, and generally when that’s the problem, it’s usually an even bigger savings to change the implementation so that the number of people typing code is not a limiting factor. My company has experimented with outsourcing, but mainly because it wanted to experiment with certain technologies and it was deemed lower-risk to hire a consulting company for one project than to staff up in-house for technologies we weren’t sure we wanted to commit to. It wound up probably costing more than it would have cost for us to staff up in-house.