Tech & Work

How to select which programming skills to learn

This four-step process for determining what programming skill to learn may take several hours, but once you complete it, you should know what to master to get the job you want.

One question I get more than any other is "how do I select from XYZ technologies what to learn?" Not everyone knows what they want to do within the development industry, and given the costs (time and money) associated with learning new skills, it is important to make the right choice.

I have written numerous forum responses and emails with the same basic set of instructions, so it is clear to me that people are interested in this topic. I also wrote a TechRepublic post on the topic in 2009 in which I outlined five questions you should ask yourself before choosing which programming language to learn. Here are four more tips I give anyone who asks me this question.

1: Pick a place to work

You have to pick your skill set by the geographic location where you want to work. When I was in New York City, all Java was very popular because the big companies had deep investments in Unix and mainframes that could run Java, so it was a way for them to get away from COBOL and other legacy systems without abandoning their commitment to those platforms. But when I moved to South Carolina, .NET was much more prevalent even for the same kinds of industries, even though it was fairly new, thanks to a ton of local shops migrating from VB6.

2: Develop a profile of the companies where you want to work

Most people want more than just "a job" -- they want to work for a company they enjoy working for, and might even have a specific industry in mind. This is especially true for people making software development a second career and who may already have some experience in a specific industry.

If your wants are not too specific, the profile of the company you write down does not have to be specific, just try to be as accurate as possible. Some things to include:

  • Size of company
  • Publicly traded or private firm
  • Maturity of company
  • Rate of growth
  • Risk/reward tolerance (can you work for a poorly funded startup in exchange for stock options and growth opportunities?)
  • Industry
  • Office environment
  • Team size
  • Management techniques

A word of caution:The more specific you make your profile, the harder it will be for you to get any meaningful data.

3: General job preference

You will want to put together a general idea of what kind of job you want. This should not be very specific, because unless you live in a huge metro region, it is unlikely that you will see any jobs even close to it.

4: Research

Using your geographic preference, company profile, and ideal job, start digging through job ads. Use the largest variety of resources possible, and do your best to identify duplicate postings (even if the duplicates are different recruiters, they will probably copy/paste the job description). Make a chart of the skills that you see listed in the ads, and make sure to note if they are "required" or "preferred" skills. The chart should also show the things that you care about, like where the jobs are located, the type of company they are, etc. Once the chart is made, rank the jobs in the order of attractiveness to you. Finally, look for the commonalities among the top ranked jobs.

This approach should not take you more than a few hours, but once you have done it, you should have a crystal clear idea of the kinds of programming skills you should be mastering to get the job you want.


Also read on TechRepublic

Keep your engineering skills up to date by signing up for TechRepublic's free Software Engineer newsletter, delivered each Tuesday.


Justin James is the Lead Architect for Conigent.


If you did not have anything useful to say except the obvious, then don't say it. Unless of course you have a dead line and your ideas this week are indeed dead on delivery. Useless indeed.


1. avoid MSFT and IBM garbage, and bodyshoppers (regardless of the euphemism under which they try to market themselves) and "IT" shops (who want only trapped "house geeks") 2. Size of company: 20-100K employees 3. Publicly traded or private firm: yes 4. Maturity of company: that's beside the point 5. Rate of growth: If it aint growing, they're not hiring. The question is whether they've got good products (or at least are on their way to developing what promises to be a good product) or are churning out garbage. 6. Risk/reward tolerance (can you work for a poorly funded startup in exchange for stock options and growth opportunities?): No, I am not independently wealthy, nor do I have wealthy backers to keep me alive for the years until the company turns a profit. 7. Industry: software publishing (for science, econ, utilities, engineering, movie-making) 8. Office environment: yes, office and manufacturing :B-) 9. Team size: immediate, 12; software dev organization, hundreds; with cooperation with the rest of the firm 10. Are the execs able and willing to invest in new-hire and retained employee training and education? Do they tend to leap after lame B-school bozo fads instead of solid, substantial improvement (both incremental and new venture)?


Good job Justin on this very useful, analytical approach to a common question in the IT field. Your posts are always done with a lot of thought. Keep up the good work; Lord knows where you find the time to do this.


this approach seems to be effective, in the way that you are the "perfect" candidate for the job, its great to do, im not longer a programmer i moved to do some it infraestructure jobs, but i need to move out of my actual city, and i will appply this!


With so many different language that are available, it is not always obvious which languages to concentrate on.


My first thought in reaction to this article was, 'duh'. But in Justin's defense it is amazing how many people there are out there that either can't or are too lazy to figure out something as simple as how to determine the skills required to enter a certain labor market. Why do you think the 'for dummies' book franchise is so popular? :P

Justin James
Justin James

... then why do I get asked this all the time? More than anything else anyone asks me? J.Ja

Editor's Picks