Gossip: Which Programming Language Should I Learn?
August 1st, 2008
I was asked this interesting question yesterday. To keep my bad habit consistent, I asked the young man back instead of directly answering the question: What programming languages have you learned? and Why? He gave me a modest answer that he learned what the school taught to earn semester units. However, he was very confused about which programming language will be “better” for his career.
I believe many people pose same question as this young man does, however, there is no “answer” to this question IMO. One reason is because programming software already evolved for decades and it is very sophiscated and specialized nowadays. Another reason I have is that different people have different definitions of ideal jobs. In most of the cases, the programming language is already determined by higher ups of the given projects, and thus it’s the programming languages that are used to filter junior developers during recuitment process. If you have a clear idea about the jobs you’re most interested, Google or Monster can easily help you determine what programming languages you should master.
The trouble is, folks asking questions like this typically do not really know what they want. My advice for them will be betting on one language/platform and making sure you are the real expert in this field. As to picking language from C++, C#, or Java, or choosing a platform from a specific OS or WWW, that would be your call. However, there’s one thing I’d like to clarify: programming languages are not neccessarily tied to a platform, but to create something which has business values using any programming language, you need to have sufficient knowledge about the targeting platform. For example, one can claim that he has solid understandings of C++ and he knows things like virtual inheritance. Nevertheless, it is not guaranteed that he can produce code demanded by business requirements unless he also have platform-related expertise like UI programming or multithreading. As a result, still, programming nowadays is very specialized and sophiscated, and one must decide what he/she really wants for his/her career.
It is of course possible to master multi fields/platforms/programming languages given enough resources (time/money) invested. I personally know several gurus that posses proficient knowledge w.r.t. multiple platforms and programming languages. I also know that they’ve devoted most of their time in researching/learning, and that’s why they are what they are today. So, back to our original question, what programming language should one learn? My personal advice will be mastering a language that you know can feed yourself (like C++, C#, or Java), and learn one scripting related language (e.g. Perl, Python) to make you work more efficiently. If you have spare time, you might want to use it to learn or research platform-related knowledge.