Transcription
Today, I will present to you a dishonest tier list of languages, because one cannot be 100% sure of anything. There are no good or bad languages. Each language simply has its own purpose, its own entry barrier, and its popularity. That is, the number of vacancies through which one can find a job. So, an important disclaimer: those who believe that CSS and HTML are considered programming languages can safely turn off the video, close YouTube, and turn off the computer. There is nothing more to discuss. CSS and HTML are markup languages. And if, God forbid, you stumble upon a blogger who believes that these are programming languages, please write in the comments so that we all know them by sight. And we move on. So, so that this video does not turn into some kind of trash, that I simply like this language, I dislike this language, I decided to build two axes. That is, popularity, the number of vacancies, and simplicity, a low entry barrier. That is, the more vacancies there are, the further to the right the language will be located. The easier the language is to learn, the higher the language will be located. That is, at the bottom are located such outdated options, at the top are located languages that can be learned in a couple of days. I made it specifically to make it easier for you to navigate. That is, if a language is located further to the right or higher, either or both, it means that this option may be more preferable for you. This does not mean that languages that are located right here at the bottom are complete trash. In any case, these languages perform their specific tasks, in which other languages may not cope. That is, my approach to this rating is purely economic. That is, the more vacancies, the more money you can potentially earn. And the lower the barrier, the faster you can get started, learn, and also get your first salary. Therefore, those who love the hard path, earn little money, these languages are just right for you. I will show them soon. So, let's go. The first expected language is, of course, Assembler. A language that combines extremely low demand. The number of vacancies is zero, I checked the other day. Extremely low level, that is, direct work with the processor register. There are no abstractions. For each architecture, there are its own nuances. That is, you need to fully understand how the processor, memory, stack work, debugging is generally a nightmare. In short, an option for the most hardcore, in some ways even touched. Well, in any case, we must be grateful to this language, because the first compilers for languages that appeared later were written on it. For example, Fortran, Algol, and even partially early C, because it was on C that compilers for other higher-level languages were later written. Because to create a language, you need to write it, compile it, and when the language itself doesn't exist, you have to compile it, obviously, in another language. And when there were no programming languages like C++A before, ASM, one could say, was a kind of link between high-level programming languages and between zeros and ones, because when you write code in assembler, you will truly feel not like a human, but like a computer. So, let's go. Haskell. It also has absolutely zero vacancies, and at the same time, it has a very high entry barrier, because it is purely functional programming with its monads, functors, applicatives. There is that higher-order type system. And it is very difficult to retrain your brain from imperative thinking to functional. And now, the next language will be the one that will make this transition smoother. It is, of course, Scala. And Scala has a lower entry barrier, because it is a hybrid language that has both OOP and functional programming. Therefore, you can write code in an OOP style for now, then gradually refactor it to functional, and your code will always be working. And another plus, I found as many as 20 vacancies for it in all of Russia. Well, another plus, it runs on the JVM. So, Java developers, hello. We will get to Java later, guys. I also want to remind you that I have a closed club of backend developers, where I post guides, roadmaps, leak interviews for backend, also analyze CVs, there are early releases of videos, plus regular calls, the link will be in the description. And we move on. The next language is, of course, Swift. Yes, you didn't expect it, but for iOS developers, it's not one of the easiest languages, so don't confuse them with frontend developers. Although iOS development in Russia has slowed down considerably due to relevant restrictions, I still managed to find as many as 100 vacancies. So there is some minimal demand. But if you want to really succeed, then, of course, it's better to go for foreign remote work or switch to another stack. More on that later. Next to Swift, we have Kotlin, which is slightly easier than Swift and has 1.5 times more vacancies, about 160 throughout Russia. And another thing I like about the language is that if you know Java, switching to Kotlin is very easy. So, Java developers, hello again. Well, yes, Kotlin also runs on the JVM. Kotlin is also good because you can write backend microservices and mobile applications on it. Before, it was only for Android, but now, thanks to Kotlin Multiplatform, you can write for iOS as well. So, Kotlin has already become a competitor to Flutter itself. In general, Kotlin sometimes seems to me like a result of merging Java and Haskell with coroutines, because coroutines work on a similar principle. So, you didn't expect it, but Bash is also a full-fledged programming language. It's not just sending commands to the terminal. There are as many as 145 vacancies for Linux administrator positions. Yes, I understand that this is not programming, but if you just search for "bash", you won't find any vacancies, because although it is a programming language, in its usual mode, no one uses it except admins and DevOps. And before we move on to the top, let's look at this couple more. Let me not tell you what these languages are right away. Try to guess. They are very similar to each other. There are a lot of vacancies for them. They are, you see, in the right part, but at the same time, they have a rather high entry barrier. 3, 2, 1. Yes, these are, of course, C and C++, a language that many hate, sometimes deservedly, sometimes not. Yes, we already have a meme called "Rewrite everything in C". But there are still areas where C++, for example, holds on very strongly. For example, GameDev, where there is such an engine called Unreal Engine, on which a lot of games are written, and C++ is clearly not planning to give up its primacy there. C++, like C, is one of the fastest programming languages due to direct memory access and no garbage collectors. This, of course, applies to C. And in general, for those who didn't understand, C++ differs from C primarily in that it has full-fledged OOP. Well, as well as a rich standard library and templates. Although I don't consider the presence of templates such a big plus. Templates are one of the reasons why C++ code is hard to read. I know that for these words I will be severely criticized in the comments, but I will still say why I don't really like C++. Yes, it's fast, yes, it has new standards, a lot of cool features have been added in recent years, but first, it has a high entry barrier. Second, it's very easy to shoot yourself in the foot. Third, it's very hard to read code due to templates, first and foremost. Fourth, there are a lot of legacy projects. By the way, hello again, Java. And fifth, perhaps what annoys me the most is that on the C++ stack, there is a huge zoo of technologies and directions, because of which you go for a vacancy, you get an offer, you onboard into the company, you perform tasks, you learn some technology, you go to the market, and all your knowledge is immediately reset. That is, it's not like backend in Go, where you build the same CRUDs, work with Kafka, PostgreSQL, you go to the market and all your knowledge is immediately relevant. You are a valuable specialist. C++ is when you have to reconfigure your entire profession, all your knowledge for each company. That is, the graph of expertise in C++, when changing companies, looks approximately like this, sawtooth. The only salvation for this language is again places where there are their own ready-made frameworks, engines. Well, for example, the same Unreal Engine. It could be some large companies where they have their own rich libraries, almost their own frameworks written, for example, Yandex. Well, or maybe Tinkoff, at least they pay a lot there. But if you are stuck with C++ in some backwater town for a salary of 10,000 and work with technologies that are not useful anywhere else, then it's a sad story, guys. Therefore, if you want a hardcore story, there is a better option. I will tell you later. Guys, I want to remind you that I do mentoring. One-on-one work, post-payment. We develop hard and soft skills, create resumes, build a career from scratch, over 50 offers. In short, come, the link will be in the description. We move on. Well, since we talked about C and C++, of course, we need to talk about C#. And before discussing this copy-paste, let's first discuss the original. And the original is, of course, Java. As you can see, Java is located on the right axis, because there are tons of vacancies for it, as many as 500. This is even considering that I searched specifically for Java, not Kotlin. If you combine them all, there will be even more. And at the same time, its entry barrier is, of course, lower than Kotlin's, because Kotlin is when you have to know the same Java, but also know everything about concurrency, about coroutines. And the fact that there is less code, no boilerplate, does not mean that the programming language is easier. In fact, it's often the opposite. So, now C#. In general, C# is a complete copy of Java, so even though many people might hate me for this, I can safely put a kind of equals sign, because their entry barriers are plus or minus identical. I don't know why, by the way, I put Java higher. I think they can be equated on the same line in terms of speed of getting started. C# was created a little later, after Java was created, because Microsoft realized how much everyone liked Java, and they needed to quickly release a competitor to balance the market. Therefore, if you look at the syntax of C# and Java, how OOP, classes are structured, then you will notice practically no difference. Therefore, I will give you a life hack. If you are a Java developer, you can safely look at C# vacancies in parallel and vice versa. Considering that there are 276 open vacancies for C# and 500 for Java, you get almost 800 vacancies in total. And the interview questions will not differ much. I don't have any hate for C#, it's just, well, they did a good job, copied it, and it works pretty well too. One of the advantages of C# is that it has a monopoly on the .NET framework, because Java has Spring, Micronaut, Quarkus, and therefore there is a much larger family, and you can get lost in them, but here everything is defined. So, we move on. This is Dart, also mobile development. There are only 100 vacancies open for it. By the way, many of these vacancies are from various small and medium-sized studios, so the salary there will be lower than for Kotlin or iOS development. But at the same time, the entry barrier is lower, so it will be much easier to learn. The only application of Dart is Flutter, on which cross-platform applications are written. Let's look at this launched language, for which there are only 25 vacancies, but a rather low entry barrier. I have also worked with this language, it is very pleasant to work with, but its popularity in Russia has declined quite rapidly. This is, of course, the Ruby language and the Ruby on Rails framework, without which the language itself practically has no meaning for existence. And next is SQL. Yes, guys, it may be unexpected for you, but it is a full-fledged programming language. The only difference is that it is a declarative programming language. That is, we describe what needs to be done, not how it needs to be done. Among the disadvantages, of course, it lacks full-fledged loops, like for, while. Well, and it, of course, has inheritance extensions, that is, T-SQL for Microsoft, PGSQL for PostgreSQL, and PL/SQL for Oracle. But in general, there are no cardinal changes, so there is no point in discussing all this separately. Another important point regarding the disclaimer. MySQL is not a programming language, it is a database management system, i.e., DBMS. Talking about it is as foolish as saying that Redis is a programming language. So write in the comments if someone mentions it. And we move on. So, we have reached the top six. These are languages with the maximum number of vacancies and the minimum entry barrier. That is, these languages can already be recommended for job searching and learning. And I'll give you a spoiler right away, there will be a language that you didn't expect to see in this top, which many people hate, dislike, a lot of memes have been made about it, and it turned out to be in my top, and I will reveal it at the very end. So, JavaScript. Well, it's not surprising that it ended up here. It has an extremely low entry barrier and a very large number of vacancies, but with a caveat. I'll tell you why with a caveat. Next, it has a younger brother who has practically taken over the lead. This is TypeScript. I will now explain why I placed it very close and slightly lower. Slightly lower because it is slightly more complex due to the type system. In addition, you need to learn about types, interfaces, generics, but since you don't need to spend a lot of time on it, it is located slightly lower than JavaScript. Personally, when I went for interviews for TypeScript about four years ago, it took me about a week to fully prepare for TypeScript questions. And when I searched for JavaScript vacancies, I got 300 vacancies for the query "JS" and another 500 vacancies for the query "frontend", because you understand perfectly well that backend is rarely written in JavaScript, that is, it's Node.js stack, and the vast majority of vacancies are for frontend. There was no point in reading statistics for TypeScript, because TypeScript developer is rarely written in the vacancy titles. That is, what is important to understand, guys, is that when I searched for resumes and vacancies, I specifically checked the box so that this word was included in the title. Because if I don't check this box, you will find about 1,000 vacancies for each stack. Because, for example, Java developers, Go developers, Python developers will definitely include JavaScript somewhere in their work experience. Therefore, searching by matching in the vacancy description is useless. So, I found very few vacancies for TypeScript, so I just assume that if the title says JavaScript developer or frontend developer, then by default, in most cases, they require TypeScript by default, so in terms of demand, they are together. So, the next stack is Go. Yes, it has a higher entry barrier, but not much higher, so it is located lower. And at the same time, it has about the same number of open vacancies. And you might ask now: "Kamil, why did you say that frontend is dead? JavaScript developers are not needed, so you need to switch to Go if there are about the same number of vacancies." But there is a second parameter that I did not include in this graph so as not to overcomplicate it - this is the number of resumes. That is, this is the number of guys who compete with you for the same number of vacancies. So, if in Go development there are 2,000 resumes with the title "Go developer", then in JavaScript, pay attention, there are 7,000, almost four times more competition, to be precise, 5,800 for frontend and 1,200 for JS. So, everything is still valid, if you are on JS/TS, switch to Go. By the way, I help. I have mentoring for this. 1:1 work, building careers from scratch, resumes from scratch, over 50 offers. We beat ATS and, of course, post-payment upon receiving an offer. The link to the website will be in the description. So, we've dealt with Go. We've already covered Java. I just want to point out again that there are more Java vacancies, but there is also much more competition. Therefore, in terms of competition, they are not very different. I will only add that although Java is still a viable option, I would not consider it in the next 5-10 years, because now many things are being rewritten in Go, and although you can still find some vacancies now, the situation may change in five years. By the way, Java is the second stack that I am also getting into, guys. And the absolute winner of my chart in terms of number of vacancies and entry barrier is, of course, Python, which I am also helping guys get into for good salaries. There are as many as 660 vacancies for it, but at the same time, there are also quite a few resumes. And now the very language that unexpectedly made it into the top, which many developers hate, which, I would say, is the meme of the 20s - this is our beloved PHP. There are as many as 41 vacancies open for it, even more than for frontend. And at the same time, attention, guys, attention. I feel like I'm selling the PHP stack, I find it funny myself. Only a thousand open resumes, that is, the ratio of vacancies to resumes is only 1 to 2. And it turns out that in terms of competition, this is the most awesome language. I'm starting to wonder why I'm not helping people get into PHP. Yes, this stack is still dying, but it's still alive. Well, there is one parameter that I did not consider in this rating, of course, is the average salary, which you can aim for. Because, for example, for Go, I confidently help guys get salaries of 250, 300, 350, then it's unlikely to be as easy to do with PHP, because PHP jobs are all small and medium-sized studios, which may have lower budgets, and Python backend will be a more serious and workable option in this regard. Therefore, the three stacks that I still help with are Go, Python, and Java. And for PHP, I will just take note. Yes, guys, I have compiled a complete Google spreadsheet, in which I have listed all the languages, written how many vacancies, how many resumes there are for them, and also calculated the competition coefficients for you, in which, of course, PHP won. You can find all this from me, in Pride. In addition, you can also find guides, roadmaps, question banks, resume reviews, interview leaks that I attend myself, as well as just a cozy chat with backend developers. Yes, guys, mobile developers, frontend developers, sorry, we only have backend, so if you want to get into backend, you can also join me in Pride. And the last language, my favorite, which is a shame that it ended up in the lower part of the rating - this is, of course, Rust. There are only 22 vacancies open for it now, practically countable on your fingers, and it has a rather high entry barrier. Therefore, this language is now, yes, of course, in the lower part of our graph, but it has great prospects. That is, learning Rust is like buying pants that are too big. They are a bit too big now. It will be difficult now, but in a couple of years, it might fit just right. That's all, guys.