Choosing a Programming Language

Some friends asked me the same question: "What programming language should I learn?" I tell them right away to go with Javascript. I assume two things by saying that: 1) they want to make websites and 2) they want to learn a technology that is in-demand and beginner-friendly. All you need is a browser and you can start learning right away.

That's the short answer. The optimal answer is more complicated.

Using the little programming knowledge you already have to make something is more productive than asking yourself what programming language you should learn. Choosing a programming language is not like choosing a Pokemon starter: you can always change it.

The programming concepts you learn are never wasted when you make the switch, so focus on understanding them instead: design patterns, generic programming syntax, basic algorithms, and data structures, versioning, unit testing, documentation... just get better with what you have and make something.

The industry or the company you're aiming at will also impact your linguistic needs.

In theory, you can dive in any field with only one language: you can make video games, build a website, make a desktop app, and even dwell in data science with just C. There is probably a library for whatever you want to do in the language you already know.

In practice, however, each industry has its language of choice: C++ powers the Unreal engine used in many video games, all websites use Javascript, and most data science jobs rely on Python or functional languages such as Clojure or Lisp.

Each language is designed with specific use cases in mind. Some languages are naturally better at a specific task. There are also non-functional requirements to take into account: what's your budget? how hard to maintain the code will be?

Some companies are stuck with legacy code. Do you know which language powers most banking systems? Fricking COBOL. A programming language is not always a logical choice.

The number of job opportunities for a language shouldn't be a criterion. If the job market is bigger, it only means more competition. Learning a more obscure language will allow you to niche down, and if there is more demand than supply, you'll end up in a better position to sell your skills.

There is no easy answer really. Once you start understanding what programming is about at the core, you can find what you want to do with your skills and perhaps learn a new programming language. Don't give too much importance to your programming language, it has to remain a tool to write great software that helps people. Be flexible enough to quickly adapt to the target market, don't be dogmatic.