Востребованность языка python. Почему Python – лучший выбор для машинного обучения. Гаурав Кумар, основатель компании WebMake

Сегодня Python один из самых популярных языков программирования, области его применения только расширяются. Последние несколько лет он входит в ТОП-3 самых востребованных языков на рынке IT.

Python используется для решения научных и бизнес-задач. На западе его используют учёные (математики, физики, биологи), так как изучить этот язык не слишком сложно. Он чаще используется для написания front-end веб-сайтов и back-end для мобильных и веб-приложений, а также создания разного рода сервисов и API. В целом это универсальный язык, входящий в тройку языков для анализа больших данных.

Веб-разработчику, работающему на Python, нужно знать дополнительные технологии из front-end разработки и язык программирования JavaScript для полноценного сопровождения любого проекта.

В течение последних 5 лет Python-разработчики востребованы на рынке труда, специалистов в этой сфере до сих пор не хватает.

Где искать вакансии для Python разработчика

Вакансии в России стоит искать на популярных специализированных сайтах:

Лидеры по количеству предложений работодателей - HeadHunter и Indeed.

Предложения вакансий в других странах попадаются на https://ru.indeed.com/ . Есть специализированный сайт по поиску работы заграницей — в СНГ, Китае, в Европе и США — https://24ru.com/ , но на нем уровень зарплат занижен. Возможность трудоустроиться заграницей предоставляют и платформы для программистов-фрилансеров, например https://www.upwork.com/ , где после удачного выполнения проекта вас могут заметить и предложить сотрудничество.

На указанных сайтах есть предложения как для начинающих - даже студентов, так и для опытных. Предлагается полная, частичная занятость и удаленная работа. В основном, на удаленной работе чаще платят меньше, но реально найти удаленную работу со свободным графиком и зарплатой 150-200 тысяч рублей. Все зависит от политики фирмы и вашей квалификации.

Стажерам на последних курсах института некоторые компании предлагают всего 20 000 рублей, но в целом, зарплаты на рынке далеко не всегда соответствуют квалификации программиста (обычно они занижены), поэтому очень важно для соискателя правильно оценивать свою квалификацию и рынок труда.

Требования к Python-разработчику

Требования к кандидатам варьируются в зависимости от сферы деятельности и, конечно, от конкретного проекта. Если говорить о типичной вакансии, то актуальны следующие требования:

  • Уверенное знание языка и библиотек Python
  • Знание фреймворка Django или Flask/Pyramid/Tornado
  • Базовые знания HTML, CSS, JavaScript – для верстки страниц
  • Умение работать с Git
  • Знание SQL, опыт работы с реляционными базами данных (PostgreSQL, MySQL), умение использовать ORM (например, Django ORM)
  • Английский язык, от базового технического до продвинутого разговорного, в зависимости от вакансии
  • Опыт работы с не реляционными базами данных, например, MongoDB
  • Умение работать в команде, разбираться в чужом коде. Паонимание Agile (Scrum) и традиционных методологий разработки
  • Высшее образование — преимущественно в сфере информационных технологий и математики, но некоторые организации принимают на работу специалистов без высшего образования (обучившихся на курсах или самостоятельно).

Это общие требования. Диапазон вакансий и программных продуктов, с которыми придется работать, очень широк. Поэтому каждая организация требует знания, которые будут полезны именно в ее работе. Общее правило таково, что чем больше популярных и необходимых языков программирования, фреймворков и баз данных вы знаете (Js, HTML, С, С++, PHP, Django, SQL, Mongo), и чем больше ваш опыт работы, тем больше шансы на удачное трудоустройство и достойную зарплату.

Достаточно популярен сейчас язык Go. Например, программисту с квалификацией Senior Backend разработчик, знанием Go, и опытом разработки под Linux/Unix известный маркетплейс Joom предлагает зарплату от 270000 рублей в месяц.

Знания английского также влияют на зарплату, особенно если вы ищите работу за границей. Дополнительным преимуществом будет не только английский в совершенстве, но и знания языка интересующей страны.

Типичные вакансии со знанием python

Python-разработчик может занимать такие должности:

Junior Python Developer - от 6 месяцев до 1,5 лет опыта работы. Пишет программный код. Человек, который сам решает небольшие задачи, но сложные не осилит. Либо потратит на них много времени и будет нуждаться в проверке работы более опытными коллегами.

Middle Python Developer - опыт от года до 3 лет. Специалист, который самостоятельно пишет код по средним и сложным задачам, почти не ошибаясь. Либо способен быстро найти ошибку. Консультирует джуниоров.

Senior Python Developer - опыт работы от 4 до 6 лет. Эксперт, способный разрабатывать сложные приложения на фреймворке. Его знания могут быть применены в архитектуре приложения, уровень оплаты намного выше, чем у начинающих. Руководит проектом или командой.

Python Team Lead - должность выше Senior. В обязанности входит управление своей командой разработчиков, владение технической стороной, участие в работе над архитектурой проекта, ревью кода, а также разработка некоторых сложных заданий на проекте. Совмещает в себе основные знания специалистов уровней Senior и Software Engineer.

QA Automation Engineer - тестировщик, специалист по обеспечению качества программного обеспечения. В обязанности входит нахождение ошибок в программе. Без тестирования нельзя получить программу высокого качества – поэтому QA-специалисты очень востребованы в IT-компаниях, занятых разработкой.

Python Backend Developer - создает серверную часть в веб-приложениях, администрирует базы данных, архитектуру, программную логику. Back-end разработчик должен знать серверные языки программирования, такие как PHP, Python, Ruby, Java, Perl, Node JS (программные платформы). Дополнительно к Node JS этому специалисту полезно изучить Express (библиотеку для взаимодействия платформы Node JS с сервером) и Mongo DB (базу данных для получения и хранения информации).

Data Scientist - это специалист, обладающий практическими знаниями методов статистического анализа данных, навыками построения математических моделей (от нейронных сетей до кластеризации, от факторного до корреляционного анализа). Он должен уметь работать с большими массивами данных и находить закономерности.

Уровень зарплат в России и в других странах

В Москве программист Python получает от 30 000 до 450 000 рублей в зависимости от компании и его уровня квалификации. В Санкт-Петербурге от 25 000 до 350 000. Средняя зарплата разработчика составляет 120-150 тысяч в городах федерального значения и 75-100 в региональных центрах.

В странах СНГ сильный разброс зарплат. Например, в Узбекистане средний доход составляет от 20 до 40 тысяч в пересчете на российские рубли. В Белоруссии средняя зарплата — 2-3 тысячи долларов.

Зарплата в странах Европы составляет от 1500 до 5000 долларов в месяц в зависимости от страны и квалификации сотрудника. В США программистам предлагают от 2500 до 8500 тысяч долларов в месяц.

Адаптированный перевод статьи «Programming Languages InfoQ Trends Report - October 2019»

Ключевые моменты

  • Появился Elixir - функциональный язык общего назначения с поддержкой многопоточности. Запускается на виртуальной машине Erlang. В текущем отчёте находится в категории инновационных.
  • Набирают популярность предметно-ориентированные языки, созданные для работы с инфраструктурой и облачными технологиями. Это такие инструменты, как Ballerina и Pulumi . Авторы отчёта также отметили язык Dark , который не был включён в тренды только потому, что находится на стадии беты. Rust перешёл из категории инновационных в категорию осваиваемых. Авторы InfoQ считают, что причина этому - инструменты для работы с инфраструктурой и манипуляций плоскостями данных, такие как Habitat и Linkerd 2.0 . Facebook для разработки собственной криптовалюты использует именно этот язык.
  • Python продолжает набирать популярность, в основном благодаря тому, что его используют для анализа и обработки данных и обучения программированию.
  • Swift для iOS перешёл в категорию раннего большинства, вероятно, из-за популярности iOS в качестве среды для приложений. Kotlin показывает схожий прогресс.
  • В семействе.NET особый интерес вызывает.NET Core 3. Инструмент пока находится в категории инновационных, но имеет все шансы догнать.NET Core 2. А вот Visual Basic попал в категорию отстающих.

Мнения

Абель Аврам, старший преподаватель кафедры информатики и автоматизации Политехнического университета Тимишоары

JetBrains опубликовала результаты исследования «Состояние экосистемы разработчиков 2019» (The State of Developer Ecosystem 2019 ), где по результатам опроса 7 000 разработчиков пришла к следующим выводам:

  • Java - самый популярный основной язык программирования;
  • JavaScript - наиболее часто применяемый язык;
  • Go - самый перспективный язык;
  • Python - самый изучаемый язык.

Go начал с доли в 8 % в 2017 году и в настоящее время достиг 18 %. Кроме того, больше всего разработчиков (13 %) указали Go в качестве языка, который хотели бы освоить.

StackOverflow отмечает , что в 2019 году Python обошёл Java по рейтингам и остаётся вторым самым любимым после Rust.

Артур Касалс, исследователь, работающий в области искусственного интеллекта и многоагентных систем

Хотя применение Rust всё ещё несколько ограничено и сам язык рассматривается больше как альтернатива C++, появление новых библиотек и использование этого языка крупными компаниями делают его потенциальным кандидатом в категорию осваиваемых языков.

Elixir набирает популярность на родине, в Бразилии. Его использует как минимум один крупный стартап, Movile.

Go пока находится на стадии освоения. У языков жизненный цикл протекает куда медленнее, чем, например, у фреймворков, и Go ещё не достиг стадии повсеместного применения. Elixir и Elm, по моему мнению, также находятся на стадии освоения.

Swift уже можно отнести к категории повсеместно используемых языков, вероятно, потому что это самый удобный инструмент для разработки приложений для iOS.

Также значительную популярность в последние годы набрали облачные IDE, CodeSandbox и StackBlitz. Они предоставляют широкий спектр возможностей как для браузерного редактирования, так и для интеграции с локальными инструментами разработки.

Не думаю, что Pony продвинулся дальше категории инновационных, как это ни печально. Мне нравится этот язык, несмотря на то, что я нахожу его систему типов довольно сложной. И я думаю, над ним проделана впечатляющая работа, однако вокруг языка пока сформировалось слишком маленькое сообщество.

Я всё больше слышу о Dark, хотя он всё ещё на стадии беты. В контексте ориентированных на инфраструктуру языков я нахожу это интересным.

Думаю, на.NET Core сосредоточены серьёзные усилия. Стоит перенести этот инструмент из инновационных в осваиваемые. Полагаю, при выходе.NET Core 3 стоит выделить его в отдельную ветвь и поместить в инновационные.

F# похоже повторяет судьбу Clojure для JVM. Выглядит довольно неплохо, но я не вижу серьёзного развития, как, впрочем, и упадка.

Думаю, Jython мёртв. Последний раз, когда я проверял сайт, он уже не обновлялся несколько лет, а в текущем состоянии он даже и рядом не стоял с Python 3.x.

Языки для инфраструктуры: похоже на новый тренд слияния некоторых новых языков и развёртывания.

  • Pulumi и подобные - Typescript;
  • Ballerina;
  • Unison Language - новый функциональный язык от разработчиков Scala/Haskell, но без монад. Пока ещё слишком рано его оценивать;
  • Dark Language - пока нет в публичном доступе.

Пока непонятно, к чему это может привести. Это слияние может оказаться просто неудачной веткой развития, а может стать первым шагом к новым фичам языка. Возможно, лет через 15 мы будем считать такой подход настолько же естественным, как использование подпрограмм.

Может быть, мы сейчас видим новое будущее wasm- программирования (браузер, сервер с WASI и тому подобное), а также новое возрождение нативных языков (serverless, с использованием виртуальных машин и контейнеров). Такой подход уменьшит привлекательность JVM/байткода и позволит всем просто использовать нативные версии языков (канонические версии, разрабатывавшиеся десятилетиями). Уточню - сказанное выше не касается нативных языков JVM, таких как Clojure, Scala, Kotlin и т.п.

Похоже, большинство фанатов языка Elixir предпочитают его в основном из-за новизны и/или потому что у них так называемая «аллергия на Java» (обычно вызванная тем, что платформе уже больше 10 лет), но… Я не видел ничего на этом языке, что нельзя было довольно просто реализовать с помощью JVM (пусть даже немного больше повозившись) - при этом JVM гораздо лучше интегрирована с библиотеками.

Ничего не имею против Python (мне даже нравится на нём писать), но я думаю, стоит отметить что, несмотря на популярность, его на самом деле редко используют в коммерческих целях. Я редко вижу большое, развёрнутое коммерческое приложение, написанное исключительно на Python. С него часто начинают, но потом переключаются на что-то более производительное.

Если спросить у сообщества, у F# есть две проблемы:

  • слабая поддержка от Microsoft;
  • упор сделан на совместимость с C# в ущерб простоте использования;
  • он становится всё сложнее и сложнее, прямо как любят специалисты по информатике. Однако преподаватели F# сосредоточены на обучении людей, далёких от программирования и просто нуждающихся в скриптовом языке. Излишняя сложность затрудняет работу.

Также я думаю, что C# 8 быстро перейдёт в категорию осваиваемых. Люди просили обнуляемые ссылочные типы… Честно говоря, со времён.NET 1.

За счет простого синтаксиса, обилия обучающих материалов и высокой скорости исполнения кода Python позволяет все усилия направить непосредственно на машинное обучение. Вспомогательный код пишется легко.

В пользу этого говорит недавнее исследование hackerrank.com . По их данным именно Python лидирует по такому показателю как Love-Hate Index (работодатели при этом отдали предпочтение JavaScript ). Преданность программистов доказывает простоту и эффективность работы с этим языком программирования.

На рисунке выше - прогноз востребованности разных языков до конца текущего десятилетия. Как видите, перспективы у Python отличные.

Простота кода

На рисунке ниже тезисно изложена философия, которой придерживался создатель Python. Если обобщить, то код должен быть максимально простым, эффективным и быстром исполняться.

Простыми алгоритмы машинного обучения назвать нельзя, поэтому разработчику важно не распылять внимание, сократить до минимума решение сопутствующих обучению ИИ проблем. Синтаксис Питона, его лаконичность, модульность и масштабируемость позволяют очень быстро подготовить базу для тренировки ИИ.

Библиотеки и фреймворки

Это еще один аргумент в пользу популярности Python. В свободном доступе масса библиотек и фреймворков ориентированных на работу с искусственным интеллектом. В работе вам понадобятся:

  • Numpy - подойдет для научных расчетов. Упрощает работу с большими многомерными матрицами/массивами, а для работы с этими массивами в Numpy содержится библиотека сложных математических функций;
  • Sci-Py - базовой структурой данных в ней является многомерный массив. Используется для работы со специальными функциями, генетическими алгоритмами, обработки сигналов и изображений;
  • SciKit-Learn - библиотека отлично документирована, используется для извлечения/анализа данных. Отметим, что здесь очень много алгоритмов для машинного обучения «из коробки»;
  • Matplotlib - используется для визуализации данных (только в 2D).

Из фреймворков выделим:

  • TensorFlow - разработка Google. Применяется для построения и обучения нейросетей, позволяет достичь практически уровня человеческого восприятия и классификации образов;
  • Apache Spark - через него удобно реализовать распределенную обработку слабоструктурированных/неструктурированных данных;
  • CNTK - разработка Microsoft, легко масштабируется, по скорости работы обходит TensorFlow, очень точный.

Как видите, недостатка в инструментах нет.

Поддержка сообщества и документация

Входной порог довольно низок. Помимо того, что код не перегружен сложными конструкциями, Python еще и отлично документирован. Есть неплохой набор материалов на русском языке. То же касается сторонних библиотек и фреймворков.

Не сбрасывайте со счетов и огромное сообщество программистов во всем мире. Даже если столкнетесь с нерешаемой проблемой, скорее всего, на профильных ресурсах найдете ответ на вопросы.

Заключение

В начале материала Python мы назвали практически безальтернативным вариантом для машинного обучения, это не преувеличение. Если рассматривать язык с точки зрения обучения искусственного интеллекта, то у него нет недостатков. Код предельно прост, язык отлично документирован, библиотеки и фреймворки облегчают написание кода.

Эти выводы подтверждает и востребованность Питона. К 2020 г. он может выбиться в лидеры по сравнению с остальными языками программирования.

Перед каждым начинающим разработчиком встает вопрос «Какой язык учить первым?». 10 программистов могут дать на него 10 разных ответов.

При этом все они могут быть авторитетными, состоявшимися в профессии людьми и веско аргументировать свой выбор. Ведь у каждого разработчика свой путь освоения профессии, который зависит от личных предпочтений, и проектов над которыми приходилось работать.

Как начинающему разработчику выбрать оптимальный вариант для себя, если он не знает, каким конкретно видом программирования хочет заниматься? Чтобы ответить на этот вопрос, обратимся к опыту американских университетов.

ТОП-40 американских университетов выбирают Python

В высших учебных заведениях в США на вводных курсах Computer Science часто преподают Python. По данным исследования Ассоциации Вычислительной Техники 2014 года, этот язык выбрали 27 из 39 лучших американских университетов. На это есть несколько причин:

1. «Низкий» порог вхождения. Англоговорящие люди быстро «врубаются» в Python и легко пишут первые программы. К тому же, многие американские школьники изучают этот язык на уроках информатики.

2. Широкая сфера использования. Знание Python бывает полезно студентам для изучения других предметов. Этот язык применяется для анализа данных и научных исследований.

3. Высокая популярность языка в «реальной разработке».

Начать изучение программирования с Python также рекомендуют популярные во всем мире сервисы для онлайн-образования - Coursera, Codecademy, Udacity, edX.

Популярность Python по сравнению с другими языками

По данным ежегодного рейтинга журнала IEEE Spectrum, Python на первом месте по популярности среди языков программирования. Для составления рейтинга журналисты анализировали публичные чаты разработчиков, объявления о вакансиях, Github, StackOverflow и десятки других источников.

В августе 2017 года Python был на пятом месте в рейтинге Tiobe Index. Он составляется на основе результатов запросов вида « programming» в популярных поисковиках.

Где применяется Python

Python используется в:

Сколько зарабатывают Python-разработчики?

Как было сказано выше, сфера применения Python широка. Поэтому спрос на программистов, работающих на этом языке, очень высок.

По данным американского портала gooroo.io, самый высокий «потолок зарплат» среди разработчиков на популярных языках у программистов Python. Максимальное годовое вознаграждение, указанное в вакансиях, составляет 148 тысяч долларов.

Python-разработчики востребованы и в России. Зарплата senior-разработчика доходит до 200 тысяч рублей в месяц.

Как научиться программировать на Python

Поставьте оценку.

Как новичку выбрать язык программирования для будущей работы? Оценить уровень зарплат? Востребованность? Исходить из того, что проще выучить? Или внимательно изучить линии тренда популярности?

На самом деле, вы можете потратить уйму времени, выбирая лучший язык программирования. Но как только дело дойдет до личного знакомства, возникнет необходимость сменить фаворита. Сегодня вашему вниманию будет предложен вариант выбора, который должен прийтись по душе абсолютному большинству начинающих гиков - сочетание легкости изучения и востребованности на рынке труда. Эти два аргумента относительно просто достоверно проверить, поэтому полученный результат будет близок к объективности.

Критерии

Расставлять по местам мы будем исходя из рейтинга востребованности. За базу возьмем ряд зарубежных статей ( , , ), реальность же российскую подтвердим при помощи агрегаторов hh.ru и trud.com . Статистика, разумеется, актуальна на день написания текста, а к публикации вряд ли сильно изменится.

Что учитывать мы не будем, так это уровень зарплат и самодостаточность языка, просто из-за относительности данных критериев.

Swift

Формально, Swift, конечно еще не так востребован среди работодателей как Objective-C, и попаданием в этот рейтинг он во многом обязан общей платформе. Но игнорировать перспективу в этом рейтинге категорически невозможно. Поэтому рекомендуем начинать изучение уже сейчас. Приглашаем вас на бесплатный двухчасовой .

Взглянем на цифры российских HR-агентств - 471 вакансия в России и ближнем зарубежье на hh.ru и 410 на trud.com . Очень неплохо для трехлетнего языка. Если добавите Objective-C, можете смело умножать цифры на 3.

C/C++

Называть язык C или C++ лёгкими для изучения не совсем правильно, особенно если сравнивать их с Python или Ruby. Но в данному случае стоит говорить о том огромном количестве учебной качественной литературы, о фундаментальности и том полезном остатке, что останется в вашей голове, даже если свою дальнейшую жизнь с ними вы не свяжете.

Но если всё таки языки вам понравятся, то аж 2 325 вакансий только в России на hh.ru и 12 543 на trud.com . При этом вам важно понимать, что если, в случае с языком Swift, это были вакансии исключительно разработчиков, то с C++ вам язык может понадобится не только в привычной сфере IT, но и на должности оператора ЧПУ, и автоэлектрика.

JavaScript

Мало того, что JavaScript крайне востребован в современном мире благодаря сумасшедшему развитию интернет-технологий, так ещё благодаря модулям и библиотекам его зона влияния стала распространяться во все остальные IT-сферы.

Добавьте сюда тот факт, что JavaScript относительно лёгок для изучения. Заимствовав базовые вещи из Си и постепенно развиваясь от бонусного элемента для HTML и CSS до самостоятельной силы, он получил удобоваримый синтаксис и предельно понятную для новичка логику работы.

А теперь к востребованности: 6 365 вакансий только внутри России на hh.ru и 5 565 на trud.com . Это весьма неплохие цифры для тех, кто твёрдо намерился найти работу по окончанию обучения.

Python

Когда речь идёт о совокупности аргументов лёгкость и востребованность (именно в таком порядке), большинство разработчиков в первую очередь думает о Python. Это проверенный временем и миллионами учеников язык, экономит драгоценное время как на стадии обучения, так и применения. При этом количество областей IT, где бы вам мог потребоваться Python не ограничено вообще ничем. Большое спасибо поклонникам энтузиастам и Python Software Foundation.

Важно отметить, что востребованность в специалистах Python значительно выше за границей, нежели в России. Однако и у нас найти работу большого труда не составит: 2 325 вакансий в открытом доступе по версии hh.ru и 2 537 - trud.com .

Java

Java - великолепный язык во всех отношениях. Это подтверждается и статистикой TIOBE , и самой популярной ОС в мире , и просто тем, что это достаточно простой язык с очень мощной экосистемой.

Если выразить в цифрах российской реальности, то актуальность Java составляет 4 628 пунктов по версии hh.ru и 4 490 - trud.com . Да, это не впечатляющие результаты на фоне некоторых предыдущих претендентов, но, во-первых, это обусловлено спецификой нашего IT-рынка, во-вторых тенденция к росту строго положительная, в-третьих Java всё же будет попроще C/C++.

SQL

Наверняка не такого лидера вы хотели увидеть, но формально придраться здесь не к чему. Вам очень трудно избегать использования БД в современных реалиях, а инструмента более универсального,чем SQL пока никто не придумал. Именно этот факт и позволяет этому языку твёрдо восседать на первом месте практически во всех подобных рейтингах.

Язык отечественных цифр здесь не слишком ярко отражает реальный спрос, но в лидерстве SQL в данном рейтинге сомневаться не заставит. По факту, на hh.ru он набрал 8 303 внутренних вакансий, на trud.com 8 933.

P.S.

Глядя на опубликованный в самом начале рейтнг, у вас наверняка возникает резонный вопрос: «А где же Perl и C#?». Всё дело в том самом проецировании на российскую действительность. Например, Perl имеет результаты 581 вакансий по версии hh.ru и 577 на trud.com . Это, конечно, лучше, чем Swift, но у яблочного языка есть очевидная перспектива, а спрос на Perl в России скорее всего будет только падать.

Касательно C# здесь ситуация лучше: 906 вакансий на hh.ru и свыше 16 тысяч на trud.com . Однако вторая цифра не должна вводить вас в заблуждение: среди вакансий почти половина C/C++ разработчики со знанием C#, поэтому по совокупности и фундаментальной значимости именно первая группа языков была вынесена в заголовок, а второй скромно упомянут в конце.