Как нанять команду Python разработчиков
Python — достаточно популярный язык программирования. Найти разработчиков, специализирующихся на нём, будет нетрудно. Чтобы помочь вам разобраться в том, что спрашивать у таких специалистов на собеседовании и на какие навыки обращать внимание, мы написали эту статью. В ней мы расскажем о том, для каких задач подходит язык, какие вопросы задать, чтобы оценить уровень разработчика и как выбрать между инхаус, аутсорс и аутстафф системой работы.
Чем хорош Python
Python — высокоуровневый язык программирования, известный своей многофункциональностью.
- Простой синтаксис
Код на Python максимально приближен к естественному языку. Это снижает порог вхождения для новичков, а в работе облегчает чтение чужого кода и взаимодействие в команде разработчиков Python при совместной разработке.
- Кроссплатформенность и гибкость
Написанная на Python программа будет работать и решать одинаковые задачи как на Linux, так и на Windows, Mac или UNIX. Чтобы охватить ещё больше платформ и сфер применения, были созданы разные вариации языка. Например, CPython — самая распространенная реализация Python на языке С, она чаще всего и используется в разработке. Реализация Jython даёт возможность писать код на Python, но иметь доступ к библиотекам Java и запускать приложения на платформе с установленной JVM, виртуальной машиной Java.
- Многофункциональная библиотека
Стандартная библиотека Python предлагает большое количество готовых решений: строковые операторы, инструменты веб-разработки, модули для работы с операционной системой или мультимедийными файлами. Всё это упрощает разработку и сокращает длину кода. В дополнение на Python доступно множество сервисов и фреймворков. Под каждую задачу и продукт можно легко найти необходимые вспомогательные инструменты.
Python может уступать другим языкам программирования в производительности, но и с этим разработчики научились справляться. Есть разные способы оптимизации и ускорения приложений на Python. Например, можно использовать модуль расширения Psyco. Модуль выборочно заменяет части байткода Python на машинный код и тем самым исполняет его быстрее. Другой вариант — переписать часть программы с использованием Python C расширений.
Где используется Python
Этот язык давно стал основным для сферы Data Science, с его помощью компания может наладить сбор и обработку данных, разработать рекомендательную систему или систему распознавания голоса, проводить математические вычисления. DevOps-инженеры отдают предпочтение Python, потому что это сильный скриптовый язык, позволяющий автоматизировать задачи на каждом этапе цикла. Разработчики игр применяют его для описания логики, запуска сцен, взаимодействия персонажей. В банковской сфере Python используется для отслеживания состояния финансового рынка. Пакеты Python позволяют собирать информацию с источников вроде Google Finance, анализировать большие объёмы данных и наглядно их визуализировать.
- Веб-разработка
На разных этапах развития Python использовали: платёжная система PayPal, сервис комментариев Disqus, файловый хостинг Dropbox. Больше 20% кодовой базы Facebook написано на Python, язык используется для обработки данных и при формировании ленты новостей.
В 2016 году команда разработчиков Instagram объявила, что приложение является самым масштабным примером использования Django, одного из фреймворков Python для веб-разработки. Учитывая рост приложения и количества активных пользователей, этот титул, скорее всего, всё ещё принадлежит сервису.
- Game-dev
С использованием библиотеки модулей Pygame для языка Python пишут игры с миллионами пользователей: например, World Of Tanks, Battlefield 2. Sims 4 применяет Python для выстраивания логики сценариев и обработки событий.
- Data Science
Одна из бизнес-задач, с которой хорошо справляется Python, — обработка больших объемов данных и машинное обучение. Музыкальный стриминговый сервис Spotify использует Python на бэкенде, второе применение — обработка данных для принятия более эффективных решений по развитию компании. Благодаря Python работают система рекомендаций сервиса и Spotify Радио, плейлист, генерируемый приложением на основе понравившейся песни, исполнителя или альбома.
- Научные исследования
Управление по аэронавтике и исследованию космического пространства NASA использует Python для проведения научных исследований и в многочисленных opensource-проектах.
- Анимация
Walt Disney и Pixar применяют Python при работе с трёхмерной графикой и создании анимационных фильмов.
Наши проекты на Python
Промышленность и производство
- Восточная горнорудная компания — ведущая угледобывающая компания, осуществляющая добычу, транспортировку и отгрузку твердого топлива;
- Pirelli — производитель автошин с заводами в России;
Видеостримминг
- START - провайдер мультимедиа контента и стриминговый сервис;
Инструменты разработки
- Vexor — облачный сервис непрерывной интеграции;
Сфера маркетинга
- UpToPromo — автоматизированная система для продвижения сайтов, создания ссылок и размещения онлайн-рекламы;
Веб-приложения
- Prism — веб-приложение и расширение Google Chrome для сохранения и управления визуальными закладками и ссылками на сайты;
Open source
- Django Swapuser - открытая библиотека для простой кастомизации Django User;
- Evrone Python Guidelines - Python гайдлайн Evrone для унифицированной разработки.
Где искать веб-разработчика на Python?
Прежде чем начать поиск разработчика, необходимо сформулировать, какую задачу должен будет решить инженер и какие у вас требования к кандидату. Исходя из имеющихся в компании ресурсов, нужно будет принять решение, какой тип сотрудничества будет наиболее эффективным — найм разработчика в команду, аутсорс проекта или аутстафф, а также формат: удалённо или в офисе.
- Сайты с вакансиями и резюме вроде hh.ru и «Мой Круг»
На таких платформах обитают уже горячие кандидаты — те, кто заинтересован в смене работы или активно её ищет. Доступ к резюме поможет провести оценку навыков ещё до первого разговора с разработчиком.
Сайты подскажут и общее состояние рынка. Например, какая зарплата у senior разработчика, сколько получает программист на Python, который работает удалённо, какие ещё компании используют Python.
- Тематические сообщества
Вокруг языка сформировалось активное комьюнити, разработчики пришли даже к единой философии написания кода — «Дзен Питона».
Публикация вакансии в тематическом сообществе сразу увеличивает количество программистов, которые узнают о вашем предложении. Инженеров можно найти на stackoverflow.com или Github, активное обсуждение идет и в каналах и чатах в Telegram.
Как уже не раз говорилось, Python используется в работе над самыми разными задачами. Поэтому помимо чатов, посвящённых языку, можно посмотреть и другие тематические сообщества, например связанные с Big Data.
- Конференции и митапы
Участие или присутствие на тематических мероприятиях - это хорошая возможность представить компанию и вакансии большому количеству разработчиков. Плюс ко всему, вовлечённость компании в формирование и развитие комьюнити создаёт положительный имидж в глазах кандидатов. Потенциальный минус — то, что часто большой процент участников конференций и митапов составляют начинающие разработчики.
- Рекрутинговое агентство
Если в команде нет ресурса на то, чтобы подбирать и тестировать разработчиков, имеет смысл обратиться в рекрутинговое агентство. Такой вариант особенно удобен, если компания ищет узконаправленного специалиста.
Процесс работы с агентством требует активного участия со стороны компании. Рекрутер находит кандидатов, договаривается насчёт интервью, но не может в полной мере оценить способности кандидата. Поэтому в компании должен быть тимлид или техдир, который проведёт техническое интервью и протестирует навыки разработчика.
- Взять сотрудников на аутстафф
Аутстаффинг — это возможность быстро увеличить мощность команды разработчиков, когда есть задача, сжатые сроки, но не хватает внутренних ресурсов для её выполнения. Главное отличие аутстаффинга от аутсорса проекта — агентство не закрывает задачу целиком, а выдает компании дополнительного сотрудника для её выполнения. Полный контроль и управление проектом остаются на стороне компании. Распространённая практика — аутстаффинг тимлида или CTO, который поможет компании отладить процессы.
- Отдать проект на аутсорс
Первое преимущество аутсорсинга проектов — компания получает готовый продукт и контролирует результат, а не каждый шаг разработчиков. Это особенно актуально для компаний и руководителей, которые не обладают техническими навыками, чтобы управлять процессом и взвешивать достоинства разных решений. При работе с аутсорсинг-агентством вы получаете сработавшуюся команду, которой будет управлять опытный тимлид.
Не тратите время на поиск каждого отдельного члена команды, выстраивание коммуникации и отлаживание процессов. Заполните форму и мы свяжемся с вами в течение 24 часов.
Что должен знать и уметь Python-программист?
Так как Python применяется в очень разных сферах, разработчик не должен знать каждый фреймворк и библиотеку. Но есть базовые навыки, на которых строятся уже все остальные скилы. Приведем примеры вопросов, которые стоит задать Python-разработчику во время собеседования, чтобы оценить глубину его знаний.
Веб-разработчик на Python должен понимать общие принципы разработки бэкенда, уметь работать с серверами, базами данных, API и знать фреймворки. Примеры вопросов:
- Какие веб-фреймворки ранее использовали в работе?
- Назовите основные виды NoSQL баз данных. Как БД решает проблемы масштабируемости?
- Какие библиотеки Python использовали для модульного тестирования?
- С какими инструментами для документирования кода в Python вы знакомы?
Наиболее популярный фреймворк в веб-разработке на основе Python — это Django. Какие вопросы на знание фреймворка задать во время собеседования:
- Как правильно обработать URL в Django?
- Что такое Django Rest Framework?
Full-stack разработчик на Python будет закрывать задачи уже и на бэкенде, и на фронте. Набор навыков такого разработчика дополнительно включает знание JavaScript, JS-фреймворков, основ HTML и CSS. Как спросить об этом на собеседовании:
- Как вы организуете свой код?
- В какой ситуации лучше использовать прототипное наследование?
- Какой фреймворк используете в работе?
- Как бы вы ускорили сайт (производительность JS-прокрутки)?
DevOps-инженер: Python с его многообразием доступных библиотек и инструментов помогает автоматизировать выполнение задач на разных этапах DevOps и улучшить жизненный цикл программного продукта.Примеры вопросов DevOps-инженеру:
- Веб-сервис начал медленно работать. По какому алгоритму вы бы искали причину?
- С какими инструментами оркестрации контейнеров вы знакомы?
- Как отсортировать массив данных в Python?
Инженер в сфере Machine Learning или Data Scientist не обязан знать, например, фреймворк Django, но должен хорошо знать основы: математику, линейную алгебру, статистику. Для проведения вычислений разработчик должен уметь пользоваться библиотеками, например, Matplotlib и Seaborn для визуализации данных, Pandas для быстрого анализа, SciPy для научных вычислений. Как спросить об этом на собеседовании:
- В чём разница в ошибках первого и второго рода?
- Какие допущения применяются к линейной регрессии?
- Какие модули и библиотеки вы привыкли использовать в работе?
- В чём преимущества NumPy перед списками Python?
- В зависимости от специализации компании необходимо задать вопросы о визуализации данных, обработке языка, распознаванию изображений.
- Наконец, предложите кандидату решить конкретную задачу — например, систематизировать данные и сделать выводы.
Как определить грейд программиста?
Функции, которые может взять на себя разработчик, должны соответствовать потребностям компании. Но как определить уровень кандидата? С какой проблемой справится и middle, а когда нужен senior Python-разработчик? Опыт работы — не единственное различие между junior, middle и senior программистом.
Молодой специалист знает синтаксис языка, может написать несложные решения, часто при выполнении задачи, тратит время на освоение инструментов.
В какой ситуации не стоит нанимать Junior-разработчика?
- Если в компании нет того, кто смог бы курировать и направлять джунов, регулярно проводить code review.
- Если компания ищет быстрое решение и не готова растить специалистов, так как junior-разработчик тратит на выполнение задачи больше времени, чаще совершает ошибки и учится в процессе.
- Если вам требуется специалист, который уже несколько раз прошёл весь жизненный цикл разработки.
Middle-разработчик берется за более сложные проекты и способен работать самостоятельно, знает не только язык, но и умело обращается с дополнительными инструментами.
Senior-разработчик способен смотреть на проект на уровне архитектуры, предлагать технические решения, которые будут актуальны в долгосрочной перспективе. Главная ценность — опытный разработчик может адаптировать теорию и стандартные решения под задачи компании и используемый стек.
Во время собеседования предложите разработчику решить практический вопрос, с которым он может столкнуться, работая в вашей компании. Спросите о сложностях, которые возникали в других проектах, к каким решениям он тогда пришел. Это покажет ход мыслей специалиста, как он подступается к проблемам, мыслит ли глобально, как свободно владеет инструментами. Еще вопросы об опыте:
- Какую роль вы занимали в работе над последним проектом?
- Что было самым сложным, а что не вызывало затруднений?
- Участвовали ли вы в принятии продуктовых и технических решений?
Инхаус-команда, аутсорс или аутстафф?
Инхаус — это найм программиста в штат: вы размещаете вакансию, разбираете отклики, собеседуете в несколько этапов потенциальных сотрудников. Аутстафф и аутсорс выигрывают в скорости — например, когда стоит задача как можно быстрее запустить MVP продукта. Или когда в штате нет CTO, который сможет протестировать кандидатов и отладить процессы в команде.
Главный вывод — чем более длительную работу с разработчиком вы планируете, тем выгодней становится найм в штат, несмотря на все его сложности. И наоборот: чем меньше срок, тем менее выгодно брать в штат.
Как выбрать агентство
Первое, на что стоит обратить внимание, — участвует ли агентство в митапах, конференциях или других мероприятиях по своему профилю.
Второе — есть ли кейсы, похожие на те задачи, которые нужно решить вам.
Третье — отзывы других компаний, которые уже работали с агентством. Если нет отзывов на сайте, запросите их. Если нет вообще — аккуратней.
Четвёртое — попросите шаблон договора. В идеале он должен гарантировать вам уровень разработчика middle или выше, плюс там должны быть прописаны штрафы за срыв сроков, за некачественное выполнение задачи, за плохой код. Вы должны быть в безопасности.
Пятое — обратите внимание на список услуг и возможностей. Маленькие агентства обычно предоставляют только один вид разработчиков и один тип оплаты. Более крупные могут предложить разработчиков из разных сфер (backend-, frontend-разработка, аналитика, дизайн) и технологий (Ruby, Python, Golang, Rust, Javascript, Typescript и т.д.), по одному или целой командой, в том числе с тимлидом или техническим директором.
Почему для аутсорса разработчиков на Python нужно выбрать Evrone
Команда Evrone специализируется на продуктовой разработке и за годы работы мы смогли собрать отличную команду Python программистов, которые готовы делиться своей экспертизой и подходом, быстро включаться в проект и делать ваш продукт лучше каждый день.
Процесс найма Python разработчика
Процесс найма зависит от того, есть ли у вас команда, которую просто нужно дополнить python разработчиком на аутсорсе или же вы хотите собрать команду с нуля и обращаетесь к нам за технической экспертизой.
Расскажите о вашем проекте, и мы будем рады помочь в его разработке и развитии
Мы не просто выполняем функцию разработки, а закрываем бизнес-задачу от и до: предоставляем экспертизу и грамотный менеджмент для создания нового продукта или совершенствования действующих технологий. Напишите нам, чтобы обсудить ваш проект и решения на Python, которые могут помочь его развить.