There are many ways to pick what programming language to use in a project or which one to learn and dedicate ones career to. Most programmers are naturally techie people who loves to argue for hours about the merits of certain syntax of a particular language or programming style.
But I think that’s the wrong way of approaching the question. Instead you should ask the more fundamental question: where do I want to work for the rest of my life?
They don’t tell you this in school, but there’s a certain organizational personality connected to each language. For example:
- C++. Very techie, if you want to work in the engineering department in a large industrial company, pick C++. Also the language of choice for most games.
- Java EE. Software architects love Java EE. It is used mostly in the financial world, banks, insurance companies, large web sites usually use Java. If you enjoy writing PTS reports and working in a cubicle, pick Java. Expect to spend a lot of time going through huge log files with debug exception print-outs.
- C. Also very techie and close to hardware. There are usually wires and expensive prototype equipment involved when you program C. Expect to spend a lot of time chasing memory leaks or optimizing code to fit in to a finger nail.
- PHP. Rapid development of web sites, pretty common amongst web hackers, startups and PR agencyes building WordPress sites for customers who wants to “get in to social media”. Usually a fun and relaxing atmosphere – or total chaos depending on your point of view. Many PHP programmers are self-taught – and that shows.
- Ruby. This is the smarter sibling of PHP. Common in startup environments or web agencys.
- Scala. Java EE refreshed. You can probably get away with using Scala in a Java organization, making your life in the cubicle a little less miserable but don’t count on it showing up in a job ad – yet.
- Java SE / Java ME / Android Java. A completely different beast than Java EE. Java SE on the desktop is hardly used anymore but Java on mobile phones is of course a growing opportunity. Java ME is a dying breed of Java and most of the development is done in India or Eastern Europe. Android Java will be huge the coming years and the kind of organization that will want Android developers is wide and varied.
These are just a few programming languages but I hope my point goes through: every language has a certain personality and a certain type of organization that uses the language. You have to pick a language that fits your own personality. I am myself a Java developer who started out as a C++ developer but now coming to realize that I actually like the more fast paced world of PHP and Android development better.
It’s not a matter of the powers of the languages themselves but how they are used and who uses them and what kind of projects will you be doing with the language. Just try to keep that in mind if you’re thinking about becoming a programmer.
I should also add that you definitely should learn more than one language for precisely the same reason: to learn different ways of thinking and widen your perspective.
Update: as always, good discussion on Hacker News.