Интервью с Python-разработчиком

Добавлено: 18/06/2018
4251

Python — это высокоуровневый язык программирования общего назначения, он имеет множество сфер применения: это и веб-разработка, и back-end для мобильных приложений, и анализ больших данных, также Python удобен для работы с нейронными сетями и ML.

 

 

 

Python — один из самых популярных языков программирования на рынке IT. Помимо универсальности, есть ещё несколько причин растущей популярности Python: это отличный язык для начинающих программистов, он прост в понимании и использовании. Python-разработчики сейчас очень востребованы и ощутим недостаток специалистов в данной сфере.

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

  • Уверенное знание Python.
  • Знание одного или нескольких фреймворков: Django/Flask/Pyramid/Tornado.
  • Базовые знания HTML, CSS, знание JavaScript.
  • Git.
  • Знание SQL, опыт работы с БД, умение использовать ORM.
  • Умение работать в команде, понимание различных методологий разработки (опционально).

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

Однако для того, что мы называем промышленной разработкой, знания одного лишь языка недостаточно. Чтобы стать хорошим и, главное, востребованным на рынке Python-разработчиком, необходимо обладать большим кругозором в самых разных областях. К примеру, в нашей компании мы ждем от разработчиков хорошего уровня следующих hard skills:

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

Базы данных. Хороший разработчик должен иметь опыт работы с различными СУБД, как реляционными, так и NoSQL, и понимать, для каких задач та или иная технология лучше подходит. И да, мы требуем уверенного знания SQL, потому что этот язык построения запросов в том или ином виде сейчас используется не только в традиционных реляционных базах, но и во многих современных решениях для работы с большими данными, таких как ClickHouse или InfluxDB. И одним Django ORM здесь не обойтись!

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

Тестирование. Без юнит-тестов хотя бы business-critical частей проекта можно априори считать, что функциональность не работает. Поэтому важно не только уметь пользоваться фреймворками для написания и запуска тестов, но и организовывать тесты так, чтобы их можно было писать быстро, а сам процесс доставлял удовольствие.

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

Евгений Слезко, CTO в Marilyn

Вопросы для интервью:

  • Следует уточнить, с какими базами данных работал специалист, под какую операционную систему он пишет.
  • Интересуется ли front-end частью и готов ли с ней работать. Это важно знать на случай, если команда состоит из full-stack разработчиков.
  • Если вы общаетесь с junior специалистом, то не лишним будет выяснить, где человек учился или учится. Зачастую в требованиях к разработчикам фигурирует высшее техническое образование.
  • Полезно будет узнать, писал ли собеседуемый юнит-тесты, и как в целом было построено тестирование на предыдущих местах работы. Некоторые не готовы или не привыкли этим заниматься.

ПОДПИШИТЕСЬ НА БЛОГ