Как пройти собеседование на Python-разработчика: что важно знать и уметь
Python — язык общего назначения, поэтому его можно использовать не только в web-разработке, но и при обработке больших данных. Он стабильно занимает весомую нишу в сферах Data Engineering и Data Science. Порог входа в Python считается низким, поскольку синтаксис отличается простотой и лаконичностью, что привлекает начинающих программистов.

«Готов ли я к интервью?» Неверно! «Вопрос в том, готово ли интервью ко мне?»
В команде NIX собеседования по направлению Python проходят по двум специализациям — Web и Data Engineering. В этой статье Team Lead of Python Department Алексей Новиков и Group Lead of Python Department Евгения Богомаз расскажут, что поможет успешно пройти собеседование на позицию Python-разработчика. Им слово.
На что мы обращаем внимание в резюме в первую очередь
Junior
Ключевые моменты, которые нас интересуют в резюме, зависят от позиции, на которую мы рассматриваем соискателя. Логично, что у джуниора не будет длинного послужного списка с массой интересных и сложных проектов. Поэтому в резюме начинающих разработчиков обращаем внимание на образование кандидата, учится ли он сейчас и на каком курсе или уже закончил вуз.
Часто к нам приходят студенты первого курса, не все из которых представляют, как будут совмещать учебу и занятость на проекте. Со своей стороны мы даем возможность брать учебный отдых на время сессии, а также стараемся составить гибкий график, чтобы у начинающего специалиста было достаточно времени и на учебу в вузе, и на практику в IT-проекте.
Также из резюме на позицию Junior важно понимать, какими знаниями обладает человек, какие ресурсы использует для обучения. Если есть наработки в VCS (GitHub, GitLab etc), обязательно смотрим на код и во время собеседования уточняем у соискателя, почему он использовал тот или иной подход.
Не поленитесь добавить в резюме пару строк о себе. Это очень помогает узнать цели и стремления человека, его увлечения.
Ведь мы же понимаем, что позиция джуниора подразумевает активное развитие навыков в первые месяцы работы, что влечет за собой постоянную коммуникацию. Невозможно построить эффективное общение, не узнав человека.
Middle/Senior
Здесь уже приоритеты в резюме для нас другие. Нам нужно удостовериться, что перед нами опытный специалист, понять, в каких сферах он работал, с какими технологиями и в каких ролях. В этом случае обращаем внимание и на то, сколько мест работы человек сменил за определенный промежуток времени.
Утрированно «пять компаний за полтора года» — уже может быть звоночком, что кандидат не приживется и у нас.
Далее смотрим, работает ли соискатель сейчас или покинул предыдущий проект. Так мы понимаем, когда рассчитывать на выход кандидата к нам, если он успешно пройдет собеседование.
На собеседовании больше внимания уделяем конкретным инструментам, а также опыту в принятии решений, построении архитектуры приложения и софт-скиллам. Зачастую специалисты такого уровня выступают в роли лида проекта. Человеку нужно уметь эффективно выстраивать коммуникацию в команде, правильно доносить цели и задачи, решать конфликтные ситуации, быть готовым к обучению новичков.
Отдельно хотелось бы выделить ребят, которые приходят к нам с фриланса. Основная мотивация для них — получение опыта взаимодействия с другими участниками команды. Это позволяет им расти как специалистам. Обычно на фрилансе их код никто не ревьюит, им не с кем посоветоваться и получить обратную связь. В нашей команде все иначе: если ты новичок, тебе всегда поможет ментор, более опытные разработчики поделятся опытом и подскажут, как решить новую для тебя задачу. Да и матерым специалистам мы всегда рады, ведь каждый привносит в проект свою экспертизу, свое видение. Так мы учимся друг у друга.
Что важно знать из теории?
Позиция разработчика на Python, как и на любом другом языке программирования для бэкенда, предполагает:
- уверенные знания самого языка;
- понимание клиент-серверной архитектуры;
- знание протокола HTTP;
- умение работать с системой контроля версий;
- наличие навыков работы с SQL;
- понимание принципов проектирования баз данных.
Наша задача на собеседовании не завалить человека, а сориентировать его — в чем он уже силен и какие знания и навыки сразу сможет использовать в проекте, а чему мы поможем научиться. Всего знать нельзя.
К тому же, на собеседовании кандидаты часто нервничают и могут что-то забыть. Мы это понимаем. Поэтому для нас главное — увидеть ход мыслей человека.
Кроме теории, мы даем задачки, которые можно решить устно, без написания кода, просто проговорить план решения. Зачастую в этих тасках предусмотрено несколько вариантов, и нам всегда интересно наблюдать, какое решение выберет кандидат. На этом этапе хорошо видно, насколько он владеет базой. Это наши «фирменные» задачи, которые не нагуглишь 🙂
Подготовка к собеседованию: о чем часто забывают соискатели
Сегодня у многих на слуху профессии Data Engineer и Data Scientist, в которых Python используется для обработки больших данных, а также в машинном обучении.
Когда кажется, что все по плечу
Быть такими специалистами «стильно, модно, молодежно», но порой соискатели не представляют, с чем буду иметь дело и каким базовым стеком технологий им нужно обладать.
Наш совет: не поленитесь заранее почитать о позиции, на которую претендуете.
Проектирование структуры реляционной базы данных — одна из наиболее распространенных тем, которую начинающие Python-разработчики мало изучают. При подготовке к собеседованиям многие уделяют внимание синтаксису СУБД, запросам. Но в разговоре с соискателями оказывается, что они не до конца понимают, какие нужны таблицы для построения эффективного хранилища данных, какие связи между ними нужно создать, какие ограничения установить.
Довольно часто встречаем ребят, у которых есть опыт взаимодействия с базами данных, исключительно с использованием ORM. Но этих знаний обычно недостаточно в реальных проектах, где нужно строить сложные запросы и оптимизировать работу базы данных. А в нашем деле умение правильно спроектировать БД крайне важно.
Нехватка определенных знаний — не приговор
Волшебного вопроса, по которому сразу становится ясно, отказать человеку или позвать на повторное собеседование, у нас нет. Это «восьмое» чувство, помогающее нам определить, насколько соискатель показал себя, каким видит свое профессиональное развитие в будущем и настроен ли он на сотрудничество именно с нами.
Второй шанс мы даем очень часто. Каждый получает фидбек после собеседования (в конце разговора или спустя несколько дней). Мы стараемся похвалить за то, что получилось, и подсвечиваем моменты, которые стоит выучить или подтянуть. Иногда результаты подготовки превосходят наши ожидания. Например, пришел к нам однажды соискатель на позицию Data Engineer. На тот момент у него не хватало знаний, и мы предложили ему подучиться и вернуться уже более подготовленным. В таких случаях мы всегда делимся материалами для самообучения, которые подготовили наши эксперты.
Кандидат подтянул знания, пришел повторно, но только уже на позицию веб-разработчика. Сейчас он успешно пишет серверную часть одного из приложений, а в планах — стать фулстек-разработчиком. Так что, случаи разные бывают.
Как показывает практика, далеко не всегда техническая составляющая скиллов является решающей. Важную роль играет потенциал, который виден (или не виден) у соискателя.
Если кандидат умеет логически мыслить и находить правильное решение задачи, обладает аналитическим складом ума — это дает ему весомое преимущество среди других претендентов на вакансию.
Пусть даже он не имеет глубоких познаний в технологиях. Опыт — дело наживное, а вот научить человека логически мыслить — намного сложнее.
И напоследок — несколько аргументов в пользу изучения Python
Python — дружелюбен для новичков и прост в изучении для более опытных специалистов. Вам он точно пригодится, если хотите работать с бэкэндом или мечтаете о карьере в Big Data. В случае с Python все ваши проекты будут уникальны. В каждом их них есть свои фишки и челленджи, с которыми вы справитесь при помощи готовых или собственных кастомных решений.
Хотите освоить базовую теорию по направлению Python? Мы собрали для вас полезные материалы, которые помогут подготовиться к собеседованию. Ловите!
Полезные ссылки о Python и его экосистеме
Книги
- Марк Лутц «Изучаем Python» — «библия Python разработчика. Читается на всех этапах изучения Python.
- Python Tricks: The Book — очень классная маленькая книжка рассказывает о разных фишках питона.
- Grokking Algorithms — книжка о алгоритмах, в простых словах, но примеры на питоне.
- Django Admin Cookbook – книга познакомит с основами работы с Джанго Админкой..
- Django Book – книга в электронном виде с примерам
Курсы
- Основы программирования на Python от Coursera;
- Погружение в Python – второй курс на Coursera;
- Программирование на Python на Stepik;
- Python: основы и применение — более углубленное продолжение изучения Python;
- An Introduction to Interactive Programming in Python — курс от MIT;
- Алгоритмы на Python 3 от Тимофея Хирьянова:
Интересно почитать
- Много всего интересного;
- Django: The Web framework for perfectionists with deadlines — познакомиться с величайшим фреймверком на Python.
Дайджесты
Полезные ссылки о базах данных
Книги
- К. Дж. Дейт. Базы данных. Проектирование, реализация и сопровождение. Теория и практика — теория и практика по базам данных, не стоит пугаться количеству страниц в книге.
- MySQL. Notes for Professionals book, которая покрывает почти все основные операции.
- PostgreSQL. Notes for Professionals book по изучению реляционных баз данных на примерах Postgres.
Online Tutorial
GIT+LINUX
- Pro Git — а большего и не нужно, дальше только практика.
- Основы Linux от основателя Gentoo в 4 частях.
Немного об Apache Spark
Если вы хотите освоить не только азы Python, но и окунуться с головой в Big Data & Data Engineering, то мы предлагаем вам познакомиться с Apache Spark — одним из основных инструментов для обработки и анализа больших данных.
Официальная документация
Нет ничего лучше, чем официальная документация, откуда ты получишь представление об основных компонентах Spark, узнаешь, что такое распределенные вычисления, какие структуры данных использует Spark, а также поймешь значения таких определений, как: Lazy Evaluation, Fault Tolerance, Catalyst Optimizer, UDF, Transformations, Actions, Wide & Narrow Operations, Partitions, Shuffle, Broadcast и многое другое:
- https://spark.apache.org/;
- https://spark.apache.org/docs/latest/quick-start.html;
- https://spark.apache.org/docs/latest/api/python/.
Книги
- Основы Big Data. Концепции, алгоритмы и технологии — это отличный старт, чтоб разобраться в такой интересной теме как Big Data.
- Learning Spark, 2nd Edition — Apache Spark стал де-факто стандартом для обработки и анализа больших данных.
- High Performance Spark — это книга о том, как эффективно использовать Spark.
- Hadoop: The Definitive Guide — эта книга познакомит с экосистемой Hadoop, как основополагающей технологией хранения и обработки больших данных.
Курсы и видео
- Youtube канал Databricks — основной контрибьютор Apache Spark.
- PySpark Tutorial for Beginners — курс по PySpark от Edureka.
Сообщить об опечатке
Текст, который будет отправлен нашим редакторам: