In the last article, we already discussed with you the reasons why Python cannot be called an ideal language for newbies, although at the same Habré there is a perception that Python is the number one choice and generally topchi.
In this article we will discuss with you that list of Python directions, which I highlight as the most promising for the application of my efforts and time for young professionals. This conclusion is made on the basis of my analysis - the study of the areas and tools of the python and compare their effectiveness with their counterparts on other platforms.

What can you do on python
Although python is a general purpose language, and as they say, all doors are open to you, in fact, the use of language is strongly limited to those tools and technologies that were developed in it during the evolutionary struggle with other technologies. Therefore, proceed to the review.
')
Microcontrollers (highly doubtful)
Although Andrei Vlasovskiy at the last PYCON Russia 2017 in his corporate style enthusiastically talked about how to program microcontrollers on a tool like MicroPython, and Kirill Borisov even offered to study some foreign literature, the situation is generally none.
The list of microcontrollers that are supported by Python tends to zero, commercial efficiency and the availability of proposals for work is practically zero. Given the fact that there are more traditional ways of programming tools, as long as some large company does not invest in this direction, there is nothing to do.
Devops (adequately)
Market analysis shows that about a third of all vacancies where Python is mentioned are related to DevOpsa. However, Python is not the main tool, but the technology that you want to know. This is due to the fact that Python has completely dismissed Perl for Linux with practicality, and it’s not a bad move for Bash to write large scripts and larger server components. It also adds the fact that many of the tool interfaces accept Python as a scripting language.
If you want to develop in the realm of Devops, then the knowledge of Python will be a big plus, all the others pass this sphere as a party.
As for the commercial perspective (startup) of this direction, it is difficult to imagine a person who could write and monetize some tool without having experience of 5+ years in the field of devops.
Testing (adequate)
Although the main test automation tool is bloody Java, which has a huge set of frameworks and ready-made solutions, sometimes small companies use Python to fully test or write scripts for tools such as Yandex.Tank with its BFG.
Practice shows that although Python can fully cope with the task of testing, using Java is a more straightforward and reliable solution.
But generally speaking, an adequate tester should use Python and Java equally well for his field.
Vacancies for testing are also about a third of the total mass, often in vacancies indicate knowledge of both Python and Java at the same time.
Desktop development (doubtful)
Currently, Python has 5 cross-platform tools that allow you to write "full-fledged" applications for Windows / Linux / Mac.
- Tkinter
- PyQt
- PyGTK
- Wxpython
- Kivy (Conventionally)
However, practice shows that none of the tools makes a 100% cross-platform application that would natively look at each of the platforms. Various jambs, inconsistencies, broken controllers and other dirt appear here and there.
Therefore, it is safe to say that writing a commercial Desktop to a python is a very dubious undertaking, and companies rarely do this (or rewrite as soon as possible, as did DropBox).
As for the internal tools, the use of small GUI-applications is used, but there will be no purposeful search for Desktop Python developers.
Who wants to deal with this area more fully, I ask Igor Novikov, who found a good way to sew Frankenstein using an abstraction layer -
linkMobile Development (highly doubtful)
Everything is bad, you can use Kivy as a pet project, for real development it is very doubtful, there are no vacancies on Kivy.
Those. I personally talked to a number of people who had their own Python web project and wrote applications on Kivy to capture a large audience, and they even used it, but it looks like “The programmer writes what he wants”.
Machine learning and Data science (adequate and promising)
This is one of the most HYIP areas of the modern IT world, where Python is used as a tool for testing. Python has a number of convenient libraries of machine learning and scientific calculations: Pandas, NumPy, SciPy, Scikit-Learn, which allow you to quickly build working models. And they actually work quite well.
As for use, then Python is used as a tool for testing, or for small tasks. If the project is large, then the model is usually written in Java / Scala / C ++, and the training specialist already acts as a consultant / analyst.
The complexity of this direction lies in the fact that you must have high knowledge in the field of mathematics and statistics, you will almost always be asked for a higher technical, mathematical education.
For vacancies, everything is pretty good, but in such vacancies it is not your knowledge of Python that is required, but your head.
For those who want to quickly touch this direction, I advise you to read the book: “Vvedenie_v_mashinnoe_obuchenie_s_pomoschyu_Python _-_ A_Myuller_S_Gvido_2017” - there is on torrents, it is read quickly, the presentation gives a good one.
Web scraping (possible, but doubtful)
Python has three things that make it very effective in the field of web scraping, Requests, beautifulsoup and API for Selenium. If you connect libraries for computer vision and machine learning, you get very effective tools.
The problem is that there are few vacancies in this area, the main customers are freelancing, who offer to write parsing scripts for their shit sites, spam machines, and occasionally feedback generators for fix.
The area is interesting, but there is little money in it.
Computer vision (doubtful)
Python has a number of tools that allow you to write computer vision tools; they are even used in commercial products or as components, for example, for web-scraping. However, Python is clearly not a suitable tool, so the use is extremely limited, there are practically no vacancies.
GameDev (doubtful)
In almost every discussion of the development of the game in Python cite as an example eve online and WarGaming. However, in the first case, stateless python is used, and in the second case, everything is limited to the scripting language.
As for the actual use, then you get three engines Kivy, PyGame, Panda3D, if the first two are more suitable for pet projects, the third one was actually used on combat projects of good quality, although these projects were 2004. As if it hints that using proven engines in other languages like Unity or Game Maker looks more convincing.
However, the Ren'Py engine sneaks in here, which suddenly became the best engine for writing visual novels (suffering stories for girls), which pay off well, even within the Russian Federation. A series of "7 demonologists of Peter the Great", proof of that.
There are naturally no vacancies in GameDev for python, but you can raise money for a “startup” with proper skill. But it is safer to take a different language and proven engines.
Web development (adequate and promising)
Python is among the top three languages (Python, PHP, Ruby), which have developed ecosystems for the rapid development of web projects of adequate quality. The key platforms here are:
- Django (monolithic synchronous framework)
- Flask (micro synchronous framework)
- Tornado (monolithic asynchronous framework)
- Twisted (monolithic asynchronous framework)
- Aiohttp (micro asynchronous framework)
At present, the Django framework occupies a large part of the market, but with the advent of microservice ideas, Flask began to gain momentum. As for asynchrony, everything is complicated here, since Tornado and Twisted are considered obsolete (although many companies work for them, the same Tinkov), and aiohttp is very raw, and its use is a big question.
The strength of Python lies in the fact that it allows you to quickly develop complex web applications, has a huge number of high-quality modules, and is well suited for statistics and analytics services (where, in general, most of the vacancies go for it). This direction occupies the remaining third of all vacancies.
Separately, I would like to note the writing of GIS services in Python, which, although they have quite adequate tools for working with geodata, but still using Java for these purposes looks more promising.
Conclusions on the use of python
1) Regarding the scope of the devops and testing, the Python is a key instrument of the profession, which is mandatory for each adequate specialist. Python in this case is not taught, they come to it of necessity.
2) The most promising are the areas of web development and machine learning (analytics), which clearly distinguish python from its competitors in the form of PHP and Ruby. And if you want to study a python, then it is desirable for you to concentrate on these areas and not waste your time on something else. Under this there are vacancies, on this you can build a startup.
3) All other areas, although they offer certain tools for solving problems, but the prospects of using these tools looks very doubtful. And most importantly, to find paid work in these areas is almost impossible.