Knowing what you’d like to do is great, but don’t box yourself in too narrowly. You also need to understand the current job market and how it constrains your search for the “ideal” job, especially during an economic downturn like the one that burst the original Internet bubble of the late ’90s.
There are a number of sources of information about what’s hot and what’s not in the developer job market, including the following:
Online job listings - Large job sites such as Dice (which specializes in technology-related career listings), Monster, and HotJobs are your first line of research into what companies want.
Bookstores - Even though more and more programmer documentation is available online, printed books are still a significant market for technical publishers. The number of books published on any given topic is a good indication of the degree to which skills related to that topic are valued by potential employers. Look out especially for niche topics that are suddenly going mainstream.
Social networking and bookmarking sites - Some of these sites enable you to find potential employers, or enable them to find you. Others provide an indirect “pulse” of the market by the bookmarks and comments other programmers leave about various technologies and employers.
Professional development courses - Colleges and universities try to keep abreast of what companies want, and create professional development courses around those needs.
If you’re not in college or university anymore, find out what languages and technologies the local institutions and/or your alma mater are requiring of their computer science students; although academic needs don’t always coincide with what employers want, educational institutions on the whole try to graduate students with practical skills that employers can use.
The rise of outsourcing - having an outside company handle tasks that aren’t central to a company’s lines of business - is always a topic of heated discussion within the development community. Outsourcing is not new, of course - companies have long outsourced tasks such as payroll administration and property maintenance - but the growing number of well-educated people in developing nations and the fact that software development can be done anywhere there’s Internet access have made it possible for companies to offshore tasks that would normally have required a local workforce, whether or not the jobs were outsourced. The disparity in wages between offshore and local talent can result in large savings for companies that offshore their software development - at least that’s the promise that the outsourcing companies make in their sales pitches.
Many software developers find themselves worrying whether outsourcing (and offshoring in particular) is going to put them out of a job, especially those who work in information technology (IT) departments within a larger company looking to cut costs wherever they can. These fears are not unfounded, unfortunately, so when you’re looking for a job consider taking steps to avoid landing a job that will be outsourced at some point in the future. Following are some suggestions:
Work for software development firms - A software firm’s raison d’être is the intellectual property it develops. While medium and large firms may open development centers in other parts of the world, the smart ones are unlikely to move their entire operations to other countries or entrust their future to outside firms. That said, some companies will outsource all or substantial parts of a project to the developing world for cost reasons, so it pays to research a company’s behaviors and policies in this regard.
Work for an outsourcer - For various reasons, many outsourcing firms end up hiring personnel in the developed world, including the United States.
Move up the programmer food chain - Design-oriented jobs are less likely to be outsourced. Good coders are cheap and plentiful, but good designers are much harder to find. (This assumes, of course, that good design skills are separate from good coding skills, and not everyone takes that view, although many companies do.)
Take a management job - Management can be a refuge from outsourcing, so a management-oriented career path is one option to consider.
Of all these options, moving up the food chain is usually the best approach. The more nonprogramming knowledge your job requires, or the more interaction with customers, the less likely you are to be outsourced. There’s no guarantee you’ll never be outsourced, of course, or that you’ll always keep your job. Your company may shutter or downsize the project you’re working on at any point, after all, and put you back on the street. This is why developing reusable and marketable skills throughout your career is extremely important.