Programming Language Jobs and Trends
In the last entry I argued that while learning programming languages comes at a high cost, good programmers should be proficient in multiple languages. I think of programmers as having language sets, based on the idea that knowing one language is not enough for a professional. The task then is to pick the language set wisely to minimize learning time and maximize the benefits to your career. Like other programmers I enjoy toying with different languages, but I’m conservative about fully picking up a language because there’s too much process loss involved. I go for the minimal language set. This is a look at various languages from this point of view; I hope it’s useful to other programmers.
There are many criteria I find important in a programming language, from job market to whether it’s fun. This post looks at jobs, job trends, and overall trends for languages. First, here is data for number of jobs per language across the United States, measured roughly using Dice.com searches.
These are rough ballparks, but they do reflect the relative demand for each language. I couldn’t search cleanly for C and ML so they’re out. Haskell, OCaml, and Rebol had fewer than 10 jobs each. Recruiting for some of these languages (and for LISP) often happens in a more targeted way. Also, JavaScript is useful nearly everywhere nowadays, so the number of jobs understates its importance. Anyway, that’s them results. Without knowing the supply of programmers for each language, it’s hard to say anything about the relative difficulty of landing a job. But that is not the point; after all, most programmers who spend time on programming blogs get jobs easily (at least in the current markets).
An abundance of jobs is important because it gives you choices. You’re more likely to find a job or contract that better suits you. The more options you have for jobs, the more likely you’ll find the one with the telecommuting, the long vacation, the fired-up team, the interesting project or the right industry. Above all, you have a better shot at working with non-assholes. Martin Fowler says that early in his career he decided that he "wouldn’t work with unpleasant people, however capable they might be", since people matter most. Amen. There’s no better insurance against assholes than multiple job offers or clients.
Java, C++, and C# clearly take the market demand cake. Java is peculiar in that most jobs require some significant experience in some other technology, like IBM WebSphere or BEA WebLogic. So the market is fragmented. By contrast, the C# market is more monolithic: people use whatever Microsoft gives them. There are pros and cons for each one. The main downside for Java is that most programmers qualify for only a subset of jobs, whereas if you know C#/.NET most Microsoft shops are viable. The flip side is that as a Java developer you get to choose a lot of the technologies you use, while for C# you may have to use whatever ships out of the box (sophisticated teams excepted). Java programmers can find sweet contract rates if they know the right stuff. The data at RealRates.com seems to support this (though it looks like they stopped updating the site). C# programmers are more of a commodity. This drives down rates but contributes to platform adoption. For what it’s worth, here’s job growth measured by Indeed:
The C# growth surprised me. If the data is accurate, that’s some striking growth for an established language. In script land, Indeed’s data shows Ruby growing at break-neck rates:
Update: these Indeed charts show growth, not absolute numbers. They are relative: C# and Ruby are growing faster, but in absolute numbers they’re below their counterparts. If you click on these charts, you’ll be taken to the Indeed web site where you can plot absolute numbers if you’re so inclined.
Salary data is less relevant. You can’t reason much based on the free online reports (from Indeed, Salary.com, etc.) because the data is dodgy and not broken down by relevant factors. Frankly, language is not the determining factor of salary and contract rates, so there’s no point sweating it. Some specific technologies might command a premium, but it’s hard to generalize to a language. Dr. Al Lee from Payscale.com has a post discussing programming salary comparisons. His discussion is insightful but I would not base any decisions on income statistics. Too much of it is up to you, your negotiation skills, employment setup (employee, brokered contract, direct contract), experience, local market, etc. If you really want some numbers, I’ve set up an Indeed Salary Search for the major languages.
Job market trends don’t fully capture the feeble whims of us programming folk. There are other interesting ways to look at mind share and what might be coming down the pike. O’Reilly published trends based on book sales here, but that’s about a year and a half old. Google Trends yields interesting information, complementary to the Job Trends feature at Indeed. Based on Google Trends you can see apparent decline in PHP, the rise of Ruby over Perl and Python, and plunges in C++ and J2EE. Financial results for Q4 2007 show strong server revenue growth for both Linux (11.6% year-over-year) and Microsoft (6.9% year-over-year). Microsoft’s Q1 2008 was impressive. Here are some of the Google Trends:
I’d take trend analysis with a grain of salt; yet the direction of movement looks consistent across different sources of data. It’s also consistent with the idea one gets from reading blogs and talking to colleagues. Namely, the rise of Ruby among the scripting languages, a relative decline of Java and PHP, and C# moving steadily. I’d take these trends into account when deciding on a language to learn. But a quick look at the job numbers for COBOL should put things in context. There’s no urgency and it’s only one factor.
So much for the market. Picking a language based on market statistics alone would be like choosing your profession based on the projections in the Occupational Outlook Handbook. So next time I’ll write about the languages themselves and where I think they fit within the current programming landscape. That way I get sleep and this post stays manageable.
Comments
12 Responses to “Programming Language Jobs and Trends”
Leave a Reply
Pingback from makemesimple.com Crescimento das linguagens no mercado de trabalho — Learning on Rails
interesting reading… keep up the good work.
Please update any new programming languages is introduced in market.
[...] From : http://duartes.org/gustavo/blog/post/programming-language-jobs-and-trends [...]
[...] Career Tips [...]
you rock at writing, i love the articles you have written so far, they have been very insightful and you have really good writing style.
@kevin: thanks for the kind words. I’m starting out as you can see from the archives, and I second guess myself all the time about these posts - language, content, the whole bit. It’s getting better now, but it’s a challenge for sure.
Since English is my second language, I missed out on a lot of reading and often feel my written style is bad. heheh. The first large book I read in English was “TCP/IP Illustrated, Volume I” - that can’t be good!
But I’ll carry on and hopefully get better with practice.
It’s very cool to hear from people who like the posts though, so thanks again for the comment.
You’re “English as second language” is better than 90% of the “English as first language” out there. Be careful with slang/vulgarity such as “assholes”. It takes a bit of a professional writer’s edge off your style.
@e: I’ve actually given a fair amount of thought to the ’style guide’ I should stick to, in particular when it comes to slang and vulgar words.
On one hand I want the posts to be professional and work safe. On the other I don’t want to sound like corporate speak - after all this is a personal blog.
My ‘natural’ style, say when chatting, is very close to the way I sound here in the blog but there is plenty of cussing. To a lot of people this comes across as weird… I guess they associate decent grammar with cussword-free writing. hah. So, yea, not sure what’s the right thing to do… maybe err on the site of caution, but I do like my cussing in private…
Nice Article.
An argument can be made that learning should not always be tied to making money. Its ok sometimes to learn a language for the sake of increasing your paycheck, but if you always took this approach you would always be a late adopter.
Sometimes learning more exotic languages like LISP or Erlang, though they have limited commercial value. It can help to think about problems in different ways, ways that wouldn’t be apparent from following the C/C++/Java/C# crowd.
@Josh: absolutely. I intend(ed?) to follow up this article talking about other aspects of programming languages like fun, expressivity, typing, etc.
I do think working with a functional language and a dynamically typed language is important. My idea was actually to divide languages into groups using certain criteria, and talk about the language I’d learn from each group if I were starting out.
I sort of feel lazy though about writing language stuff because of all the flames. heheh.
Great article and happy to find others writing about supply / demand in various programming languages.
We have 300-400 jobs posted every day on oDesk and actually PHP has the most demand of any skill on our network.
Gustavo - would love to talk to you about programming trends that we see on our network - you can see some charts and Google map mashups with programmer rates that we just published by clicking on my name.