Demand for the Python language. Why Python is the best choice for machine learning. Gaurav Kumar, founder of WebMake

Today Python is one of the most popular programming languages, and its areas of application are only expanding. For the last few years, it has been among the TOP 3 most popular languages ​​in the IT market.

Python is used to solve scientific and business problems. In the West, it is used by scientists (mathematicians, physicists, biologists), since learning this language is not too difficult. It is most often used for writing front-end websites and back-end for mobile and web applications, as well as creating various kinds of services and APIs. In general, it is a universal language, one of the three languages ​​for big data analysis.

A web developer working in Python needs to know additional technologies from front-end development and the JavaScript programming language to fully support any project.

Over the past 5 years, Python developers have been in demand on the labor market; there is still a shortage of specialists in this field.

Where to look for Python developer jobs

You should look for vacancies in Russia on popular specialized sites:

The leaders in the number of employer offers are HeadHunter and Indeed.

Job offers in other countries can be found on https://ru.indeed.com/. There is a specialized website for finding work abroad - in the CIS, China, Europe and the USA - https://24ru.com/, but the salary level on it is underestimated. The opportunity to find a job abroad is also provided by platforms for freelance programmers, for example https://www.upwork.com/, where after successful completion of a project you may be noticed and offered cooperation.

These sites have offers for both beginners - even students - and experienced ones. Full-time, part-time and remote work available. Basically, remote work often pays less, but it’s possible to find remote work with a flexible schedule and a salary of 150-200 thousand rubles. It all depends on the company’s policy and your qualifications.

Trainees at final courses Institute, some companies offer only 20,000 rubles, but in general, salaries on the market do not always correspond to the qualifications of a programmer (usually they are underestimated), so it is very important for the applicant to correctly assess his qualifications and the labor market.

Requirements for a Python developer

Requirements for candidates vary depending on the field of activity and, of course, on the specific project. If we talk about a typical vacancy, the following requirements are relevant:

  • Solid knowledge of the Python language and libraries
  • Knowledge of the Django or Flask/Pyramid/Tornado framework
  • Basic knowledge of HTML, CSS, JavaScript - for page layout
  • Ability to work with Git
  • Knowledge of SQL, experience with relational databases (PostgreSQL, MySQL), ability to use ORM (for example, Django ORM)
  • English, from basic technical to advanced spoken, depending on the vacancy
  • Experience with non-relational databases, such as MongoDB
  • Ability to work in a team and understand other people's code. Understanding of Agile (Scrum) and traditional development methodologies
  • Higher education - mainly in the field information technologies and mathematicians, but some organizations hire specialists without higher education (who have studied in courses or independently).

These are general requirements. Range of vacancies and software products, with which you will have to work, is very wide. Therefore, every organization requires knowledge that will be useful in its work. General rule is that the more popular and necessary programming languages, frameworks and databases you know (Js, HTML, C, C++, PHP, Django, SQL, Mongo), and the more work experience you have, the greater the chances of successful employment and a decent salary.

The Go language is quite popular now. For example, the well-known marketplace Joom offers a salary of 270,000 rubles per month to a programmer with the qualifications of Senior Backend Developer, knowledge of Go, and experience in development for Linux/Unix.

English skills also affect your salary, especially if you are looking for work abroad. An additional advantage will be not only perfect English, but also knowledge of the language of the country of interest.

Typical vacancies with Python knowledge

A Python developer can hold the following positions:

Junior Python Developer- from 6 months to 1.5 years of work experience. Writes program code. A person who solves small problems on his own, but cannot handle complex ones. Or he will spend a lot of time on them and will need to have his work checked by more experienced colleagues.

Middle Python Developer- experience from one to 3 years. A specialist who independently writes code for medium and complex tasks, making almost no mistakes. Or he is able to quickly find a mistake. Consults juniors.

Senior Python Developer- work experience from 4 to 6 years. Expert capable of developing complex applications on the framework. His knowledge can be applied in application architecture, the pay level is much higher than for beginners. Manages a project or team.

Python Team Lead- position higher than Senior. Responsibilities include managing your development team, mastering the technical side, participating in work on the project architecture, code reviews, and also developing some complex tasks on the project. Combines the basic knowledge of specialists at the Senior and Software Engineer levels.

QA Automation Engineer- tester, quality assurance specialist software. Responsibilities include finding errors in the program. You can't get a program without testing High Quality– therefore, QA specialists are in great demand in IT companies engaged in development.

Python Backend Developer- creates a server part in web applications, administers databases, architecture, program logic. A back-end developer must know server-side programming languages ​​such as PHP, Python, Ruby, Java, Perl, Node JS ( software platforms). In addition to Node JS, it is useful for this specialist to study Express (a library for interacting the Node JS platform with the server) and Mongo DB (a database for receiving and storing information).

Data Scientist is a specialist with practical knowledge of methods statistical analysis data, building skills mathematical models(from neural networks to clustering, from factor to correlation analysis). He must be able to work with large amounts of data and find patterns.

Salary levels in Russia and other countries

In Moscow, a Python programmer receives from 30,000 to 450,000 rubles, depending on the company and his skill level. In St. Petersburg from 25,000 to 350,000. The average salary of a developer is 120-150 thousand in federal cities and 75-100 in regional centers.

In the CIS countries there is a strong dispersion of salaries. For example, in Uzbekistan the average income ranges from 20 to 40 thousand in terms of Russian rubles. In Belarus, the average salary is 2-3 thousand dollars.

Salaries in European countries range from $1,500 to $5,000 per month, depending on the country and the qualifications of the employee. In the USA, programmers are offered from 2500 to 8500 thousand dollars per month.

Adapted translation of the article “Programming Languages ​​InfoQ Trends Report - October 2019”

Key points

  • Elixir appeared - functional language general purpose with multithreading support. Runs on an Erlang virtual machine. In the current report it is in the innovative category.
  • Domain-specific languages ​​designed to work with infrastructure and cloud technologies. These are instruments such as Ballerina and Pulumi. The report's authors also noted the Dark language, which was not included in the trends only because it is in beta. Rust has moved from the innovative category to the mastered category. The authors of InfoQ believe that the reason for this is tools for working with infrastructure and manipulating data planes, such as Habitat and Linkerd 2.0. Facebook uses this language to develop its own cryptocurrency.
  • Python continues to gain popularity, mainly due to its use for data analysis and teaching programming.
  • Swift for iOS has moved into the early majority category, likely due to the popularity of iOS as an app framework. Kotlin is showing similar progress.
  • In the .NET family, .NET Core 3 is of particular interest. The tool is still in the innovative category, but has every chance of catching up with .NET Core 2. But Visual Basic fell into the category of lagging behind.

Opinions

Abel Avram, senior lecturer at the Department of Informatics and Automation, Polytechnic University of Timisoara

JetBrains published the results of the “State of the Developer Ecosystem 2019” study (The State of Developer Ecosystem 2019 ), where, based on a survey of 7,000 developers, it came to the following conclusions:

  • Java is the most popular mainstream programming language;
  • JavaScript is the most commonly used language;
  • Go is the most promising language;
  • Python is the most studied language.

Go started with a share of 8% in 2017 and has now reached 18%. Additionally, the majority of developers (13%) listed Go as the language they would like to learn.

StackOverflow notes that in 2019 Python surpassed Java in the ratings and remains the second most favorite after Rust.

Arthur Casals, researcher working in the field of artificial intelligence and multi-agent systems

Although Rust's use is still somewhat limited and the language itself is seen more as an alternative to C++, the emergence of new libraries and the use of the language by large companies make it a potential candidate for the category of mastered languages.

Elixir is gaining popularity in its home country, Brazil. At least one major startup uses it, Movile.

Go is still in its early stages. Languages ​​have a much slower life cycle than, for example, frameworks, and Go has not yet reached the stage of widespread use. Elixir and Elm, in my opinion, are also in the development stage.

Swift can already be categorized as a ubiquitous language, probably because it is the most convenient tool for iOS app development.

Cloud IDEs have also gained significant popularity in recent years.CodeSandbox and StackBlitz. They provide a wide range of options for both browser editing and integration with local tools development.

I don't think Pony has moved beyond the innovative category, sadly. I like this language, even though I find its type system quite complex. And I think there's been some impressive work done on it, but there's still too little community around the language.

I'm hearing more and more about Dark, although it's still in beta. In the context of infrastructure-oriented languages, I find this interesting.

I think there is a serious focus on .NET Core. It is worth moving this tool from innovative to mastered. I believe that when .NET Core 3 is released, it is worth separating it into a separate branch and placing it in innovation.

F# seems to follow the same fate as Clojure for the JVM. It looks pretty good, but I don’t see any serious development, nor, indeed, any decline.

I think Jython is dead. Last time I checked the site, it had not been updated for several years, and in its current state it was not even close to Python 3.x.

Languages ​​for Infrastructure: There seems to be a new trend of merging some new languages ​​and deploying them.

  • Pulumi and similar - Typescript;
  • Ballerina;
  • Unison Language - a new functional language from the Scala/Haskell developers, but without monads. It's too early to evaluate it;
  • Dark Language - not yet publicly available.

It is not yet clear what this may lead to. This merger may turn out to be just an unsuccessful development branch, or it may be the first step towards new features of the language. Perhaps in 15 years we will consider this approach as natural as using subroutines.

Maybe we are now seeing a new future of wasm programming (browser, server with WASI and the like), as well as a new revival of native languages ​​(serverless, using virtual machines and containers). This approach would reduce the attractiveness of the JVM/bytecode and allow everyone to simply use the native versions of the languages ​​(the canonical versions that have been in development for decades). Let me clarify that the above does not apply to native JVM languages, such as Clojure, Scala, Kotlin, etc.

It seems that most fans of the Elixir language prefer it mainly because of the novelty and/or because they have a so-called “Java allergy” (usually caused by the fact that the platform is over 10 years old), but... I haven't seen anything in this language , which could not be implemented quite easily using the JVM (even with a little more fiddling) - and the JVM is much better integrated with libraries.

I have nothing against Python (I even enjoy writing in it), but I think it's worth noting that, despite its popularity, it's actually rarely used for commercial purposes. I rarely see a large, extensive commercial application written entirely in Python. They often start with it, but then switch to something more productive.

If you ask the community, F# has two problems:

  • weak support from Microsoft;
  • emphasis is placed on compatibility with C# at the expense of ease of use;
  • it gets more and more complex, just the way computer scientists like it. However, F# teachers are focused on teaching people who are far from programming and simply need script language. Excessive complexity makes work difficult.

I also think that C# 8 will quickly move into the category of being mastered. People have been asking for nullable reference types... Since .NET 1, to be honest.

Due to the simple syntax, abundance of training materials and high speed Python code execution allows all efforts to be directed directly to machine learning. The auxiliary code is easy to write.

A recent study from hackerrank.com supports this. According to their data, Python is the leader in terms of such indicator as Love-Hate Index (employers preferred JavaScript). The dedication of programmers proves the ease and efficiency of working with this programming language.

The figure above shows the forecast for the demand for different languages ​​by the end of the current decade. As you can see, Python has excellent prospects.

Simplicity of code

The figure below summarizes the philosophy followed by the creator of Python. To summarize, the code should be as simple, efficient and fast to execute as possible.

Machine learning algorithms cannot be called simple, so it is important for the developer not to scatter his attention and to reduce to a minimum the solution of problems associated with AI training. Python's syntax, its conciseness, modularity and scalability make it possible to very quickly prepare the basis for AI training.

Libraries and frameworks

This is another argument in favor of the popularity of Python. There are a lot of libraries and frameworks focused on working with artificial intelligence in the public domain. For work you will need:

  • Numpy - suitable for scientific calculations. Simplifies working with large multidimensional matrices/arrays, and Numpy contains a library of complex mathematical functions for working with these arrays;
  • Sci-Py - the basic data structure in it is a multidimensional array. Used to work with special functions, genetic algorithms, signal and image processing;
  • SciKit-Learn is a well-documented library used for data extraction/analysis. Note that there are a lot of algorithms for machine learning out of the box;
  • Matplotlib - used for data visualization (2D only).

From the frameworks we highlight:

  • TensorFlow is developed by Google. It is used to build and train neural networks, allowing you to achieve almost the level of human perception and image classification;
  • Apache Spark - it is convenient to implement distributed processing of semi-structured/unstructured data through it;
  • CNTK is a Microsoft development, easily scalable, faster than TensorFlow, and very accurate.

As you can see, there is no shortage of tools.

Community support and documentation

The entry threshold is quite low. In addition to the fact that the code is not overloaded with complex structures, Python is also well documented. There is a good set of materials in Russian. The same goes for third-party libraries and frameworks.

Don't discount the huge community of programmers around the world. Even if you encounter an unsolvable problem, you will most likely find answers to your questions on specialized resources.

Conclusion

At the beginning of the material, we called Python practically the only option for machine learning, this is not an exaggeration. Looking at language from a learning perspective artificial intelligence, then it has no disadvantages. The code is extremely simple, the language is well documented, libraries and frameworks make writing code easier.

These conclusions are confirmed by the demand for Python. By 2020, it may become a leader compared to other programming languages.

Every beginning developer faces the question “Which language should I learn first?” 10 programmers can give 10 different answers to this question.

At the same time, all of them can be authoritative, established people in the profession and can strongly justify their choice. After all, each developer has his own path to mastering the profession, which depends on personal preferences and the projects on which he had to work.

How to choose for a novice developer best option for himself if he doesn’t know what specific type of programming he wants to do? To answer this question, let us turn to the experience of American universities.

TOP 40 American universities choose Python

In higher education institutions in the United States, Python is often taught in introductory Computer Science courses. According to a 2014 Association for Computing Machinery study, the language was chosen by 27 of the top 39 American universities. There are several reasons for this:

1. “Low” entry threshold. English-speaking people quickly get the hang of Python and easily write their first programs. In addition, many American schoolchildren study this language in computer science classes.

2. Wide scope of use. Knowledge of Python can be useful for students to study other subjects. This language is used for data analysis and scientific research.

3. High popularity of the language in “real development”.

Worldwide popular online education services - Coursera, Codecademy, Udacity, edX - also recommend starting to learn programming with Python.

Popularity of Python compared to other languages

According to the annual ranking of IEEE Spectrum magazine, Python is in first place in popularity among programming languages. To compile the rating, journalists analyzed public developer chats, job postings, Github, StackOverflow and dozens of other sources.

In August 2017, Python was ranked fifth in the Tiobe Index. It is compiled based on the results of queries like “programming” in popular search engines.

Where is Python used?

Python is used in:

How much do Python developers earn?

As mentioned above, the scope of Python is wide. Therefore, the demand for programmers working in this language is very high.

According to the American portal gooroo.io, Python programmers have the highest “salary ceiling” among developers in popular languages. The maximum annual compensation listed in the vacancies is $148,000.

Python developers are also in demand in Russia. The salary of a senior developer reaches 200 thousand rubles per month.

How to Learn to Program in Python

Please rate it.

How can a beginner choose a programming language for future work? Assess salary levels? Demand? Based on what is easier to learn? Or take a closer look at the popularity trend lines?

In fact, you can spend a lot of time choosing best language programming. But as soon as it comes to personal acquaintance, there will be a need to change the favorite. Today you will be offered a choice that should appeal to the vast majority of beginning geeks - a combination of ease of learning and relevance in the labor market. These two arguments are relatively easy to reliably test, so the result obtained will be close to objectivity.

Criteria

We will rank them based on the demand rating. We will take a number of foreign articles (,,,) as a base, and we will confirm the Russian reality with the help of aggregators hh.ru and trud.com. The statistics, of course, are relevant on the day the text was written, and are unlikely to change much by publication.

What we will not take into account is the level of salaries and the self-sufficiency of the language, simply because of the relativity of these criteria.

Swift

Formally, Swift, of course, is not yet as in demand among employers as Objective-C, and it largely owes its inclusion in this rating to the general platform. But it is absolutely impossible to ignore the perspective in this ranking. Therefore, we recommend starting your study now. We invite you to a free two-hour.

Let's take a look at the numbers of Russian HR agencies - 471 vacancies in Russia and neighboring countries on hh.ru and 410 on trud.com. Very good for a three year old. If you add Objective-C, you can safely multiply numbers by 3.

C/C++

Calling C or C++ an easy language to learn is not entirely accurate, especially when compared to Python or Ruby. But in this case it is worth talking about a huge number educational quality literature, about fundamentality and that useful remainder that will remain in your head, even if you do not connect your future life with them.

But if you still like languages, then there are as many as 2,325 vacancies in Russia alone on hh.ru and 12,543 on trud.com. At the same time, it is important for you to understand that if, in the case of the Swift language, these were vacancies exclusively for developers, then with C++ you may need the language not only in the usual IT field, but also for the positions of a CNC operator and an auto electrician.

JavaScript

Not only is JavaScript extremely in demand in the modern world thanks to the crazy development of Internet technologies, but also thanks to modules and libraries, its zone of influence began to spread to all other IT areas.

Add to this the fact that JavaScript is relatively easy to learn. Having borrowed basic things from C and gradually developed from a bonus element for HTML and CSS to an independent force, it received a digestible syntax and an extremely understandable operating logic for a beginner.

And now to the demand: 6,365 vacancies only within Russia on hh.ru and 5,565 on trud.com. These are very good numbers for those who are determined to find a job upon completion of their studies.

Python

When it comes to the combination of ease and relevance (in that order), most developers think of Python first. This is a language tested by time and millions of students, saving valuable time both at the stage of learning and application. At the same time, the number of IT areas where you might need Python is not limited at all. Many thanks to the fans, enthusiasts and the Python Software Foundation.

It is important to note that the demand for Python specialists is much higher abroad than in Russia. However, finding a job here won’t be too difficult: 2,325 vacancies in open access according to hh.ru and 2,537 - trud.com.

Java

Java is a great language in every way. This is confirmed by the statistics of TIOBE, and the most popular OS in the world, and simply by the fact that it is a fairly simple language with a very powerful ecosystem.

If we express it in Russian reality figures, then the relevance of Java is 4,628 points according to hh.ru and 4,490 - trud.com. Yes, these are not impressive results compared to some previous contenders, but, firstly, this is due to the specifics of our IT market, secondly, the growth trend is strictly positive, and thirdly, Java will still be simpler than C/C++.

SQL

This is probably not the kind of leader you wanted to see, but formally there is nothing to complain about here. It is very difficult for you to avoid using a database in modern realities, and no one has yet come up with a more universal tool than SQL. It is this fact that allows this language to firmly sit in first place in almost all such ratings.

The language of domestic figures here does not reflect real demand very clearly, but SQL’s leadership in this rating will not make one doubt. In fact, he collected 8,303 internal vacancies on hh.ru and 8,933 on trud.com.

P.S.

Looking at the rating published at the very beginning, you probably have a reasonable question: “Where are Perl and C#?” It's all about that very projection onto Russian reality. For example, Perl has 581 vacancy results according to hh.ru and 577 on trud.com. This is, of course, better than Swift, but the Apple language has an obvious future, and the demand for Perl in Russia will most likely only fall.

Regarding C#, the situation is better: 906 vacancies on hh.ru and over 16 thousand on trud.com. However, the second figure should not mislead you: among the vacancies, almost half of the C/C++ developers with knowledge of C#, therefore, in terms of their totality and fundamental importance, it was the first group of languages ​​that was included in the title, and the second was modestly mentioned at the end.