📱

Get Our Mobile App

Take your business learning on the go!

Download on the App StoreGet it on Google Play

Какой язык программирования выбрать в 2025 году?

Sergey Nemchinskiy50:24

Transcription

Hello, my dear friends!

Every year, we traditionally create a video on how to choose a programming language for that specific year. Each year, there are slight changes. If you watch such videos every year, it might not be as interesting for you. On the other hand, if this is your first time on this channel, this video will undoubtedly be useful and will help you a lot.

My name is still Sergey Nemchenko. I am still the director and founder of the educational company Foxminded, where we have been teaching programming since 2016. This is probably a good indicator that I understand a bit about this. In general, I have been in IT since 1996 and have worked with a bunch of different languages. So, I think I have something to discuss with you on this topic.

So, which programming language should you choose in 2025? Let's get started!

Now, a very important announcement: all January, we are giving you an 18% discount on all courses, mentoring, and training in the adult education project. Get the freedom to learn under the reliable guidance of a mentor. Choose your path to solving problems, and the mentor will guide you in the right direction.

If you are still unsure about the direction or format, take a free one-week trial period, for which you will only pay if you want to continue. Register right now using the link in the description.

Before we dive into which language to choose, let's talk about the different types of programming languages. Then, I will discuss how to choose, and finally, we will go over possible options.

Okay, that's the plan.

Let's start with the groups of programming languages. These groups are categorized differently by different authors. I categorize them this way; you can criticize it or say it's wrong. I know that mega specialists in programming languages will rush to the comments to say that my categorization is incorrect. I believe you can categorize them in various ways.

Okay, your categorization might be better. I might be a bit slow, and maybe I didn't get it right, but this is how I see it.

The first group of programming languages is low-level languages. This doesn't mean that they only involve low-level programming. Low-level programming is tied to specific hardware, memory, CPU registers, graphics cards, video memory, peripheral devices, and so on.

This group primarily includes C++ and the newly emerging C, which is gradually gaining some market share, although it's still not very large.

Choosing this group of programming languages makes sense if you enjoy solving logical puzzles. If you love Sudoku, crosswords, and challenges, and enjoy competitive programming, then this group will appeal to you.

The second case for choosing this group is if you like everything related to low-level programming. If you enjoy working with Raspberry Pi or controllers that can blink lights, or if you love building smart home devices or clever gadgets that react when your cat does something, then this group of languages will be very appealing to you.

The second group of programming languages is frontend languages. This group mainly consists of two languages: JavaScript and TypeScript. TypeScript is essentially a superset of JavaScript.

These programming languages are tied to the user interface, meaning how a website or web application will look in the user's browser. When a user visits any website, they can interact with it in various ways, like adding items to a cart, writing documents in Google Docs, or ordering tickets.

Frontend developers are responsible for how everything looks and what users can click on, drag, or type. For example, Google Docs, Google Maps, Facebook, and Instagram are all examples of frontend interfaces.

It's important to note that many beginners think that mobile interfaces are the same as web interfaces. However, mobile interfaces are different, and we will discuss that later.

When should you choose this group of programming languages? If you enjoy making things look beautiful and pixel-perfect, where every pixel is aligned, and buttons are positioned correctly, then this group is for you.

Frontend developers often have to deal with design, so you need to have some skills in working with design tools. Designers will provide you with mockups, and you need to know how to interact with them. Sometimes, you may need to crop images or make other adjustments.

In any case, you will need at least minimal graphic skills; without them, you won't get far.

The frontend developer is the person responsible for how everything looks and works. On one hand, your work is immediately visible; on the other hand, if you do a good job, you will be praised, but if you do a poor job, it will be obvious.

Another feature of this group of languages is that while most other languages work similarly in various situations, frontend development heavily depends on the browser in which everything is displayed.

Your website may work perfectly in all modern browsers except, for example, Safari. For some reason, it always seems to have issues with Safari, and changes that make it work in Safari can break the display in other browsers.

While this isn't a death sentence, there are many ready-made solutions and hacks available. Still, keep in mind that you can never be guaranteed that your site will look perfect in every browser.

As I mentioned, the main language here is JavaScript, and everything revolves around it. Although the majority of modern frontend developers are now writing in TypeScript.

Next, we have two groups of backend languages. What is backend? It's the business logic of the application. For example, if the frontend developer designs the interface for ordering a ticket, the backend developer writes the logic for that ticket order.

On the frontend, you just click a button, and it seems like you've ordered a ticket, but in reality, nothing has been ordered yet. The backend is where the actual order takes place, including calls to the system that reserves the tickets, checks for availability, communicates with the payment system, and processes the transaction. Only after all that does the response go back to the frontend, confirming that the user has indeed made the order.

I categorize languages because you can write in any programming language, but there are more or less accepted practices. There are two main groups of languages: dynamically typed languages and statically typed languages.

For beginners, what's the difference? In a dynamically typed language, you can create a variable without specifying its type, and the language will determine its type. For example, if you create a variable A and assign it a string, the language will recognize it as a string.

In a statically typed language, you must explicitly declare the variable's type. If you try to assign a number to a variable declared as a string, the compiler will throw an error. In a dynamically typed language, the interpreter will just say, "Okay, you changed the type; let's move on."

This means that in dynamically typed backend languages, it's faster and easier to write code, but since errors are caught later, it becomes challenging to maintain larger systems.

Thus, there are two main directions: dynamically typed languages for small and medium projects, and statically typed languages for large projects.

It's straightforward: dynamically typed languages are used for e-commerce sites, gyms, pharmacies, and anything else that comes to mind. Statically typed languages are used for large enterprises, banks, oil companies, telecoms, and anything else that is massive in scale.

Now, let's talk about dynamically typed backend languages. There are three main ones: PHP, Python, and Ruby. Node.js, which is JavaScript running on the backend, is also often included here.

Dynamically typed backend languages are typically used for large and medium applications. You will often start projects from scratch, finish them, and move on. Unlike statically typed languages, where you might join a project that has already been started, you will frequently write projects from the ground up.

Writing a project from scratch is often easier and more enjoyable. You can use newer frameworks and build the code as you like, rather than digging through someone else's code.

However, there are downsides. Companies that do this type of development often prefer to take on similar projects. If your company develops websites for pharmacy chains, they will likely focus on developing similar sites with similar logic.

You may find that you rarely finish projects to a polished state; you will often be rushing to production with some basic bugs fixed and then moving on to the next project. Some people enjoy this, while others find it stressful.

I personally find it stressful, which is why I have always worked in a different group, but that doesn't mean you should feel the same way.

Now, let's discuss statically typed backend languages. Currently, there are two main ones: Java and C#. Java is essentially the ultimate language for large projects, while C# is for slightly smaller projects, although it depends on the situation.

The unique aspect of this development is that the code for the projects you join can be thousands or even hundreds of thousands of times larger than what you might have encountered before. These are massive applications, so large that they are practically impossible to grasp in their entirety.

Many beginners might think, "Are you kidding?" No, I'm not joking. These systems can be enormous, with millions of classes written over decades by thousands of developers.

These are the most complex systems in commercial development. You will almost never start a project from scratch; you will always join a project that has already been written by someone else. You will find yourself in a situation where you need to fix something, but the project is so large that it's hard to understand what was written.

There is often no documentation, and it can be challenging to grasp the subject matter. For example, a pharmacy network is relatively understandable, but understanding how a bank or a telecom company works is much more complex.

You will need to familiarize yourself with the main concepts because, while you can draw a button on the frontend, you need to understand what it does on the backend since you will be writing its handler.

The advantages of these languages are that they are the most powerful programming languages with the most robust toolsets. You will feel like a special forces operative capable of navigating through complex systems.

However, the downside is that you will often find yourself dealing with a lot of legacy code written by other developers over the years.

Next, we have mobile development. Mobile development is straightforward; it consists of two types: native, which is designed for a specific operating system, and cross-platform, which is intended to work on both mobile platforms.

We will not consider any marginal mobile platforms; we will focus on the two main ones: Android and iOS.

For some reason, all guides recommend that beginners choose cross-platform development, but I strongly disagree. I believe beginners should choose native mobile development and specialize in one operating system.

Why do I think this? First, it's unlikely that you will be proficient in both mobile platforms. For example, I have always used Android, and when I pick up an iPhone, I feel lost.

Users of iPhones feel the same way when they try to use Android. As a cross-platform developer, you will need to understand both platforms at a developer level, not just as a user, which is not easy for beginners.

Moreover, you will need to test on both platforms, and there are many nuances to remember for each.

Now, let's briefly discuss game development. In Ukraine, game development is experiencing a strange state where many people are interested in it, and a lot of small game development companies are emerging.

If you are interested in game development, it's a valid direction. However, you should understand that the average salary in this field is significantly lower than in other areas.

If you are genuinely interested in game development, it's worth pursuing. Just keep in mind that the average salary is noticeably lower than in other fields.

There are two main directions in game development: casual and hyper-casual games, usually for mobile devices, and larger games with realistic graphics.

Casual and hyper-casual games are often developed using Unity, which uses C#. If you enjoy this type of development, feel free to choose Unity; it's relatively easy to learn, and there is a wealth of knowledge available.

On the other hand, larger games with realistic graphics are often developed using Unreal Engine with C++. However, in Ukraine, fully developed large games are rare; most are outsourced to Ukrainian developers.

Now, let's talk about Node.js and Go. These programming languages are widely used, especially in startups across various fields, from streaming video to fintech.

Startups are typically small companies with a few people who have found funding to quickly develop an application. As a result, there is often chaos in the processes, and you may not know who is responsible for what.

While the average salary is higher in startups, it can be unpredictable. Many Go developers work multiple jobs because they never know when one will end.

If you enjoy this kind of environment, you can earn good money, but it can also be unstable.

Now, let's discuss how to choose a programming language. First, you need to select a group from those I mentioned earlier. I hope I have explained this well enough.

If you found it difficult to follow, or if you want a written version, there is a special document in the description that you can download and read.

You need to choose two or three groups; I can't imagine someone who likes low-level programming, frontend, dynamic backend, static backend, and game development all at once.

You need to determine what you prefer. I have never seen anyone who likes everything.

Choosing based on salary doesn't make sense; it's all about your preferences. If you want to develop mobile apps, then go for it.

Once you've chosen two or three groups, you need to select one programming language from each group and try it out.

What does "try" mean? It means practicing. I used to tell people to look for free courses online, but I realized that many came back saying the courses were incomplete or outdated.

So, we created a proper course called "Kodar Navigator," which includes four programming languages: JavaScript, Python, Java, and C++.

The essence of choosing a programming language is to try it out hands-on. You will never know if you like a language until you actually use it.

You can't choose a musical instrument or food without trying it first. The same goes for programming languages.

You need to write code in the language you choose. If you want to take our course, great! If not, search for courses on the languages you've selected and try to complete them.

The key is to actually do the work, not just watch videos. I know many people who come to me saying they just watched videos and decided if they liked a language.

That doesn't work! You can't learn to swim or play the guitar just by watching videos. You need to practice.

After trying out the languages for about two weeks, you will likely find that one language resonates with you.

If this is your first programming language, I recommend trying at least a second one, preferably a third, to ensure you are making the right choice.

If you end up with two languages, write down the pros and cons of each. This will help you determine which language you prefer.

If you're still unsure, ask someone close to you who understands you well. They can help you see which language you seem to prefer.

If that doesn't help, you can always flip a coin. There's a psychological trick where, when the coin lands, you should listen to your heart and see how you feel about the result.

If you're happy with the choice, great! If not, try again.

Remember, the full description of what I've discussed is in the downloadable file linked in the description.

Now, let's talk about the programming languages I suggest you consider. I know you'll ask about this, so here we go.

The first programming language is JavaScript and TypeScript. I understand that some may argue they are different languages, and I agree. However, they often fall under the same profession: frontend or backend development.

JavaScript is everywhere. You can write frontend, backend, mobile apps, and even desktop applications with it.

The unique aspect of JavaScript is its standard C-like syntax, but it is used in a very unusual way, which can confuse programmers from other languages.

If you enjoy magic and the unexpected, JavaScript is for you. If you prefer certainty and stability, it might not be the best choice.

Next is Java, which is widely used in enterprise applications, especially in banking and oil industries. Java is simple but has a vast ecosystem of frameworks and tools.

If you want to learn something once and for all, Java is a reliable choice. However, you may find yourself dealing with legacy code.

Then we have Python, which is popular for web development and increasingly for artificial intelligence and machine learning. If you're interested in these areas, Python is a great first language.

PHP is often overlooked, but it has a low entry barrier and is widely used for web development. It has powerful frameworks like Symfony and is still relevant in the job market.

C# is another solid choice, especially for Microsoft environments. It is used for large systems and game development.

C and C++ are more complex due to manual memory management, but they are powerful for low-level programming and game development.

Swift is the language for Apple development, and if you love Apple products, it's a great choice.

Kotlin is also a good option for Android development, especially after Google's shift away from Java.

Finally, Go is gaining popularity, especially in startups. It has a simple syntax and is efficient for various applications.

In conclusion, the choice of programming language is personal and should be based on your preferences.

You can only determine your language after trying it out hands-on.

Choosing a language is important, but don't overthink it. Spend a month exploring and then commit to one language for the next few years.

Don't worry too much about what others say; if you enjoy a language, pursue it.

I love you all! Subscribe, like, and that's all I wanted to say about choosing programming languages in 2025.

Don't forget to check the file below. Until next time, take care!