Where to use Python promisingly and appropriately

    In the last article, we already discussed with you the reasons why Python cannot be called an ideal language for beginners, although it is generally believed in the same Habré that Python is the number one choice and, in general, a topic.

    In this article, we will discuss the list of Python directions that I single out as the most promising for applying my strength and time to young professionals. This conclusion is made on the basis of my analysis - studying the areas and tools of python and comparing their effectiveness with analogues on other platforms.
    image

    What can you do in Python


    Although python is a general-purpose language, and as they say, all doors are open for you, in fact, the use of the language is greatly limited by the tools and technologies that were developed in it during the evolutionary struggle with other technologies. Therefore, we proceed to the review.

    Microcontrollers (highly doubtful)


    Although Andrei Vlasovskikh at the last PYCON Russia 2017 in his corporate style enthusiastically talked about how to program microcontrollers on such an instrument as MicroPython, and Kirill Borisov even suggested studying some foreign literature, the situation is generally not.

    The list of microcontrollers that are supported by Python tends to zero; commercial efficiency and the availability of job offers are practically zero. Given that there are more traditional ways of programming tools, until some large company invests in this direction, there is nothing to do.

    Devops (adequate)


    Market analysis shows that about a third of all the vacancies that mention Python are in the DevOpsa field. 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 displaced Perl for Linux by practicality, and Bash has done quite well in writing large scripts and larger server components. Also added to this is that the interface of many tools accepts Python as a scripting language.

    If you want to develop in the field of Devops, then knowledge of Python will be a big plus for you, all the others pass this sphere side.

    As for the commercial prospect (startup) of this area, it is difficult to imagine a person who could write and monetize some instrument without 5+ years of experience in the field of devopa.

    Testing (adequate)


    Although the main testing 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 like Yandex.Tank with its BFG.

    Practice shows that although Python can fully cope with the testing task, using Java is a more straightforward and reliable solution.
    But in general, an adequate testing specialist should use Python and Java equally well in their field.

    Testing vacancies are also about a third of the total mass, often in vacancies indicate knowledge of both Python and Java simultaneously.

    Desktop development (doubtful)


    Currently, Python has 5 cross-platform tools that allow you to write "full" applications for Windows / Linux / Mac

    • Tkinter
    • Pyqt
    • PyGTK
    • Wxpython
    • Kivy (Conditionally)

    However, practice shows that none of the tools makes a 100% cross-platform application that would look native on each platform. Here and there various jambs, inconsistencies, broken controllers and other dirt appear.

    Therefore, we can confidently say that writing commercial Desktop on python is a very dubious undertaking, and companies rarely do this (or rewrite it at the earliest opportunity, as DropBox did).

    As for internal tools, the use of small GUI applications is applied, but developers will not be focused on searching Desktop Python.

    Who wants to tackle this sphere more fully, I ask Igor Novikov, who found a good way to sew Frankenstein using the abstraction layer - link

    Mobile Development (highly doubtful)


    Everything is bad, you can use Kivy as pet projects, for real development it is very doubtful, there are no vacancies on Kivy.

    Those. like, I personally talked with a number of people who had their own web project in Python 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 to."

    Machine Learning and Data Science (Adequate and Promising)


    This is one of the most hype areas of the modern IT world where Python is used as a testing tool. Python has a number of convenient libraries for machine learning and scientific calculations: Pandas, NumPy, SciPy, Scikit-Learn, which allow you to quickly build working models. And they actually work pretty well.

    As for use, Python is used as a testing tool, or for small tasks. If the project is large, then usually the model is written in Java / Scala / C ++, and the training specialist is already acting 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, almost always higher technical, mathematical education will be asked.

    As for the vacancies, everything is pretty good, but in such vacancies it is not Python knowledge that is required, but your head.

    Those who want to quickly feel this direction, I advise you to read the book: "Vvedenie_v_mashinnoe_obuchenie_s_pomoschyu_Python _-_ A_Myuller_S_Gvido_2017" - there are on torrents, it reads quickly, the presentation gives a good one.

    Web scraping (perhaps, but doubtful)


    Python has three things that make it highly effective in web scraping, the Requests library, beautifulsoup, and the API for Selenium. If you connect libraries for computer vision and Machine Learning here, you get very effective tools.

    The problem is that there are few vacancies in this area, the main clients are freelance, who offer to write parsing scripts for their shit sites, spam machines, and occasionally review generators for a fix.

    The area is interesting, but there is little money in it.

    Computer vision (doubtful)


    In python there are a number of tools that allow you to write computer vision tools, they are even used locally in commercial products, or as components, for example, for web scraping. However, Python obviously cannot be called suitable tools, so the use is extremely limited, there are practically no vacancies.

    GameDev (doubtful)


    In almost every discussion of Python game development, eve online and WarGaming are cited as examples. However, in the first case, stateless python is used, and in the second case, everything is limited to the scripting language.

    As for the real use, then you have three engines Kivy, PyGame, Panda3D, if the first two are more suitable for pet projects, then the third was actually used on combat projects of good quality, although these projects were in 2004. Which seems to hint that the use of proven engines in other languages ​​such as Unity or Game Maker looks more convincing.

    However, the Ren'Py engine is sneaking here, which suddenly became the best engine for writing visual novels (suffering stories for girls), which pay off well even within the framework of the Russian Federation. A series of "7 demonologists of Peter the Great", proof of this.

    There are naturally no vacancies in GameDev for python, but you can raise money on a “startup” with due dexterity. But it’s safer to take a different language and proven engines.

    Web development (adequate and promising)


    Python is one of the three languages ​​(Python, PHP, Ruby) that have developed ecosystems of 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)

    Currently, most of the market is occupied by the Django framework, 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 crude, and its use is being put into 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 great for statistics and analytics services (where, in general, most of the vacancies go for it). This direction occupies the remaining third of all vacancies.

    I would also 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 Using Python


    1) With regard to devopa and testing, Python is a key tool in the profession, which is mandatory for every adequate specialist. In this case, Python is not taught; people come to it by necessity.

    2) The most promising areas are 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 learn python, then it is advisable for you to focus on these areas and not waste your time on something else. There are vacancies for this, on this you can build a startup.

    3) All other areas, although they offer certain tools to solve problems, but the prospects of using these tools looks very doubtful. And most importantly, it is almost impossible to find a paid job in these areas.

    Also popular now: