Why you probably should not learn Java

Apr 17 2009

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:

programming-languages1

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.

Wrong!

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.

52 responses so far

  • randall says:

    While I agree with the author’s conclusions, his arguments seem a bit one dimensional. Take into account the dynamics of the market: supply and demand. If there is a large need (requirements) for java, then the market will reward its practitioners with high salaries. There is an upward supply curve here. This curve will eventually cross a downward curve, as (rising) supply outstrips (dropping) demand. At this point the lucky java programmer will receive his (or her) final reward for “following the pack!.”

  • tony says:

    …they are not looking for java programmers. They are looking for good java programmers. You can only get to be a good java programmer if you have an insatiable thirst to know what makes it tick , not by the prospect of landing a high paying job. In my opinion, the state of a programming language’s job market should be at the bottom of the list of factors to consider in choosing a language to learn.. Look for a language that just piques your interest.. Master it and youll get good at it better than those studying it to get a job, then you will really draw the big bucks….

  • towry says:

    I am confused.

  • towry says:

    I am a student learning .NET programming.Now i am planning to learn C#,then C/C++

  • Debbeca says:

    I’m a java developer and everything is just fine with me…
    If you’re afraid of competition, stay at home and watch TV while others are making a living!
    If you wanna be a good programmer, choose the language “you like” the most ! I’ve tried many and I feel comfortable with Java..

  • Bonjourno says:

    Not too much support for all these less popular languages on mobile platforms like Android. Not my favorite language but Java is good to know.

Leave a Reply