A professional recruiter recently solicited opinions on The Great Forums about the IT job market. I was amazed at how many people replied with grim outlooks and predictions of doom for such a huge, healthy industry.
The computer industry is not in trouble. Computers (and related devices such as mobile phones, consumer electronics, etc. that I'll lump into this discussion) are basic utilities to most homes and businesses. Even the most basic mom-and-pop convenience store in the middle of nowhere in Pennsylvania probably has a computer running Excel in the back. As long as people continue to use computer technology, the industry will need a lot of people to design, deploy, and support it.
But everyone's screaming about IT outsourcing. "All of the jobs are going to India!"
The big problem is that there was a huge rush of people who went into IT for the wrong reasons:
These people all got degrees in CS or CIS/MIS and expected to walk out of college and become millionaires without actually knowing much (if any) computer science. After a few years of the real IT world, they either switched fields or kept doing work they hate, becoming bitter toward the IT industry and writing forum posts about its doom.
Around the same time that all of these people flooded the job market with poor skills in practical software development or systems administration, most internal software development (for proprietary in-house applications, the majority of software development work) moved from C++ to Java and .NET. Hardware speeds and capacities skyrocketed as prices plummeted, so the main disadvantages to these "managed" languages became irrelevant for most applications.
As a result, the majority of software development became easier. Smaller teams with less-skilled workers can be far more productive with Java or ASP.NET than they could ever hope to be with C++. Therefore, a lot of this development can be (and has been) outsourced to cheap overseas programming farms. But there are many disadvantages to outsourcing, including often-poor code quality, difficult maintenance over time, and limited communication between the local and offshore businesses.
It's much easier to coordinate a project with the people down the hall than with a firm halfway around the world whose programmers don't share your native language and whose teams cycle out every few months. It's hard enough to maintain communication with local workers who telecommute from a few miles away.
But for a lot of programming work, it's so basic and boring that these limitations are acceptable. It's this type of work that's being outsourced. "Make a J2EE web front-end to these database forms. Here are the complete specifications. Don't think for yourself."
Good developers usually found this work boring anyway.
If you're good, you can still get a good job almost anywhere. Good tech people are very hard to find - just ask any employer. There's plenty of work for them, but the standards have risen. You can't just have a dotcom-bubble CS degree and expect people to shovel money at you. You need actual development skills.
Sifting through hundreds of unqualified candidates is time-consuming, demoralizing, and expensive. Most employers will pay quite a bit to have someone else on the front lines, filtering out the useless masses and passing along only the worthwhile few.
If you want a stable, well-paying IT job in the United States, the bar has been raised. People who went into IT for the wrong reasons are going to have trouble. But truly good developers have nothing to worry about.
Neither do recruiters. The market for matching good developers with good jobs is perfectly healthy. In fact, it's probably growing. As more underqualified candidates enter the workforce and more easy jobs are outsourced or eliminated, the value of a recruiter who finds good candidates will skyrocket.