Maybe you’re new to the IT world and you’re unsure which language you should learn to enter or improve your prospects in the job market. In this post, we’re going to cover this topic and I’ll share my opinion as someone with over a decade of experience.
Index
1 - What kinds of languages are there?
The first thing we need to be clear about is the types of languages available.
While studying, you’ve probably heard about compiled and interpreted languages, but I like to add an extra category: almost-compiled languages, which compile to an intermediate language and from there are interpreted by the processor. The two most popular languages in this category are C# and Java.
NOTE: Whether a language is compiled or interpreted is not an inherent characteristic of a language but of its implementation. In most cases, those implementations are one way or the other, so it’s summarized for brevity. But, for example, there are Python compilers to bytecode, even though in the official documentation it’s described as interpreted (https://www.python.org/doc/essays/blurb/).
Besides this division, we also have typed and untyped languages.
From this information, we can make a list or a breakdown of languages you might be interested in learning or focusing on.
From my point of view, these are the most popular and in-demand languages along with their type or characteristics:
In the case of JS/TS, I’ve grouped them together because in most roles TypeScript is required. For Ruby, although I didn’t note that it can be typed, you can enable rbs for types.
One thing to keep in mind is that loosely typed languages usually let you code faster, or at least up to a point before things get out of hand, but for getting started, they tend to be quicker. That’s why Ruby is so popular in startups, because with little code, minimal syntax, and little overhead, you can build lots of functionality.
Typed or compiled languages are not necessarily better or worse than the rest; they just have different characteristics and are useful in different situations.
2 - Different languages for different functionalities
Every language is its own world and can be very popular in one kind of business or functionality but barely used in another. For example, if you want to do web development in Python, you’re likely to run into issues because most Python jobs are in data analysis nowadays.
The most common languages for web development in the business world today are JavaScript or PHP. While C# (with Blazor and Razor) is also present, it’s largely legacy code. Blazor is modern, but its usage is less than 5%.
If you want to do Web API development, the most popular choices are Java, C#, and JS (with Node). As soon as these APIs need to handle a lot of performance or traffic, Node is replaced and you’ll start seeing options like Go.
For desktop applications, C# is the most popular, as well as C++. However, due to a steeper learning curve, C++ is used less.
Keep in mind, this doesn’t mean only these languages can be used for those types of applications. Technically, you can use Go to create almost any kind of application, but just because you can doesn’t mean you should. At least in business settings, if it’s for a hobby project, of course you can do whatever you want, however you want.
3 - Learn concepts, not frameworks
Once you know what kind of applications you want to build, you should focus on the concepts that will make you a better developer for that type of project.
For example, developing a Web API or a backend is very different from building mobile applications.
Not only the language you use is different, but so are the patterns and concepts.
For example, for backend development with C#, it’s standard to understand the SOLID principles, know about WebAPI and all the details of scaling, database connections, etc. All this knowledge is transferable to Java, if you get a job in Java, the only thing that really changes is the language syntax.
It’s the same in mobile development, you can technically use C# or Kotlin, which support cross-platform development. In this case, you shouldn’t worry about scaling but rather about data persistence and state, how to handle permissions and app updates, and more importantly, what happens if the internet connection is weak.
Everything mentioned above are concepts independent of the language; we should treat the language as just syntax to achieve our goal and nothing more.
4 - Don’t learn just one language
Once you have the concepts down and feel comfortable with a programming language, my final recommendation is to learn another language that is completely different from the one you use daily.
For example, if you’re comfortable with a strongly-typed compiled language, try to find a job or a project in a loosely-typed language and learn how it works. Learning programming languages is like learning spoken languages; once you know a few, it’s easier to adapt and understand why things are done the way they are. The same applies here. Understanding what each language brings to the table will give you a much more grounded and realistic global perspective.
We spend our lives reading or hearing that a certain language is dead and useless, but the reality is often very different. Once you learn what encompasses a language, you’ll understand why, in certain situations, it might be a smarter choice than a supposedly "better" language.
5 - How do you choose which language to learn?
But with all this in mind, which language should you learn?
The answer is simple, but like so many things in programming, it depends.
First, it depends on what you want to do: if you want to work on front end development, choose languages used for the front end. The same goes for the back end; if you want to do enterprise back end, there’s no point in studying Python (unless as a second language, which is a very good choice). Basically, you should look for a language that is popular in the IT area that interests you the most.
Second, pick a language that is in demand. Don’t come to me saying you want to learn Ocaml as your first language when it has zero job market demand. As I say, as a second language you can learn whatever you want, but first you should choose one that has opportunities and makes sense.
If there is any problem you can add a comment bellow or contact me in the website's contact form