One of the most difficult career decisions that an IT professional must make is determining when it's time to leave his current employer and start anew at another. Many people in the industry change companies fairly often because they believe that the best way to increase their value is to be well rounded, versatile and prepared to on take any project. I believe that the opposite is actually true: It is the most specialized developers who are most valuable.
When developers graduate from college, they have a basic familiarity with the field and are generally prepared for a wide range of entry-level positions. However, to best advance their careers (and their salaries), they need to find their niche and then specialize. Organizations are typically willing to pay significantly more for an employee who can step in and fill their immediate needs with minimal training than they are for a versatile developer who knows a little about everything but can't make immediate, specific contributions.
The most common reason for changing jobs is to earn more money, but if the job change doesn't build upon your selected specialization, you may be sacrificing long-term growth and advancement for an immediate pay raise. Over the years, specialization will pay off more than lateral job-hopping -- in terms of salary as well as professional growth.
I recommend that you change jobs only when you are confident that the move will allow you to leverage and bolster your chosen area of specialization. Your first consideration should be what you can learn in the new position and how that compares with what you could learn in your current position (or other positions that you are considering). If it looks like the move would be beneficial, then consider whether it makes economic sense.
Once you choose a specialization, don't change it unless your interests change. If you are a specialist in developing networking software, you've probably invested significant time and energy learning about networking software development and staying on top of your field by reading relevant publications, attending trade shows and so on. If you change jobs to an unrelated position, that investment will largely go to waste. However, if you're offered a job by an organization that values that investment and will help you build on it, you should seriously consider moving.
If it seems like a new job makes sense careerwise, probe deeper to determine whether the hiring organization is a place where you can thrive over the long term. Even if it looks like the new position could help your specialization, you may want to reconsider if there are signs that this could be a "burnout" job. Many organizations don't understand how to run development groups, and the employees' morale, health and careers suffer as a result. Overworking developers is usually counterproductive; when developers are working constant overtime, they tend to produce worse code than they would if they were well rested and less stressed. Development is steady hard work; when overtime is constantly required, developers become exhausted and have little "reserve" left to contribute.
To assess the risk of job burnout at a potential new position, talk to the developers when you visit the potential employer. Ask questions, including:
Adam Kolawa is co-founder and CEO of Parasoft, a vendor of automated error-prevention software and services in California. Co-author of Bulletproofing Web Applications (Hungry Minds, 2001), Kolawa has contributed to and written more than 200 commentary pieces and technical articles for numerous publications. He holds a Ph.D. in theoretical physics from the California Institute of Technology.