📱

Get Our Mobile App

Take your business learning on the go!

Download on the App StoreGet it on Google Play

Лучшие языки программирования для устройства на работу в 2024

Ivan Chernyakov24:21

Transcription

With which programming language is it easiest to find a job this year? I will share my opinion with solid arguments, and in the end, we will identify the best programming languages for a truly quick start.

Ivan Chernyakov, let's get straight to the point.

First, you need to determine what you like. If you enjoy it, you will do well. However, if you make the wrong choice based on trends or statistics—like salary graphs and job vacancies—you will struggle and eventually quit. Or, in the future, you may have to settle for a lower salary. This happens when you grow in one technology stack, become disillusioned, switch to another, and find yourself no longer at a senior level, which means a temporary drop in earnings.

Therefore, my task is to provide you with the necessary information to help you choose a language that resonates with you, ensuring your choice is well-informed. If I had such a guide in my early years, I might have taken a different path. I wish I had access to informative videos that I could watch without being glued to a computer and keyboard, yet still continue learning programming. I have searched for such content, and now I want to create it.

I am not just doing a market overview; I aim to give you enough understanding to envision your future in this field. This video is not very short, but please watch it until the end because it will be very beneficial. Along with language reviews, I will share four concepts from the coding world. If needed, feel free to watch it multiple times, subscribe, and let's begin.

The first language you need to know how to speak and read is Russian, or the language of the country where you plan to work. Proficiency in such a language is a soft skill that will make your work more enjoyable in any technology stack. I am completely serious; this is no joke. If you can communicate well and read carefully, which is very important, you will solve half the problems that may arise from gaps in your technical expertise. People around you will gladly help you or rephrase things. If you irritate them, you will receive dismissive replies and one-word answers, which ultimately leads nowhere good.

There is a monstrous variety of languages and technologies. Let's try to classify them at least by one criterion to make it easier to judge, as this will affect your learning curve. This criterion is whether they are low-level or high-level languages. High-level does not mean advanced development; rather, it refers to operating at a high level of abstraction over hardware.

Don't be scared; I will explain using the example of the video you are currently watching. It’s not that complicated. You might say it’s incredibly difficult, but it’s worth it, and we will teach you.

Imagine we have some hardware that can output current or not. The first layer of abstraction we introduce is ones and zeros. A one means current, and a zero means no current. This is a representation of the same data in a different form for better understanding and manipulation. This is what we call the level of abstraction. We have translated the phenomenon of whether there is current or not into ones and zeros, which can be recorded and manipulated.

The next level of abstraction over ones and zeros is assembly language. You may have heard of it or not; it doesn't matter. Let's just see what it represents. We can break down some words, but it still sounds like gibberish, and that doesn't suit us. Let's move on.

The next layer, for example, is code in C++. It starts to resemble human language more, although it’s still intimidating and not quite suitable for us. Now we have reached high-level code, like Python, which is almost like English. You can already understand that it’s about some video streaming. I want to emphasize that this is still an operation over the same data, but it is presented in a much more human-readable form.

And the cherry on top is the layer of abstraction where there is a video player with functionality, just like in real life. This is a simplified journey of ones and zeros. The layers can be different, and their number can vary. This was just a simplified example to understand the overall process.

It’s clear that for a start, it’s better to choose a high-level language. Now, I will explain what a beginner should start with. It’s not necessary to have an understanding of C and C++, but it’s very useful. Each layer of abstraction provides more understanding of what is happening, but it comes at a cost. C and C++ are low-level programming languages that are close to the hardware, hence they are fast.

Let’s conduct a test. I will explain one of the concepts in 60 seconds, and you will decide if it’s clear or not.

Okay, in electronic devices—computers, phones, TVs, etc.—there is something called RAM. You have definitely encountered this characteristic when choosing a device. This memory is needed for programs to store intermediate data for their operation. To save something in this memory, you need to allocate space; this process is called allocation. You then write information there and later delete or overwrite it, ensuring it doesn’t get accidentally overwritten, or else the application will crash, leading to bugs, etc.

In general, memory management can be manual or handled by mechanisms built into the programming language. C and C++ are languages with manual memory management. You have to allocate memory yourself, avoid overwriting anything unnecessary, and delete only what is extra, and do it in a timely manner to prevent memory leaks. You can extract everything the hardware can offer, but on the other hand, it’s easy to create a program that simply won’t work.

It’s clear how powerful this is. The entry threshold is quite high, and seniors who advise learning fundamental languages and such things as I describe are engaging in gatekeeping. I apologize for using that term; I don’t like it, just like gaslighting. It’s simply cringe-worthy.

Gatekeeping, in their judgments, determines who can call themselves a real programmer and who cannot. It’s like telling a child who is just learning to walk about the benefits of taking 10,000 steps a day and that it would be good to start running in the mornings.

As you understood from the above, C and C++ are used where performance is needed, for example, in serious powerful games. It’s not worth choosing these languages at the start, especially if you really want to get into game development. Consider C#; you can earn money with it, like in Unity. There is some variability, but we will talk about that later in this video.

Now, let’s discuss the Go language. Another low-level concept is parallel computing. What’s faster: processing one computational task at a time or two or four, and so on? Of course, the more, the better. Let’s say we can perform three tasks in parallel, and the code will fly. But just like with memory management, there is a cost.

Let’s do another test. I will explain a concept in 60 seconds, and you will decide if it’s clear or not.

Imagine this is our memory. In one cell, we have the number three, and in another, we have the number one. The first of the parallel tasks needs to determine if the sum of these two cells equals four. It starts calculating 3 + 1, but at that moment, another parallel task changes the value in the cell where the one is stored to seven, for example.

Now our first task calculates 3 + 7, resulting in 10, and ultimately concludes that the result is not equal to four, even though we prepared for four. After this, you try to figure out what went wrong because, well, 3 + 1 is four, right? Why does the program say no? Your hair turns gray or falls out because you are pulling it out. This is one example of what is called a race condition.

Whoever writes to the memory first determines the result, depending on the sequence of code execution, which is nonsensical because 3 + 1 should always equal four.

Now it’s clear what we are talking about. The efficiency of parallel computing is matched by its complexity in implementation. This example seems like a harmless arithmetic expression, but in real life, it could be a command to open or close a door incorrectly.

Now, enter the wonderful world of Go, affectionately called "Gosha." It’s a really cool language for parallel computing. Of course, you can break things with it, but its rich toolkit for concurrent data handling helps prevent you from shooting yourself in the foot. Created by Google, this is no coincidence. Go is used for high-load web applications, administrative tools, and any tasks that require fast processing of large amounts of data, real-time analytics, parsers, crawlers, streaming video processing, and so on.

Of course, as you understand, the entry threshold is also serious. You need to grasp low-level concepts. But if you are interested in what I said above, I really hope you consider Go as a second language after spending at least a few months with Python, JavaScript, PHP, etc.

Salaries for Go developers are quite attractive.

Now, let’s move on to high-level languages and examine them from the perspective of application. Web development is divided into frontend and backend, also referred to as client and server. The frontend, or client, is everything we see, click, tap, and input data into.

When talking about the web, the primary language is JavaScript. I will discuss other options later, but for now, let’s consider JavaScript as the main one. There must be some competition, and it exists among frameworks. A framework is a set of code that solves typical tasks. In the frontend, this includes handling user actions on the site, redrawing parts of the page, navigating between pages, working with input fields, and so on.

These frameworks are like starter packs for building a website or web application. There are many such frameworks, but the three main ones are React, Vue, and Angular. My personal top is Angular, Vue, and React.

Soon, a free course will be released on the channel, so check it out and subscribe. There is also a link to an informational bot in the description, where I can be of help.

Frontend development is generally great for entering the profession, and with Angular, you can even land a high salary, for example, starting at 150k.

Let’s avoid skepticism. Check out my other videos where everything is explained in detail, or sign up for a consultation.

JavaScript has such a degree of penetration that you can already write and execute code on your computer without any additional installations. Just open a browser, like Chrome, go to Developer Tools, and in the console tab, you can write code. For example, 1 + 2 equals 3. You can also assign variables, like let a = 1 and b = 2, and a + b equals 3.

So, the code runs, and JavaScript developers, congratulations! There’s an even more convenient way to run JavaScript code on sites like JSFiddle. You can input something, hit Run, and see the results.

This is all to say that JavaScript is a language that requires no preparation before you start learning.

Now, about the backend: this is the server part of the application, meaning it’s on the server, not on your computer or in your browser. Here, calculations, storage, and retrieval of results from the database occur, along with repetitive tasks like sending emails or checking files for viruses, etc.

Available languages include PHP, JavaScript (again), Java, and C#.

Let’s quickly go through them. Python is a simple, clean language with many applications beyond backend development, such as neural networks, data science, machine learning, and other trendy topics. It’s versatile, and an additional plus is that there are many resources to learn it.

However, Python is slower. But as I mentioned at the beginning of the video, after some time practicing Python, you can start learning Go, and combining both will work out well. Python developers are in demand, and combined with Go, they can command salaries of 500k and above.

The question is how long the journey will take, but we will discuss that later.

JavaScript can also be used for backend development; this technology is called Node.js. It’s not a lesser option; Node.js has everything you need, even a bit more. Node.js is often used to write small services, sometimes just auxiliary ones for the frontend.

An obvious plus is that you can be a full-stack developer, which is very useful for testing hypotheses and solving problems. You can quickly build a simple frontend while working on your backend.

The downside is that there aren’t many robust backend solutions in Node.js; it’s still pure JavaScript.

I wouldn’t choose Java right now. I previously mentioned that I tried to start with it back in 2013, and it didn’t seem like the best option for a beginner. Those who are now experienced Java developers are doing well, but I wouldn’t recommend starting a career in Java today.

Of course, if you want to work in fintech, love banks, and prioritize reliability, then there are no questions. There are job vacancies, and the market is alive.

Let me give you an example of why Java is chosen. When it comes to conservativeness and reliability, in another programming language, if you delete a value, the program simply forgets where the needed data is in memory, and eventually, it will overwrite it with something else. In Java, all these memory cells are actually cleared to zeros. This illustrates the language's approach perfectly, especially when dealing with sensitive data like credentials and passwords.

C# is very similar to Java. I once joked that I don’t know why they are different programming languages. You can write desktop applications for Windows and backend applications.

By the way, a very common full-stack variation is having a frontend in Angular and a backend in Java or C#. Also, remember that working with the Unity game engine is done in C#.

Now, let’s talk about PHP, which I saved for last. It’s often said that PHP shouldn’t be learned because it’s an outdated, strange language. PHP, or Hypertext Preprocessor, has a bad reputation among programmers. The main stereotype is that it’s generally bad, pays little, and is filled with legacy code that is hard to work with.

Although I am not a PHP developer and only occasionally write necessary programs, I will now act as its advocate. In my opinion, there are two reasons why PHP can be interesting.

First, WordPress is built on it. This is a system for creating and managing websites, allowing you to create your site without programming skills and manage it afterward. WordPress accounts for about 40% of all websites on the internet, and this number is slowly growing. Considering that many other platforms for creating websites are also built on PHP, it could be said that a large portion of the internet is PHP. Just think about those numbers!

You can quickly create a blog, a business site, or test an idea with WordPress. It’s a fantastic tool with a system of interchangeable visual themes and plugins, all written in PHP. There’s even a separate freelance market for WordPress, which can be toxic, but it exists.

The second interesting feature of PHP is that it still powers and supports massive backend systems, like Facebook or VK. For VK, they even created their own compiler, KPHP, which converts PHP code to C++. As you know, C++ is very fast. Moreover, this solution is entirely open-source, and anyone interested can see how it works. I love such engineering solutions.

As for job-seeking advice, if you have some experience with a language, you can look into Ruby on Rails and try to get a job with it. It’s a framework for the backend. If there’s a theoretical order for a website, it could be a small online store, and you can start your journey with it by creating the site on WordPress.

There’s also an alternative path. Many people earn money by selling plugins and themes for WordPress. In theory, well-written material can become a semi-passive income exceeding the salaries of seniors in ultra-modern technologies.

If none of the above resonates with you, don’t start learning PHP in our time; choose another path. You can always figure it out later.

Now, mobile development has two platforms: iOS and Android. For iOS, there’s not much choice. If you want to write for iPhones, MacBooks, iPads, or Apple Watches, your language is Swift. Objective-C exists, but forget about it; it’s outdated. Everything is written in Swift.

For development, you will need Apple devices. As for salaries, iOS developers often boast about their 600k salaries, so everything is fine there. If you like Apple, go for it.

For Android, the languages are Java and Kotlin. Kotlin was specifically developed by JetBrains to replace Java. It’s compact, meaning that what takes ten lines of code in Java can be written in three lines in Kotlin. The languages are fully compatible, and Kotlin is generally easier to learn.

If you are into Android development, then go for it. This technology allows for cross-platform development. There’s not much else on this language, and it was once prophesied to kill JavaScript.

The main idea is that you write the application code once, and it turns into many copies: one for iOS, one for Android, one for the browser, one for Mac, one for Windows, and so on. I have tried writing simple applications in it, and overall, it’s fine. However, it’s more of a tool to quickly draft an application for a startup, and later, as it develops, you can rewrite it for different platforms.

You can do the same with JavaScript; you just don’t need to learn a separate language.

Again, JavaScript is used for frontend, backend, and even mobile applications.

Now, a brief excursion into how websites work from the perspective of a browser and a search engine robot. This will be the final test of understanding, and the minute starts now.

There is a markup language called HTML. Here’s an example of it. From words in angle brackets, a website is born. There’s text for the browser. Here’s how the markup looks when compiled into a web application.

All information for search engines is lost here. Even if promotion in Yandex or Google is not needed, there’s another nuance: screen readers for users with disabilities simply won’t work. If that doesn’t matter to you, then I’ll say that standard behavior, hotkeys, copy-paste, and the behavior of text fields can differ from what we have gotten used to over the years in browsers, which can disrupt user experience.

Do you understand? I hope so.

Another reason to choose JavaScript is that companies can create mobile applications using JavaScript, not just for testing ideas but as a full-fledged production solution. Big tech companies like Yandex do this.

Why? It’s easy to explain. When you understand how it all works, publishing a mobile application written in JavaScript in, for example, the App Store means we are essentially publishing a stripped-down browser. It has no browser menus or elements at the top and bottom, and nothing indicates to the user that it’s a browser. In reality, it is, and inside it, a mobile site is simply running, with the exception that it can access device capabilities beyond just a website.

Thus, as a mobile application, it’s easier to manage.

This is why companies sometimes choose to write both the frontend and the application in JavaScript.

Now, a quick blitz of some languages not mentioned: Ruby, which has seen better days, is not needed.

C# is a great language with a very cool future. I am gradually exploring it and believe it will change the face of frontend development and user experience, as it will allow heavy computations to be done in the browser.

I will eventually post videos about it on the channel, but don’t even think about starting with it. Develop yourself, and it will find you.

1C? I’m not ready to comment on that. Many people want to explore programming by first dabbling in it, thinking it’s cool, and then looking at the very basics. They need to know about compilers, interpreters, and other complex topics, and at some point, the material's complexity causes them to burn out.

It seems to me that it’s better for everything under the hood to remain hidden in the early stages. You should just learn to drive without thinking about what happens when you press the gas or brake. Once you can move, you can start to wonder what’s under the hood and what magic drives the car.

Returning to development, write a couple of applications, complete a freelance order, or even work for a few months, and then start exploring computer science.

As I mentioned in the video about my journey, I was once taught C++, and it didn’t go well. Now, I find it interesting to understand how it works.

I also talked in the video about courses that demotivated me. Don’t let them do that to you.

In the matter of language choice, if you see comments from those who are overly critical, please ignore them.

The key difference in comments from such people is something like, “You are oversimplifying everything and speaking incorrectly.” For example, in Rust, there’s no garbage collector and no manual memory management; it has its unique ownership and borrowing system. You need to understand these things before diving into programming.

So, here’s my top languages for a quick start:

1. JavaScript

2. Python

3. PHP and Swift (tied)

4. Kotlin

Honestly, I would end my top here. But if you still want to hear about C# and Java, then C# takes the fifth spot, and Java the sixth.

Overall, this top is not a prohibition against learning certain languages. With the right discipline, desire, and enthusiasm, you can start even with assembly language, and everything will be fine.

You see, a great programmer, a senior, will earn good money in any programming language.

Let’s quickly estimate: if people earn 500,000 rubles in C++, C#, Java, frontend, or Kotlin, what’s the difference?

The path may take time, but it doesn’t matter if it’s enjoyable. You can meet basic needs for a small family in six months of hard work from scratch, and then grow and break through the ceiling while enjoying it.

And that’s it for me. Choose a language, rewatch the video, share your thoughts in the comments, and remember that everything you see before you is originally a set of zeros and ones arranged in the right order.

I hope that after watching this video, you understand this even better.

Goodbye!