Востребованность языка python. Как дела у Go и так ли популярен Python, как кажется — тренды языков программирования. Артур Касалс, исследователь, работающий в области искусственного интеллекта и многоагентных систем

Сегодня 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 тысяч долларов в месяц.

За счет простого синтаксиса, обилия обучающих материалов и высокой скорости исполнения кода 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 г. он может выбиться в лидеры по сравнению с остальными языками программирования.

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

Одним из лучших инструментов для хорошего старта в сфере ООП давно признан язык программирования Python. Однако встает закономерный вопрос: достаточно ли владения только «питоном» для того, чтобы найти достойную работу? Спросим об этом у рекрутера кадрового агентства А. Сухорукова Евгении Тычинской.

Расскажите о себе: чем вы занимаетесь в КА Сухорукова и как помогаете соискателям?

Я занимаюсь поиском подходящих кандидатов в области Web-программирования. Сюда относятся такие направления, как Python, JavaScript и некоторые другие. Исходя из опыта и навыков конкретного человека, я подбираю для него подходящую вакансию.

Насколько востребованы на современном рынке программисты со знанием Python?

Крайне востребованы! Спрос на специалистов, владеющих этим языком, прогрессивно растет. За последний год он увеличился минимум в 2 раза. Обусловлено это тем, что практически все IT-гиганты – Google, Yahoo!, IBM используют это средство программирования в разработке своих цифровых продуктов. Кроме того, спрос на разработчиков Python (PostgreSQL, OOP, Flask, Django) резко вырос за последние несколько лет в таких компаниях, как Instagram, Reddit, Tumblr, YouTube и Pinterest. Естественно за хедлайнерами тянутся и остальные игроки этого рынка. Так что, если вы знаете Python, то можете заработать на этом немало денег.

Что можно сделать на «питоне»? В каких областях он чаще всего используется?

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

А насколько этот язык популярен по сравнению с другими ООП-языками?

Python прочно входит в ТОП наиболее популярных языков программирования по версии TIOBE Programming Community Index. Среди разработчиков Python является вторым по популярности после Java.

Говорят, что Python – очень простой для освоения язык. Не страдает ли от этого качество предложения? Попадались ли вам лично или коллегам по работе откровенные халтурщики?

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

Какие требования предъявляют работодатели к соискателю? Я слышал, что в серьезных компаниях специалисты проходят тест на то, насколько их код «pythonic»?

    хорошее знание языка Python 2.5+ и его стандартных библиотек;

    опыт работы c Django 1.5+ и основными 3rd-party приложениями;

    опыт фронтенд-разработки: AJAX, HTML, CSS, jQuery, Bootstrap;

    технический английский: чтение документации, участие в переписке.

Как видите, «набор» немал, но вполне посилен для освоения.

Интересны ли рынку junior-программисты? Какой опыт должен приобрести соискатель, чтобы на него обратили внимание?

Джуниор интересен работодателю в том случае, если у него есть хорошая техническая база, если он хочет развиваться и двигаться дальше, а также может работать в команде. Это, своего рода, прицел на будущее – компании часто «выращивают» опытных специалистов для себя. Но, конечно, любая организация будет рада принять на работу человека, у которого уже есть практический опыт взаимодействия с этим языком программирования, составляющий хотя бы 1-2 года.

А куда податься совсем зеленому новичку? Где и как ему приобретать опыт?

Начальный курс «Python» можно пройти в IT-Академии Алексея Сухорукова. Здесь вы получите базу для дальнейшего прогресса в выбранной области программирования. А для начала карьеры отлично подойдет компания, в которой есть стажировка.

Кстати, о . Каковы, по вашему профессиональному мнению, шансы выпускника найти интересное и хорошее место работы?

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

Какова будет его зарплата на первом этапе? И насколько она может вырасти с накоплением опыта?

Оклад джуниора вполне может составлять 30-40 тысяч рублей. Человек, работающий в этой области минимум год, обычно получает от 60 тысяч рублей и выше. Уровень senior подразумевает заработную плату до 150 тысяч рублей, ну а «фуллстек»-специалист, который одновременно владеет и другими языками программирования, например, JavaScript, получает до 200 тысяч рублей в месяц.

Нередко программисты говорят, что работать на «питоне» весело, и связано это с тем, что название свое этот язык получил в честь знаменитой английской комик-группы «Монти Пайтон». В чем веселость в такой, вроде бы, довольно серьезной области?

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

Ну и традиционно: какие пожелания, советы и рекомендации вы бы хотели дать всем, кто хочет расти и развиваться в области программирования на Python и, естественно, найти достойную работу?

Адаптированный перевод статьи «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.



Есть вопросы?

Сообщить об опечатке

Текст, который будет отправлен нашим редакторам: