The ACM held a conference on the future of the American computer field just last April.
Their conclusions were that while a number of jobs were being outsourced, most computer jobs have stayed right here. Only the largest hirers of programmers have begun to outsource overseas. They predict that as companies begin do deal hands-on with the unusual issues of dealing with a distant programming force with language issues, many of those jobs will come back here (indeed, I’ve heard from people within the industry that it’s almost impossible to get changes made with this system). Also , outsourcing is only one of the reasons for a drop in IT hiring.
The main reason is that management is simply sick of their computers and their computer poeple, considering the money they spent on Y2K and then the internet bubble. Recently, they’ve simply been loathe to pour any more money into their information infrastructure. As those infrastructures become outdated, hiring will start to pick up again.
I myself graduated last Spring with my BSCS, having given up on completing my Music degree from years before, and eager to move out of education into something else. The job market was truly dismal, and I spent a depressing summer calling disconnected phone numbers, and interviewing for paltry entry-level jobs whose average salaries had plummeted from just a few years earlier. I am now right back in education, teaching Computer Science at a private school in Anaheim. I beat out 200 other people for the position, as I was the only one who knew what I was doing in front of a group of students. The others were all out-of-work IT professionals. I hear from the people a year behind me that the prospects have not yet improved much. I am perfectly happy to wait out the slump right here for now.
I have faith that programming will once again be a viable option for Americans in the not distant future, so if you are interested, you should probably take into account the results of a poll that Computer, the IEEE Computer Society magazine, published in May 2000. Hundreds of professional programmers responded to a survey of just what topics that may or may not be taught in a college program turned out to be useful on the job.
The top twenty-five necessary skills for a programmer at that time, according to those in the field were:
[ol]
[li]Specific Languages[/li][li]Data Structures[/li][li]Software Design and Patterns[/li][li]Software Architecture[/li][li]Requirements Gathering and Analysis[/li][li]Object-Oriented Concepts[/li][li]Human-Computer Interaction/User Interface[/li][li]Ethics and Professionalism[/li][li]Analysis and Design Methods[/li][li]Giving Presentations[/li][li]Project Management[/li][li]Testing, Verification, Quality Analyisis[/li][li]Design of Algorithms[/li][li]Technical Writing[/li][li]Operating Systems[/li][li]Databases[/li][li]Leadership[/li][li]Configuration/Release Management[/li][li]Data Transmission[/li][li]Management[/li][li]File Management[/li][li]Software Reliability/Fault Tolerance[/li][li]Systems Programming[/li][li]Network Architecture[/li][li]Negotiation[/li][/ol]
Also important are the so-called “gap” skills, those that are far more important in the field than their emphasis in university programs might indicate. According to the survey, the ten greatest “gap” skills, by size of the gap, were:
[ol]
[li]Negotiation[/li][li]Human-Computer Interaction/User Interface[/li][li]Leadership[/li][li]Real-Time Design[/li][li]Management[/li][li]Cost Estimation[/li][li]Software Metrics[/li][li]Software Reliability/Fault Tolerance[/li][li]Ethics and Professionalism[/li][li]Requirements Gathering and Analysis[/li][/ol]
There’s only so much you can do about the state of the job market. If you position yourself as the master of these skills, you may find yourself first in line when it rebounds.
In addition to these, it also couldn’t hurt to stay abreast of the progress in the Agile development community (Scrum, Extreme Programming, etc.). While the zealots of these disciplines are overly positive, and their detractors overly negative, they are starting to show a track record for getting quality software out the door relatively quickly and cheaply. Once the dust settles over specific methodologies, I think those with an understanding of the principles behind such practices will be ahead of the game.