iTechArt logo

На популярные вопросы о Python отвечают программисты iTechArt

Development & QA

Что пишут на Python, и почему все его так любят? Так ли он прост, как кажется на первый взгляд? Чего не хватает новичкам, решившим начать на нем программировать? Как развивается сообщество питонистов в Беларуси? Задали эти и другие вопросы нашим специалистам Николаю Сасковцу, Сергею Горелышеву, Максиму Данилову и Александру Цуканову.

Наши собеседники
Николай Сасковец.jpg

Николай Сасковец

Group Manager iTechArt

Убежден, что новички ценят Python за "человеческий" синтаксис

Сергей Горелышев.jpg

Сергей Горелышев

Software Engineering Manager

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

Максим Данилов.jpg

Максим Данилов

Software Engineer iTechArt

Фиксирует, что зачастую Python разработчики фокусируются на своем языке и игнорируют более общие знания Computer Science.

Александр Цуканов.jpg

Александр Цуканов

Team Manager iTechArt

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

1. Для чего нужен Python?

2. Прост ли Python для новичков??

3. С чем связан рост популярности Python?

4. Проекты на Python

5. Python-направление в iTechArt

6. Чего не хватает Python разработчикам в Беларуси?

7. Zen of Python

8. Совет новичкам, желающим изучать Python

Python позиционируется как язык для всего. Так ли это? Есть мнение, что фактически он применяется всего в 3 сферах: Data Science (DS), Machine Learning (ML) и веб-разработка.

СЕРГЕЙ ГОРЕЛЫШЕВ: Python действительно изначально проектировался как простой язык для решения широкого спектра задач. Таков он и по сей день. То, что Python на слуху в указанных сферах, обусловлено, в первую очередь, их популярностью (читать «хайп»). Допускаю, что 80% решаемых на Python задач приходятся на указанные в вопросе 3 сферы. Спрос со стороны бизнеса высокий, количество специалистов растет с каждым днем. При этом и те, кто уже давно работает в DS/ML, и новички ищут самые простые и эффективные инструменты, и в итоге находят Python.

Тем не менее, язык применяют и для написания интернет-пауков, веб-скрейпинга, и для создания десктопных графических интерфейсов. На Python пишут приложения уровня ERP, инструменты для автоматизации процессов разработки и управления IT инфраструктурой, обработки видео и графических файлов и т.д.

АЛЕКСАНДР ЦУКАНОВ: Хм, мне удалось насчитать шесть сфер применения Python, если Data Science и Machine Learning посчитать за одну: DS/ML, бэкенд веб-разработка, Data Engineering, скрипты автоматизации, десктопные клиенты (прежде всего плагины для ПО на C и C++), а также программирование микроконтроллеров.

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

Вакансии Python Developer в iTechArt - На вопросы о Python отвечают программисты iTechArt

МАКСИМ ДАНИЛОВ: Python — язык общего назначения, к тому же может расширяться с помощью языков C и C++. Хороший пример — фундаментальный для Data Science и Machine Learning пакет NumPy. Высокопроизводительные части NumPy реализованы на C, но его, как бы, UI — это Python.

Как думаете почему востребованность Python растет?

АЛЕКСАНДР ЦУКАНОВ: Я думаю, своей нынешней популярностью Python обязан применению в бэкенде. В своё время многие компании устали от запутанных решений для инъекций зависимостей/инверсии контроля и стали пересаживаться на такие языки как Ruby и Python.

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

С позиции бизнеса Python экономит человеко-дни и позволяет быстро прототипировать, что зачастую перевешивает издержки на медлительность интерпретатора. Если позже выясняется, что быстродействия действительно недостаточно, можно локализовать узкое горлышко проекта и реализовать его на C/C++/Rust — благо совместимость с такими бинарными расширениями в мире Python на высоте.

Иногда популярность Python объясняют еще и развитием машинного обучения и Data Science. Но я думаю, это, скорее, приятный бонус, а "выстрелил" язык всё же из-за выгод использования на бэкенде. Он оттеснил альтернативы читаемостью и относительной простотой изучения, а также предсказуемостью, в противовес неявной магии внутри Rails. В прошлом Google сделали ставку на Python в веб-инфраструктуре, чем хорошо подогрели интерес к языку, — теперь он везде. Философия Python оказалась очень практичной для коммерческих задач.

Говорят, что Python — один из самых простых, и поэтому популярных языков программирования для входа в профессию. Вы с этим согласны? Как оцениваете популярность Python среди новичков?

НИКОЛАЙ САСКОВЕЦ: Простота или сложность языка программирования — вещь субъективная. Тем, кто хочет стать разработчиком, стоило бы думать о сложности «компьютерного мира» в целом, а не какого-то конкретного языка программирования. Язык — это лишь маленькая толика всех тех сложностей, с которыми придется столкнуться желающим войти в профессию.

На первый взгляд Python, действительно, кажется очень простым. У него «человеческий» синтаксис: нет излишнего количества скобочек, стрелочек и других специальных символов. Но мне кажется, не только поэтому он популярен среди новичков. Python позволяет вести разработку сразу в двух запредельно хайповых сферах — DS/ML. А высокий спрос всегда рождает предложение.

АЛЕКСАНДР ЦУКАНОВ: При первом знакомстве Python не отпугивает большим количеством технических понятий в стиле «Модификаторы доступа? Аргументы командной строки? Begin и End? Но я просто хотел вывести текст на экран!» Он позволяет сфокусироваться на цели и непосредственно её реализовать. Кроме того, код на Python обычно получается очень читаемым. Есть даже шутка, что Python — единственный язык, интерпретатор которого успешно исполняет псевдокод.

Мне приходилось преподавать Python детям из начальной школы, и большинство неплохо схватывало. На мой взгляд, Python гораздо лучше подходит для обучения основам программирования в школе, чем Pascal, или, чем C++ или Java для первого программистского курса в университете.

В то же время мне обидно слышать, когда Python называют несерьезным и слишком простым языком для настоящего продакшена. Бэкенд YouTube и Instagram, автопилот Tesla — по-моему, достаточно крутые проекты.

Ищем Python Developer - На вопросы о Python отвечают программисты iTechArt

На StackOverflow почти 14% вопросов идут с отметкой «Python», и их количество растет. Как думаете почему?

НИКОЛАЙ САСКОВЕЦ: Может, потому что Питон не так прост, как на первый взгляд кажется? :)

СЕРГЕЙ ГОРЕЛЫШЕВ: Python, как инструмент быстрой и относительно недорогой разработки, стал очень популярен среди стартапов. То есть там, где идею нужно воплотить максимально быстро и просто. Количество идей, генерируемых основателями стартапов, растет. Но для их воплощения не хватает базовых знаний языка, приходится решать нетривиальные задачи, многие из которых требуют наличия определенного опыта. Если нет денег этот опыт купить (читай, взять в команду опытного инженера) — можно спросить на StackOverflow. 

На каких проектах интересно работать Python-разработчику? Какие сейчас делаете крутые и интересные «штуки»?

СЕРГЕЙ ГОРЕЛЫШЕВ: На тех, где нужно писать код на Python :) Мне нравятся нетривиальные задачи, как в веб-разработке, так и во всем, что связано с Data Science. Проекты, которые требуют нешаблонных подходов, позволяют попробовать новые инструменты, изучить новые современные фреймворки и сервисы. Нравится работать в продуктах, которыми потенциально будет пользоваться много людей и которыми потом можно гордиться. В этом плане разработчик Python не отличается от остальных.

Среди интересных “штук” в компании можно отметить проектирование хранилища данных для одного из крупнейших мировых банков со штаб-квартирой в Испании. Прямо сейчас прорабатываем участие в проекте по распознаванию лиц при помощи мобильных устройств. Заказчик — компания из Южной Америки, которая занимается автоматизацией документооборота.

АЛЕКСАНДР ЦУКАНОВ: На тех, где язык называют Пайтон, а не Питон :)

Если серьезно, меня всегда привлекали технологии машинного обучения, анализа данных, различных математических, статистических подходов. У Python богатая экосистема линейной алгебры, обработки сигналов, продвинутых визуализаций. С одной стороны, Jupyter Notebooks дают интерактивную альтернативу Matlab, только еще обширнее по функционалу. С другой стороны, этот наукоемкий код легко потом выкатить в прод. Видеть своими глазами, как продвинутые математические подходы приносят пользу бизнесу — это воодушевляет.

Looking for Middle Python Developer - На вопросы о Python отвечают программисты iTechArtСейчас работаю над решением по автоматизации настройки сложных инженерных симуляций. Не вдаваясь в конфиденциальные подробности, скажу только, что мы адаптируем существующие инструменты AutoML к кейсу очень маленького объёма данных — довольно занимательная ситуация с точки зрения статистики. Сегодня многие проблемы из области машинного обучения решаются из коробки в две строчки кода, но это точно не тот случай.

Как Python-направление развивается в iTechArt?

НИКОЛАЙ САСКОВЕЦ: На мой взгляд, развитию Python-направления в компании очень помогает то, что в 2018 году iTechArt стали помогать минскому сообществу питонистов с проведением мероприятий. И до сих пор поддерживают комьюнити. Думаю, это позволяет привлекать в команду действительно увлеченных Питоном людей, которые видят, что компания заинтересована в технологии. Также мы в рамках нашего юнита проводим dev2dev, на которых бывают доклады, посвящённые Python или технологиям около него. Надеюсь, наши спикеры еще выступят со своими темами на более широкую публику.

АЛЕКСАНДР ЦУКАНОВ: Мне кажется, за последние несколько лет в Беларуси Python превратился из непривычного и экзотического в крайне желательный навык для таких позиций как Backend Developer, Data Engineer, Data Analyst. Например, проекты, использующие Spark, всё реже пишутся на Scala и всё чаще на Python.

Чего не хватает Python разработчикам в Беларуси?

НИКОЛАЙ САСКОВЕЦ: Как участник программного комитета конференции PyCon Belarus, я имею доступ к результатам анонимного опроса питонистов после конференции. Если верить его результатам, многим из участников не хватает личного присутствия в Беларуси Гвидо Ван Россума, разработчика языка программирования Python :)

Вот несколько положений из Zen of Python Тима Петерса, в котором сформулирована философия языка:

  • Простое лучше, чем сложное
  • Сложное лучше, чем запутанное
  • Практичность важнее безупречности
  • Ошибки никогда не должны замалчиваться
  • Сейчас лучше, чем никогда

Какое из положений вам максимально близко?

МАКСИМ ДАНИЛОВ: Zen of Python — очередной абстрактный набор принципов за всё хорошее, против всего плохого :) Подписаться могу под каждым пунктом.

НИКОЛАЙ САСКОВЕЦ: По-моему, дзен Python имеет смысл только в полном объёме, а не отдельно взятыми постулатами. Потому что отдельно взятый постулат, использованный без оглядки, может быть губительным. Однако, я редко видел, чтобы кто-то придерживался всех положений дзена.

СЕРГЕЙ ГОРЕЛЫШЕВ: Мне нравится «Никогда часто лучше, чем прямо сейчас», которого в перечисленных почему-то нет.

АЛЕКСАНДР ЦУКАНОВ: В Zen of Python есть ещё одна классная строчка: «явное лучше неявного». Для меня это самый важный посыл всего "Дзена", даже значок с такой надписью есть. В языке программирования и в коде, который я пишу, не должно быть неожиданной магии. Даже если ради этого придется написать чуть больше строчек — я не против, лишь бы всем было очевидно и понятно, что делает код, и как им пользоваться.

Совет новичкам, желающим изучать Python

СЕРГЕЙ ГОРЕЛЫШЕВ: Сейчас сложилась такая картина, что у большинства Python разработчиков если и есть опыт коммерческой разработки, то не более года. Вероятно это именно из-за простоты языка и его популярности среди новичков. Хотя, в стране есть и много талантливых инженеров, работающих на Python, нескольких человек знаю лично. Умудренных опытом разработчиков вряд ли впечатлишь принципиально новой задачей или фреймворком. А вот для начинающих информации много. Тем не менее, помимо Python и технических знаний я посоветую новичкам прокачивать иностранный язык.

Looking for Senior Python Developer - На вопросы о Python отвечают программисты iTechArt

МАКСИМ ДАНИЛОВ: Если говорить о кандидатах, которые проходили через меня, то зачастую Python разработчики фокусируются на своем языке и игнорируют более общие знания Computer Science. Также нужно понимать — чтобы работать в Data Science, Machine Learning или веб-разработке, нужно знать не только синтаксис Python, но и конкретные библиотеки и инструменты.

P.S. Из недавних новостей — в ноябре в рейтинге TIOBE Python впервые обошел по популярности Java. Конечно, это не делает язык универсальным средством для всех сфер, и он может совершенно не подходить для некоторых задач. Но положение в рейтинге — однозначный сигнал, что язык развивается и наращивает популярность среди разработчиков. В том числе и в нашей компании. Мы развиваем экспертизу в этом направлении с 2011 года и всегда рады талантливым людям.