What is the essence of a programming language? It’s a way of putting your stream of consciousness into a form that can be understood by a computer and fellow professionals, who will have to learn a lot of new swear words while analyzing the resulting product. (It’s rare, if ever, to read code that makes you cry with happiness. Far more often you cry for other reasons.)
This leads to the fact that through all kinds of compilations-assembly-transpiles, the code written in the chosen language is transformed into a set of instructions for the processor. Even if it is a scripting language, code is still being processed under its hood, which in turn produces the same set of instructions.
After all, if you look closely, all programming languages describe the same entities in different words that sometimes sound funny to speakers of another language. As soon as this understanding appears, you begin to realize that when you learn a language, you only learn its syntax. If an apple is called an apple, it will not cease to be the same entity. You can make puree from it, you can make a cake, but the essence will be the same.
It’s the same with entities in programming. Almost any language contains the same variables, loops, functions… Only they are called differently. Everything else is just an add-on to the basic functionality. Moreover, despite the difference in implementation and principles of work, modern languages have a pleasant tendency to rub off on each other’s concepts, adapting them to their needs. Like lambdas in C#? Most likely, you will also appreciate arrow functions in JS. Is WriteProcessMemory your best friend, cute hacker? Welcome to pinvoke C# or Frida.js. Like Nest.js? The thought “wow, I’ve seen that somewhere” will catch up more than once when learning new versions of Angular.
Advantages of a polyglot programmer
In order to understand what is done in a new project at least at the top level (if it is written in a new language for me), it takes from several days to several weeks. I didn’t try to just sit down and learn a new language, because I usually prefer the method “grab – don’t graze”. There is a need – sat down and did it.
Yes, it is an incomplete learning of a new language with all its best practices, but it is usually enough to understand the project.
The most important disadvantage is that when learning several languages at the same time, it is more difficult to master one perfectly. It is possible, but it will take more time (after all, the more you know, the less time you will spend learning the next tool). For myself, I chose this approach: either I join a new project and write the code first according to the sample, and then I start writing the new code, or I invent a goal for myself and just experiment with it.
At some point, you can get confused as to where a specific feature is and where it is not. The documentation, IDE, and search are good at catching that.
Officially, it is rarely needed. Yes, a fullstack is often sought after, but the money is usually paid the same as a pure BE or FE. Although who knows, maybe I just don’t know how to beat myself up for a salary increase.
If there is no constant practice, you start to forget how it works. Yes, it can be recovered relatively quickly, but the threshold of entry is still higher. For example, I was tinkering with Angular back in version 2, but when it came to doing test and loopback on it (which I’ve heard little about), it took about 6-7 hours for most of the functionality.
Best practices in different languages often have language-specific features. Their study also takes a lot of time and sometimes conflicts with previous experience.
In general, it is such a topic that you can code a program in a few hours, and make it correctly and taking into account all the features of the project – in just a few weeks. In addition, if you see a vacancy in the requirements for knowledge of more than three or four languages, run away from there. It is unlikely that you will find something worthy, probably the job creator just decided to Google buzzwords.