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.
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.
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!.”
Thanks Randall, for your comment. I already know C++ but I am out of job over a year. I believe I would get a job, like all my classmates a long ago, if I would knew Java. I know in Java, there are more competitions but as you said, “if there is a large need (requirements) for java, then the market will reward its practitioners with high salaries.” This is the best part (and true also) of your comment.
Otherwise, I was getting confused. I am not only want to learn java because of the future/career but also because I like C++ a lot, so I believe it will be a good fit for me.
Thanks again.
…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….
I am confused.
I am a student learning .NET programming.Now i am planning to learn C#,then C/C++
Cool.
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..
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.
I’m entirely new to programming and i’m looking forward to learning java
I have developed some stuff in java and would love to wRite and learn more but php is quicker and more profitable
I have very less programming knowledge… would like to know what language should i start with if i want to get into
1. Database Management field
2. Web Development field
Another question..
+Can any one point out the Difference between Java- PHP – Python
I have been studying PHP with MySQL for a while, and I feel comfortable with it. Though Im looking forward to learn Java, it is more complicated (I like challenges though). Is my humble opinion!
but I’m already enrolled in a JAVA Programming course at http://www.wiziq.com/course/1617-core-java-for-beginners-icse-students and found java language quite easy and good to learn.. isn’t it/
If your goal is to get a programming job, then you need to build a strong background for it. Learn a handful of languages, get very good at a few, and a company may take interest in you and may hire you on to even learn a whole new computer language to do the job they want done!
I want to learn all about database (like oracle). Kindly let me know from where to start and what all should i learn