Python — высокоуровневый язык программирования со строгой динамической типизацией. Его создали 30 лет назад для повышения читаемости кода и производительности разработчиков. Одно из главных достоинств «питона» — расширяемость языка, то есть большое количество различных подключаемых модулей, дающих разработчику дополнительные возможности. Python удобен, стабилен, достаточно мощен и поэтому широко распространен. На нём создано множество проектов, от самых маленьких, до самых крупных. В своих продуктах Python активно используют такие лидеры IT-мира, как Alphabet, Facebook и Dropbox. Он может применяться и как главный язык программирования, и просто как средство для разработки расширений. Его используют при создании веб-приложений, видеоигр, микрочипов, прикладного ПО.
Благодаря мощности, гибкости и популярности Python, программисты, умеющие его использовать, очень ценятся на рынке. Их активно ищут компании из самых разных сфер, и им нередко приходится конкурировать с целью их привлечения. Хорошему HR-у (или руководителю небольшой фирмы) стоит знать, как найти, привлечь и проверить таких разработчиков. От этого может зависеть успешность всего проекта.
1. Нужно знать, где разработчики Python проводят свое свободное время
Есть несколько специализированных ресурсов. Вести поиск разработчиков, особенно если вам нужны люди с опытом и знанием английского, можно на CodingForums, Dream.In.Code, Devshed. Там они общаются и узнают о последних технологиях. Также активное и отзывчивое сообщество разработчиков сформировалось на Python.org. Очень многих разработчиков (опять же, со знанием английского) можно увидеть на Stack Overflow. Python там один из главных тегов, с ним связано больше 1,5 млн обсуждений. Разумеется, не стоит забывать стандартные ресурсы вроде LinkedIn, хотя все разработчики там уже очень заспамлены предложениями, особенно если у них есть какой-никакой опыт.
Для поиска «мест обитания» русскоязычных разработчиков можно использовать Habr и (чуть меньше) VC. При этом не обязательно платить и публиковать везде свои вакансии. Нередко более эффективной стратегией становится грамотное общение HR/руководителей в существующих ветках (это касается и Stack Overflow, и других популярных порталов). Так постепенно завоёвывается внимание и доверие пассивных кандидатов. Вы создаете себе имя, и дальше, если кому-то нужна будет работа, они могут вспомнить о вас. Даже простое проявление интереса к теме идущих разговоров — уже плюс для рекрутера. Ну а если у вашей компании уже есть имя — это плюс вдвойне.
2. Стоит понимать проблемы и задачи «питонистов»
Чтобы, как минимум, не наступать им на больные мозоли. Любой рекрутер должен хотя бы знать, что Питон — это зачастую нетривиальные и сложные задачи. В том числе:
- Создание и поддержка больших масштабируемых систем. Для этого Python в своем бэкенде используют, например, Facebook и Google. Питон — удобный механизм для обработки и отсылки данных.
- Автоматизация критически важных аспектов бизнеса. Python часто помогает автоматизировать задачи, которые иначе требуют огромных объемов ручного труда людей. Реализация таких моментов на Python — это и выгодно, и помогает бизнесу избавиться от критических человеческих ошибок.
- Безопасность пользователей и сохранность их информации. Роль разработчиков на проекте — зачастую бэкенд, поэтому и такие аспекты также находятся под их ответственностью. Иногда это может стать больной темой, особенно когда безопасности не уделяется должного внимания.
3. Нужно представлять, что для Python-разработчиков важно при смене работы
Чтобы нанимать нормальных разработчиков, недостаточно найти их и хоть немного разбираться в специфике их работы. Нужно понимать, когда они «созрели» и готовы перейти на новое место. И что может их соблазнить (за исключением, понятное дело, зарплаты и престижа фирмы).
Чтобы понять, как Python-программисты оценивают предлагаемые им карьерные возможности, тех. директор Shoobx Стефан Рихтер указал три главных фактора. По его мнению (которое также приводит Stack Overflow), именно эти аспекты зачастую анализируют специалисты при проверке вакансий и предложений. В то время как рекрутеры зачастую не уделяют им достаточного внимания.
- Возможность узнавать новое. Хорошие программисты на Python, как и все разработчики, стремятся к постоянному саморазвитию. Они ценят новые знания, поскольку это их хлеб и их будущая ценность на рынке. «Питонистам» важно, чтобы они могли развиваться в своей новой команде, а не просто использовать знания из старых библиотек.
- Настоящее использование Python в процессе работы. Удивительно, но некоторые вакансии упоминают Python, хотя язык там нужен только для реализации простых скриптов, а остальное время приходится работать с другими инструментами.
- Поддержка Open Source в компании. По мнению Стефана Рихтера, если команда разработчиков в компании помогает развивать открытые библиотеки, сильные (и просто увлеченные) программисты будут более заинтересованы работать в ней. К тому же, это поднимает уровень текущих сотрудников.
4. Нужно понимать, какие вопросы задавать на интервью
Конечно, самое важное. Иначе в команду наберется непонятно кто. Если своего крутого Python-разработчика нет, или он занят другими делами, интервью вполне реально провести и без особых знаний. Достаточно знать правильные вопросы.
По данным SoftwareTestingHelp, вот наиболее часто задаваемые вопросы для Python джуниоров и даже мидлов. Не обязательно иметь широкие познания в питоне, такие вопросы может задавать даже HR. Не обязательно погружаться в код. Можно просто видеть, насколько человек плывёт в вопросе. И заготовить ответы для себя на будущее:
- Может ли Python использоваться для программирования веб-клиентов и веб-серверов? Для какой разработки он лучше подходит?
- Как вы реализуете JSON, учитывая, что Python лучше подходит для разработки серверной части проекта.
- Назовите 3-4 преимущества Python перед другими языками сценариев, например, Javascript.
- Подходит ли Python для программирования в структурированном стиле?
- Что такое PIP в мире Python?
- Расскажите о List, Tuple, Set и Dictionary, объясните, в каких ситуациях каждый из этих типов может быть использован.
- Как циклы For и While отличаются в Python, и когда вы выбираете, какой использовать?
- Как вы используете массивы в Python?
- Какие типы данных есть в Python, и сколько байтов содержат integer и decimal?
- Какой, на ваш взгляд, лучший способ анализировать строки и находить шаблоны в Python?
- Какие базы данных поддерживаются в Python?
- Какое назначение функции _init_() в Python?
- Какое значение имеет параметр «self» в методе объекта? Обязаны ли мы всегда называть этот параметр «self»?
- Чем лямбда-функция отличается от нормальной функции в Python?
- Как в Python выполняется обработка исключений?
- Что является отправной точкой выполнения кода в Python?
- Назовите некоторые из важных модулей, доступных в Python.
- Какие модули Python можно использовать для измерения производительности кода вашего приложения?
- Как вы запускаете подпроцессы в основном процессе приложения Python?
- Поскольку Python больше подходит для серверной части приложения, очень важно, чтобы в коде вашего сервера были реализованы потоки. Как можно достичь этого в Python?
- В чем разница между старым и новым стилем классов в Python?
- Нужно ли вызывать определенные методы для уничтожения памяти, выделенной в Python?
- Что такое PEP8? (соглашение о кодировании, которое представляет собой набор рекомендаций о том, как делать код более читаемым).
- Какие варианты реализации шаблона Singleton на Python вы знаете?
- Что такое new()? Чем он отличается от init()? В какой последовательности они выполняются?
- Как Вы тестируете код? (tox, nose, unittest, travis) Что такое mocking?
- Можно ли создать приложение на основе GUI пользователя на Python для работы на стороне клиента?
- Какие вы знаете структуры данных в Python? Какие из них являются mutable/immutable? (dict, list, set, tuple, frozen_set, default_dict и другие)
- Что такое *args и *kwargs?
Конечно, Rubrain.com принимает к себе в базу только разработчиков уровня senior и выше, и только этих вопросов для тестирования продвинутых знаний недостаточно. Тут нужно дополнительно:
- минимум 5 лет опыта работы с Python;
- знание JavaScript, HTML5, CSS3;
- знание библиотек ORM;
- опыт с инструментами визуализации данных — Tableau, Qlik, и языками запросов SAS/SQL/Hive;
- хорошие навыки модульного тестирования и отладки, а также понимание ограничений потоков в Python;
- умение работать с AWS или другими облачными сервисами;
- знание технологий Big Data, таких как HDFS, Pig, Spark и Scala.
Вы также можете просто воспользоваться услугами Rubrain.com. Мы уже отобрали лучших программистов для вас! У нас вы можете получить готовую команду разработки проекта, нанять команду разработчиков Python, Java, NET, iOS, Android. Мы предлагаем аутсорс и аутстафф для проектов любой степени сложности.