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.

60 responses so far

  • tor says:

    idiots, .NET is the way to go

  • comet says:

    the author is sort of convincing. Fearfully,In the years to come what prospects do they hold for java or .NET? wouldn’t there be bounty number of them fighting over few jobs waiting with their baffling experience leading to a saturation for java and .net market in near sometime? yet why are most people reluctant to choose to learn other languages that are as good comparatively? is it simply the blatant fact that nothing is comparable to java and .NET??!! if so what next?

  • [...] shops as the primary language. It will take you a long way in most situations. At the same time, I have some objections with using the language from a startup programmer point of view. Read the discussions here [...]

  • Erik says:

    I say, learn something else.

    If you base your language choices on learning the least possible for the most desirable pay, I would recommend a career in HR or day trading instead. If you still insist on being a coder, I would ask only that you first take a job for a few months cleaning toilets so you know how the rest of us feel when we have to deal with the consequences of the glut of morons writing code in the most heavily marketed all-in-one solutions d’jour for corporate leadership that would rather listen to the nice salesman than their own people.

    Whatever you do though, stay the hell away from the front end of the web. It’s not for people who don’t want to learn anything after college and if you’re truly that mediocre, you’re better off with something that can hide your code behind a compiler.

    A couple things I’d like to point out to address old comments.

    Facebook is a PHP app. I think it can handle corporate buzzwords like ‘enterprise.’

    Google Docs is a triumph of JavaScript not Java. A rather bloated and messy triumph but still more of a front end accomplishment than a back end one IMO. But yes, the merged user experience is badass, whatever they’re doing that with.

  • Jagbir says:

    Sanjayts wrote: “it’s the concept which is interesting; languages just play their parts as an instrument in achieving the end goal.”

    And Java is one of the shittiest tools if not THE most shittiest tool……

  • alf says:

    Learn C, then C++. Learn well how data structures and basic algorithms work.
    Write good, solid code using simple, non-fanciful console applications. Then you may try your hand at building some GUI front end application.
    Once you have mastered all that, learn other languages, just for fun. See what you like, play. Functional languages are particularly beautiful, but scripting languages particularly Perl and Python can save a great deal of time and effort.
    Don’t expect all this learning to happen overnight. It may well take over 10 years.

    • Leonardo says:

      “Learn C, then C++. Learn well how data structures and basic algorithms work.”

      That’s it. Don’t be a trained monkey who codes. Learn well the basics and every other language will be trivial.

  •   says:

    I learned COBOL and PL/I. Imagine my surprise when I found out that I was totally useless!

  • Nathaniel Nevins says:

    Well as i have been reading the post and comments i am now confused on where to go…

    I love to program…
    I have made programs that s made me money….
    I currently know some of vb.net, php and, little C++.
    I want to have a job that has me programming not debugging somebody’s code for them.
    I know this is what i want to do for the rest of my life so…

    What programming language do i set as my prominent language?
    What do i major in Collage to be able to do this for a living?
    I don’t want to “Spoil my life”
    I’m so confused, I need some sort of direction to the right place.
    Thanks in advance. =D

  • pratik says:

    nice article…and I too believe that JAVA is not the way to go!!! I’m just waiting for .NET to be more easily portable to other platforms!!!

  • praveen says:

    JAVA is the most used language and is so simple to work with. When something is simple and easy to go with,definetly most of the people will show interest to work with it.So try working with JAVA and if you are good enough you can make enough out of it

  • [...] shops as the primary language. It will take you a long way in most situations. At the same time, I have some objections with using the language from a startup programmer point of view. Read the discussions here [...]

  • chris says:

    its interesting that this post is at least 2 years old and its still getting comments like its argument is valid…….

    I have one word for those nay-sayers

    ANDROID

    Android is JAVA, and the android market is in position to overtake the Apple market this year (2011), and the mobile app market is going to be a 33 billion dollar market by the end of 2014, from a paltry 1.6 billion in 2010.

    And yes, like any trend, a TON of programmers will flock to the tech. The key to success is to make sure you are GOOD. Many people forget that a lot(dare I say majority?) of programmers are not truly mentally suited for the task, their mind does not organize logic in an efficient manner.

    Like any foot-race, those that excel will be the ones profiting. Logic dictates that if you do not excel, you find something you are more suited to.

  • David says:

    Well based on this reasoning, I should learn cobol. They are in dire need of cobol programmers. They all get six figures no mater what the age of the programmer.

  • sansayan says:

    Well, I have my Java enabled phone and I need a pdf reader in it so that I can read my comics in my phone wherever I go. So I am obviously going for Java!

  • Biff says:

    Diversify. The mobile web and mobile app market is where the tech boom is. That means JAVA for Android and BB, and objective-C for iPhone. In my opinoin if you are going to be sucessful in any market then you better learn multiple languages and never stop learning new, as the tech industry is ever changing.

  • Daquan Wright says:

    The author makes some good points, being different has its advantages.

    I will say, learning Java is not bad. But it shouldn’t be all you learn.

    What you need to figure out is what “type” of applications you’re interested in. That will tell you what languages you need to learn.

    If you’re into making front-end software, obviously html/css/javascript is appropriate. If it’s back-end development, ruby, perl, python, php, java, .net is your call. If you’re into desktop apps, obviously C#/C/C++/Java.

    Each language has a practical application it addresses, understanding that is key to being good with any language.

    I’m a ui designer and app developer, so javascript/php/python are my go to choices.

  • Alex says:

    In first place dont learn programing just for the job, then no compitition exist.
    We should focus more on program , learning and creating what we think will affect the world like µtorren and java language itself.
    Give the world new diminsion.
    “Job sucks…yak”

  • Swapnil says:

    Ya I agree, you must be good at many languages, although any Object Oriented language must be the first to go for. If you have your basics right let me tell you then learning any other language is just a matter of getting adjusted with different syntexes.

    I am good at php, html, javascript, jquery, css and html but my first job was COLDFUSION. I never used it but within a couple of days I was ready to work on my first project.

    ” LEARN ANY LANGUAGE BUT GET YOUR CONCEPTS RIGHT AT FIRST PLACE.”
    – Swapnil

  • Chase your passion, and success will chase you ;-)

  • Ed B says:

    In the late 80s everyone that could speak English was told to learn Japanese to succeed in business….then it became Spanish….now its Chinese….but, it’s always been English (at least for a couple hundred years). Perhaps Java is equivalent to English at this stage. Which is fine if you work in the proverbial “US”…ie: large corporation….but if you are destined for smaller fiefdoms, then you need to be more European and learn 5+ languages to open your choices. But, alas, anybody that knows multiple European languages certainly knows English. So, learn Java…but not only Java….even if you’re working in RoR, there’s a good chance you’ll want to integrate into something that is Java and it’s good to be able to understand that code.

Leave a Reply