Despite the down economy, the IT industry seems to be holding up relatively well, and in many areas it still has good opportunities. However, that doesn’t mean that IT professionals do not have to work hard to have a career that keeps them employed and growing. Here are some common mistakes IT professionals make that can compromise their careers.

1: Not staying up-to-date with technical skills

The absolutely worst mistake I see IT pros make with their careers is not continually improving their skill set. It is understandable, of course. Who wants to put in a long workday, come home, and then do more work, read books about work, talk about work, and “practice” work? At the same time, technology changes quickly, and unless your employer is frequently throwing new challenges at you, your skill set is deteriorating. Just because you were a hot hire a few years ago does not mean that your resume will get even a passing thought in today’s market. If you want to ensure that your IT career is long and continues to yield increasing rewards, you must keep your tech skills up to date.

2: Not learning soft skills

Being able to deal with the technology is a big part of doing a job well and getting ahead, but it’s not the only part. There are a lot of soft skills that are part of having a prosperous career, too. It is not just IT professionals who overlook these skills. But due to the nature of IT work (typically “out of sight, out of mind” until something goes wrong), it is especially important for them to work on these skills. The most important ones to master are effective communications, both verbally and written.

3: Confusing “today” with “tomorrow”

Too many IT professionals think that the job market out there today is what it will be in the future. Along the same lines, they often have a hard time realizing that the things they do today may not be valuable tomorrow. You need to constantly pay attention to the tech press and your peers to learn where things are headed, what trends are occurring, etc., to get a handle on your career. In addition, it will help you to see what companies are best positioned to give you a long-term career.

4: Refusing internal career shifts

It is human nature to be set in your ways. If you worked hard for the job you have now, and someone offers you another opportunity within your organization, why should you take it? The problem is, career growth does not occur on demand. If your organization sees potential in you, there is a good chance that you can do that job even if you do not see yourself doing it. Many times, organizations would rather have someone who is competent, capable, and already part of the company train into a position than hire someone from outside with a good resume but who is an unknown. Not only is moving up through the ranks good up front, but it also looks great on a resume. Someone who is elevated on a regular basis is a much more attractive hire than someone who remained stuck in the same job, regardless of the reason.

5: Falling in love with the wrong tech

There are lots of great technologies out there that I wish I could dedicate my career to. Unfortunately, most of them would be a disaster to hitch my career to. For example, I absolutely loved working with Perl (I know, I’m a glutton for punishment!). Others have a crush on FoxPro. Guess what? Trying to build a career on those technologies is a dead end. When I left Perl, I landed in the .NET world. While the .NET world has treated me very well, I would have been much happier, I think, to have ended up as a Python or Ruby developer, in terms of the work itself. But at the time, neither Python nor Ruby was viable a career path.

6: Not specializing (or not being an awesome generalist)

In IT, if you want to make the big bucks you have two choices. You can be a specialist and find something with enough demand so you never lack for a job and there are too few workers to drive wages down. Or you can be an incredible generalist, able to slot yourself into IT organizations and run like the wind, floating from project to project with enough expertise and ability to learn on the job to be successful.

But most people follow a path of weak specialization or middling generalization. You aren’t doing yourself any favors being a “Windows system administrator” unless you can handle the entire Microsoft stack with a reasonable amount of competence And you are going to sink by being a generic C# or Java Web developer. Sure, you may not lack opportunities, but they won’t really be the best jobs with the most money, security, or growth opportunities. By either picking a deep specialty or becoming a superior generalist, you can write your own ticket much more easily.

7: Being unwilling to manage

Whether you like it or not, moving up to management is really the only way to get your salary past certain barriers without going the consultant/freelance route or specializing in some pretty difficult niches (video games, device drivers, kernel code, etc.). And even if you do see yourself becoming a consultant or freelancer, spending some time as a manager gives you a good idea of the kinds of things you will need to learn and do, without taking the risk of going out on your own. You may find that the paperwork and constant communications with others are not to your liking, but it is better to find that out while still holding a job than to discover it as your business flounders.

8: Doing it for a paycheck

It should come as no surprise that many people go into IT just because it is a relatively good paycheck with a relatively high amount of job security, but they really have no passion for the work. And really, there is nothing wrong with that, if your intention is to hold a position, get the occasional cost-of-living raise, and move from job to job as needed. But to have an actual “career,” you need to care about your job beyond what it does for your bank account. You need to work to be the best you can be. Those who are in it just for the money stick out like a sore thumb (probably more so than in most other industries). They’re rarely chosen for promotions, raises, or other career improvements, and they have uninspiring resumes that do not scream “hire me!”

9: Isolating yourself from the rest of the company

It is easy to spend your day at work with your head buried in the job and not notice what’s going on around you. While that may suit you fine, it is not helping your career any. It is vital to engage with the rest of the company to grow your career. For one thing, you make valuable connections. The person who is a mid-manager in Marketing today may need to pick someone from IT to spearhead an important Web project next month, and having that connection puts you in a good spot. More important, though, is that cross-pollination of ideas is crucial for IT to be successful. When you spend time around people from other parts of the company, you learn where IT is doing a good job and where it isn’t and how to make improvements to better serve the company, which is the exact kind of thing that benefits your career.

10: Not knowing the job market

The IT job market is fairly fast paced. As technology shifts, different skills rise in demand as others fall. A ton of factors go into knowing what skills are valuable and what are not. For example, VB6 and COBOL have been useful far longer than one would assume simply because of the massive base of existing code that needs to be maintained. Java is the same way; it could stop being used for new code tomorrow and people would be maintaining Java applications for decades. At the same time, maintenance work is typically uninteresting, not well paid, and not the elevator to the top level of compensation. Along the same lines, just because a technology is “hot” in the press does not necessarily translate to piles of job opportunities. That’s why it is important to keep track of the job market, even when you aren’t on the hunt for a job. Stay in touch with recruiters and other IT professionals and do a lot of reading to get an idea of what kinds of jobs are out there and who is filling them, the pay, and the skills needed.