21

I completed a Computer Science degree in 2005, and have worked at the same company as a programmer for the last seven years. I've earned a progressively better salary throughout this time, and have enjoyed rather comfortable job security.

However, I'm afraid my programming skills are no longer marketable. I've spent most of the last seven years creating intranet interfaces for databases, or creating online reports. So most of my experience is in SQL, with some ASP Classic. I graduated with some experience in C# and VB, but my manager is very anti-Visual Studio, so I haven't used those skills in years. Lately, I have been introduced to projects involving mySQL and PHP. But even after seven years at this position, I'm not really an expert in any particular area.

I've reviewed many job postings, which are asking for a wide variety of skills and technologies, none of which I'm qualified for. It seems as though this I've let this job paint me into a corner as far as my career is concerned. What should I do to get out of this dead-end?

10

I'm going to offer a differing opinion from @kolossus. If you are only 7 years into your career, you are still reaching your potential as a technologist. You have much more to learn, and if you are going to lead in the future you should have more experience to pass along - more successes and failures to see that will make you a better leader. Thinking that you should be a manager or lead just due to your experience is a mistake, as the best coders do not always make successful managers or leads.

Certifications, at least in the US, are generally of little value. The value they provide, in my eyes, is to light a fire for someone to learn a topic inside and out. The best part of getting a cert is the learning forced upon you with a deadline (the test), and failure of the test results in a waste of time and money. I causes you to study hard, and the knowledge is worth much more than the cert.

Stay in programming, and pick up some more marketable skills. You will probably need to do this on your own time. Databases skills transfer to any RDBMS, so you appear to have that going for you. Even just getting deeper PHP skills with your SQL experience should lead to potential opportunities. Look into languages like Ruby which are popular and generally considered easier to learn. Getting away from Microsoft technologies and more towards open source should also lead to more opportunities down the line. Companies tied to Microsoft may limit your choices, where Unix/Linux shops can have several languages in use.

  • And you could read this blog post I wrote about staying on top of tech skills while working in a limiting technical environment. fecak.com/… – fecak Sep 22 '12 at 2:00
  • Programmers say certification is of no value, but they're ususally not the ones doing the hiring. – user8365 Sep 22 '12 at 14:28
  • 1
    I was speaking as a recruiter of software engineers, not as a programmer (I'm not a programmer). My clients have generally not given any value to certifications, and actually some have been quite wary of candidates who simply try to get multiple certs without having real world experience. That can actually work against you in my opinion - loading up on certs or Brainbench tests to try and prove your skills can give the appearance of someone trying to game the system, and would be better off spending time on open source projects or personal projects where code can be shown. – fecak Sep 22 '12 at 15:10
10

You might not really see yourself as expert in any one thing, but is that accurate? You might be unfairly comparing yourself to the people who are active in blogging and Twitter. The vast majority of people you'd be interviewing with or sitting next to not only are not in that league, and both you and they would be extremely uncomfortable if you were.

So, take a good hard look at what your accomplishments have been on the job. These speak much more loudly than the particular technologies on your resume, especially if you can find a way to have recruiters and companies approach you, rather than the other way around. Some ways to do this are to update your profile on Dice.com or LinkedIn.com, with your new, confident resume.

Take a couple of weekends to experiment with languages you don't feel comfortable in. Learning new languages is in itself a skill, so this will stand you in good stead. Plus, you'd be surprised how many concepts you can pick up on a weekend project. Blog about your findings, which will allow potential employers to gauge your technical and communications skills, as well as your attitude and approach.

Answer questions on sites such as this one. This will give you a broader experience than you could get on the job, as you research answers to others' questions.

Learn your design patterns. It is often true that companies who ask about design patterns are the worst about not using them, so this can result in frustration for you. However, you have to get through the interview to be in a position to not use your hard-earned knowledge and get frustrated :).

Realize that there are many things that you can do to enhance your productivity other than just what technologies you know and how to code. For example, the more keyboard shortcuts you know, the more time you can spend thinking about coding problems (because you're not wasting a few seconds every time you don't pick up a mouse),

Finally, invest time and attention to your people skills--including self-promotion. You need to find a way to see the value in the last seven years of your work and convey that to potential employers. Also, you can get much more mileage in being able to get support and buyin from others whose work you need (such as those who feed you designs, data, or other assets), than by sheer technical brilliance. This can be a tough lesson to learn, but it's better to learn it early in your career than late.

  • I'd also suggest not thinking of yourself as a strict programmer anymore. There are many titles within the computing and software dev and you may just be one of these other title at this point with the breadth of your experience. – Joshua Aslan Smith Sep 24 '12 at 14:30
7

Your skills sound marketable to me. So I would be inclined to ask whether by "programming skills" you meant something more specific, like desktop application programming skills or skills at writing algorithms? Last time I checked inordinate amounts of websites are using SQL (typically but not always MySQL) and either ASP or PHP, so I would be hard-pressed to think web-programming skills are not marketable or in demand, or that you haven't gained considerable domain knowledge from your years of experience.

Consider opportunities where you are. You could certainly have a conversation with your boss and convey your aspirations, and let him or her know how s/he could help you reach some of your domain expertise goals. Granted, business concerns may come first, and you may not be able to only work 100% on your favorite part of the job, but when your boss is trying to decide whether you should do X and Joe, your coworker should do Y, or vice versa, if s/he knows what you would like to be doing, it may help sway the decision making process to align your assignments with your interests.

Decide what you would like to specialize in. If you feel like your current position is pigeon-holing you into a specialty you're not interested in continuing longer term, start by evaluating what other specialty you'd prefer to pursue. Considering what languages are popular in your area, or what languages and skills are in demand on job listings may help narrow down the list of choices. Would you rather be a C# programmer? A PHP programmer? Learn Java or C++? Become a database guru? Etc.

Build skills in your desired specialty. Once you've picked an area you'd like to focus on, you should find a way to build up those skills. If your boss isn't interested in using those languages in-house, you may want to consider a project outside of work. It doesn't need to be a demanding project, but something to get that other language back fresh in your mind. Perhaps you could join and contribute to an open-source project. That's a great way to get your foot in the door to working with a new or different technology, with the added benefit that your source code there isn't proprietary, so you can use in in a portfolio for future employers. You could also consider joining a professional development group for people who are interested in the technology you're interested in, if there is one in your area. Or even just start reading a couple books on it, or look for university extension classes for professionals where they teach that language to brush up on it.

Sell your experience for all its worth. In the end, what you're looking to show is that, even though you don't, for example, have 3 years experience programming C#, your new desired career direction, that you have seven years of experience programming in other languages where you have learned all kinds of transferable skills (abstracting and breaking down problems, maintenance of existing code, working with teams, learning new/different technologies etc etc etc), plus you've recently been tackling learning this awesome new skill that's what they're looking for, which makes you a much more awesome candidate overall.

Or perhaps, just finding an outlet for skills you don't use at work would be enough to feel fulfilled. That's your call.

4

I'm going to recommend the book Passionate Programmer. The first edition of the book was called "My Job Went to India." Much of the book is about how to keep your skills up to date by identifying where you are weak, and how to get into a better place both technically and business-savvy. On another thread, I posted a number of books that I recommend for folks who have the development "thing" down, but don't have the skills to deal with offices and office politics.

In contrast to the other answers, I'm going to recommend getting a couple certifications (pick something you know), and that you update the certs every couple of years. As a one-time adventure, certs are not that great - they represent a snapshot that you knew technology X on date Y. As an ongoing endeavor, it shows prospective employers that you keep up with newer technology and you don't rest on what you did decades ago. I am also a developer, and my focus is .NET. As a result, I've had Microsoft certs since 1998, and every couple of years I get a newer 4-letter certification. So I can point to this progression as evidence that I don't slack off when it comes to keeping up with technology.

I've spent most of the last seven years creating intranet interfaces for databases, or creating online reports

The buzzwordy name for this is "business intelligence." Being good with Crystal Reports or Pentaho (there is an open source version) or SSIS might be a new direction to take your career.

3

Consider looking at data analyst positions. There are lots of good paying postions where database knowldge is critical. Report wrtiers are in high demand. BI specialists are in high demand.

1

This is your cue to start the transition into management/team lead role. Start the transition. This business is not friendly to aging/aged developers who are not up to date with bleeding edge technology. After seven years in the wild with (presumably) rich experience width and depth, you're ripe and primed to lead a team or manage projects. Consider the following for your transition

  1. I want to believe that in those seven years, you've gained some very industry specific knowledge (as a finance developer, I've mastered ISO 8583, settlement, reconciliation and dispute arbitration). So you need to be able to categorize some knowledge/experience as industry-specific. Subject matter expertise is invaluable in the ascension to senior roles.

  2. Get a vendor neutral certification. Something that has absolutely nothing to do with core programming. Look toward these three PMP, ITIL V3 (Foundation is adequate), CISM,and/or CISA. These certifications are in order of responsibility to the certifying body. With PMP or ITIL, you can simply get the certification and start practicing right away and start getting returns on your investment without having to pay a maintenance fee or annual recertification credits etc. EDIT(clarification) Getting the cert puts you in the right frame of mind and gives you the necessary training to assume more responsibility and a different point of view in the business.

  3. Pick two or three of the technologies that you've used before and devote extra chunks of your spare time to further develop yourself in them. No one likes a Jack of all trades, master of none. As a tech lead/manager, it's strongly advisable that you're a subject matter expert or close to one in a specific technology. A general can't lead his troops without ever having been in the line of fire himself.

  4. In-grain it in yourself that you're no longer looking for a programming job during your job search. You're looking for Project management, team/tech lead or Senior developer roles. Job searching is as much as what's in the market as what you're in the market for. Don't sell yourself short or out of what you're positioning yourself for

  • 3
    7 years is hardly a lot of experience and OP seems unsure of his skills. Now is not the time for management for him. Needs more time to grow, more to learn, before he can expect to pass along knowledge to others. – fecak Sep 22 '12 at 1:44
  • @fecak I firmly believe 7 years is time enough for a team lead role if he's had the experience as a team lead. The richness of experience, not just skill or number of years, is a contributing factor to the sum total of a professional. I've met people who've seen, done and experienced more in 5 years of technical work, than many people get to experience in 10. If he's handled sufficient responsibility in his 7 years, why can he not push for a team lead role at the barest minimum? – kolossus Sep 22 '12 at 1:49
  • He says he is "not really an expert in any particular area". In your response, #3 says "no one likes a Jack o all trades..." Are you saying that those that have no expertise should lead? I mean no disrespect to you, but OP really should try to develop his skills and not even think about leadership unless he has some innate ability to lead. His question was about improving his programming skills and being marketable. He is not marketable as a manager (no experience managing it seems). He is somewhat marketable as a programmer, particularly if he learns more marketable programming skills. – fecak Sep 22 '12 at 1:55
  • where does OP mention his team lead experience? I'm referring to your firs sentence "if he's had the experience as a team lead". What makes you assume that experience? – fecak Sep 22 '12 at 1:58
  • @fecak, no worries. What I said in number 3 I believe ties into what you've said. "As a tech lead/manager, it's strongly advisable that you're a subject matter expert or close to one in a specific technology", is how I completed the statement you've quoted. Of course he's gotta have deep expertise in specific fields. It's a transition, not a quit-your-job-today-and-apply-for-the-next-pm-job. Transition. He should start now, and probably be ready to move in 2-4 years. – kolossus Sep 22 '12 at 2:00

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.