There are a lot of programming languages out there and people are always confused about the programming language they should use to develop their applications. We see a lot of people asking the question “Which programming language should I use?“.
And there are many fresh graduates and new programmers who want to add another programming language to their resume and they too are confused about which one to learn.
There is something called the TIOBE Programming Community Index which lists programming languages based on their popularity. Here is how the list for April 2009 looks like:
As you can see, Java leads the rankings. It has been at the top for some years now. Since Java is being used for a large number of applications in the corporate world, you can see that there are more requirements for Java programmers than say, Python programmers.
Many graduates and wannabe programmers see all those hiring ads for Java programmers and they come to the conclusion that Java is the programming language they should go for to get a better job because it is the hot thing now. They see all these statements from elsewhere which say something to the effect of “there will be 190,872,452 requirements for Java professionals in 5 years” and they decide that once you learn Java, your life will be changed forever, for good.
There are a couple of things that can go against you when you select Java as your programming language. First, more requirements means more competition. If there is a requirement for a million Java programmers (I am totally making up all these numbers) there is a chance that there are a million Java programmers. You have tighter competition. Comparatively, there are fewer requirements for Python programmers, and this means that there are less number of people using python, and this means that there are less number of people who know python, and this in turn means that you have less competition. So essentially, your chances of getting a job are the same regardless of the programming language you specialize in. You may even land up on a job in Ada or Pascal (There are many big corporations which refuse to move from legacy systems).
The second thing that can go against you is that since there are a lot of qualified Java programmers, the companies that hire you can afford to pay you less. If you don’t take the job, somebody else will, and he will be equally qualified as you. Compare this to a programmer working in Ruby. If you are a Ruby programmer, there are a not much awesome Ruby programmers and companies know this and they will pay you well.
Another problem with running with the crowd is that you will not get an exciting job in programming languages like Java. Most of the interesting startups and companies that work on interesting stuff have moved away from Java and they are using programming languages like Python or Ruby to build their cool products. You want to work in those companies that build something that people use, rather than work in the under-belly of a giant corporation that churns out software like a coke factory.
Paul Graham observes:
if a company chooses to write its software in a comparatively esoteric language, they’ll be able to hire better programmers, because they’ll attract only those who cared enough to learn it. And for programmers the paradox is even more pronounced: the language to learn, if you want to get a good job, is a language that people don’t learn merely to get a job.
If you want to stand out from the crowd, you have to do stuff that stands out from what the crowd does.
If you want to do something other than spoiling your life doing the same thing a million others are doing, do yourself a favour and learn an exciting new programming language that can change the way you think and write code. Learn Python. Learn Ruby.
I say, Learn Haskell.