Обложка статьи «Что работодатели ждут от Junior Python-разработчика»

Что работодатели ждут от Junior Python-разработчика

Python — один из самых популярных языков программирования. В рейтинге Stack Overflow 2020 года он занимает третье место. Его легко освоить, а на рынке нет дефицита вакансий. По запросу «Python-разработчик» HeadHunter предлагает 3340 вакансий за месяц. Python используют при создании веб-приложений, в машинном обучении и Data Science. Анастасия Новикова, автор курса «Python-разработчик» в Яндекс.Практикуме, делится опытом прохождения интервью на позицию Python-разработчика и рассказывает, что работодатели обычно ждут от начинающих специалистов.

Анастасия Новикова

Анастасия Новикова, автор курса «Python-разработчик» в Яндекс.Практикуме

Какое нужно образование?

Обычно резюме на Junior Python-разработчика подают выпускники или студенты последних курсов технических и математических специальностей. Профильное дополнительное образование, пройденные курсы на Stepik, Coursera или других платформах станут плюсом к основному образованию. Если вы хотите работать в Data Science, то бонусом будут магистерская степень или аспирантура, наличие публикаций и выступления на конференциях.

Работодатели иногда готовы брать на junior-позицию кандидатов без соответствующего высшего образования. Для таких соискателей, как правило, проводят дополнительные испытания, внимательнее относятся к тестовому заданию и учебным проектам в портфолио.

Как проверяют опыт работы?

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

Завершённые проекты можно опубликовать, например, в личном профиле на GitHub или создать сайт-портфолио. На собеседовании вы сможете рассказать, какая перед вами стояла задача, какие технологии вы выбрали и почему. Дополнительные проекты помогут не только прокачать навыки, но и выделиться среди других кандидатов.

Какие soft skills пригодятся в первую очередь?

Помните сериал «Кремниевая долина» и его главного героя Ричарда Хендрикса, CEO «Пегого Дудочника»? Он был отличным программистом, но ему явно не хватало умения общаться с людьми, работать в команде и руководить сотрудниками. На практике одного умения решать поставленные задачи с помощью технических навыков бывает недостаточно, успешность кандидата зависит также от его социальных качеств.

Ответственность, стремление к профессиональному росту, умение управлять рабочим временем и работать в команде — это базовые soft skills, которые нужны практически на любой должности в ИТ-сфере.

От junior разработчика дополнительно ждут умение быстро осваивать новый материал, вникать в суть задач, понимать требования и быть готовым к рутинным задачам. На собеседованиях junior-специалистов могут спросить: «Как вы относитесь к рутинным задачам?» — потому что их работа часто включает монотонные процессы, не всегда творческая. Работодатель не хочет вас напугать — скорее хочет убедиться в том, что вам не станет скучно на этой позиции через несколько месяцев и вы не захотите уйти. Ответ на такой вопрос можно сформулировать так: «Сейчас подобные задачи для меня — возможность получить опыт, на них я смогу отработать свои навыки, чтобы в будущем браться за более сложную работу».

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

Изучите перед собеседованием свои будущие задачи, продукты и проекты, с которыми работают в компании, этап развития компании (например, стартап или ИТ-гигант), корпоративную культуру, отзывы сотрудников, местоположение, условия работы. И выберите среди всего то, что вам действительно важно. Это может быть простое «это компания, где я могу полностью реализовать свои компетенции и продолжить карьеру» или «мне кажется, мой опыт отлично подходит под требования» и перечислите ключевые навыки.

Какие технические навыки необходимы?

Основное требование — знание языка программирования Python. Но иногда на позицию Python-разработчика рассматривают специалистов с опытом в других популярных языках (например, C++, Java, Go).

На собеседованиях работодатель может проверить общую ИТ-грамотность, например спросить, как устроен компьютер или как работает интернет. Чаще всего от кандидатов ждут знания алгоритмов и структур данных. В некоторых компаниях есть отдельный этап, или даже несколько этапов отбора, посвященных проверке этого навыка. Про то, зачем разработчику изучать алгоритмы и структуры данных, мы уже писали раньше.

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

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

Что повторить перед собеседованием

Алгоритмы и структуры данных (без привязки к языку программирования). Желательно знать, как устроены массивы, связные списки, хеш-таблицы, множества, бинарные деревья поиска, графы. Какая сложность (в O-нотации) основных операций при работе с ними. Могут также задать вопросы по базовым алгоритмам. Например, попросить рассказать про основные алгоритмы сортировки, бинарный поиск или способы обхода графов.

Структуры данных в Python: примеры применения, различия, преимущества и недостатки. Будьте готовы отвечать на вопросы про числовые типы данных, строки, списки, кортежи, множества и словари. Преимуществом будет знание и опыт применения встроенных в язык структур данных, например, OrderedDict или defaultdict из модуля collections.

Изменяемые и неизменяемые типы данных в Python: в чём разница между ними, примеры использования. Часто просят просто перечислить изменяемые и неизменяемые типы данных, которые вы знаете. Могут предложить решить задачу и спросить, какой тип или какую структуру данных вы бы выбрали для её решения и почему.

Декораторы: что это такое и как они устроены. Могут, например, попросить написать код декоратора для измерения времени работы функции или декоратора с параметром. Полезным будет знание functools.wraps.

Контекстные менеджеры: что это такое и для чего используют. Могут попросить реализовать контекстный менеджер для работы с файлами, аналогичный встроенному open().

Генераторы и итераторы: что это такое, для чего они используются, какая между ними разница. Могут, например, попросить написать генератор чётных чисел или чисел Фибоначчи.

GIL: зачем он нужен и как работает. Вопрос на собеседовании может быть такой: «Могут ли в Python одновременно выполняться больше одного потока?» От начинающих специалистов обычно не требуют знаний про GIL, но они могут выгодно выделить вас на фоне других кандидатов.

Как устроен один из популярных фреймворков, например Django или Flask. Хорошо, если вы понимаете его сильные и слабые стороны. Могут попросить спроектировать базу данных для приложения, написать несколько запросов с помощью ORM или на чистом SQL.

Как работает интернет: понимание модели/моделей OSI/TCP IP, основных протоколов. Популярный вопрос из этого раздела: «Что происходит, когда в поисковой строке вбиваешь google.com?»

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

Потоки, процессы, асинхронное программирование. Например, в чём разница между потоком и процессом, или какие способы межпроцессного взаимодействия вы знаете.

Логические и математические задачи: для их решения может понадобиться школьная математика, базовые знания комбинаторики, теории вероятностей, умение работать с числами в разных системах счисления.

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

Что почитать начинающему Python-разработчику

«Чистый код: создание, анализ и рефакторинг», Мартин Роберт К. «Грязный» код мешает развитию проекта и компании, потому что требует значительных ресурсов на поддержку. В книге много реальных примеров, которые научат отличать плохой код от хорошего. Она пригодится всем начинающим разработчикам, читается легко. Возможно, не всё получится сразу применить на практике, но когда вы столкнётесь с ситуацией, упомянутой в книге, вам будет легче найти решение.

«Грокаем алгоритмы. Иллюстрированное пособие для программистов и любопытствующих», Адитья Бхаргава. Думаете, алгоритмы это сложно? Книга убедит вас в обратном. В ней подробно разбирается каждый алгоритм: будет понятно даже ребёнку. Воспроизвести их на любом языке программирования не составит труда.

«Программируем на Python», Майкл Доусон. Автор книги — опытный разработчик. Он помогает освоить фундаментальные принципы на примере создания простых игр. Так вы получите базовые навыки и сможете пополнить портфолио. Для более продвинутых специалистов книга может показаться скучной, главная аудитория — всё-таки начинающие разработчики.

«Python на практике», Марк Саммерфилд. Знания из книги помогут лучше подготовиться к собеседованиям. Подходит начинающим и опытным программистам. В основе четыре темы: повышение элегантности кода с помощью паттернов проектирования, повышение быстродействия с помощью распараллеливания и компиляции Python-программ (Cython), высокоуровневое сетевое программирование и графика.

«Изучаем Python», «Программируем на Python», «Python. Карманный справочник», Марк Лутц. Это несколько книг известного инструктора по Python. Их лучше читать в оригинале. Они помогают восполнить пробелы в знаниях и разобраться в сложных вещах. В «Карманном справочнике» вы найдёте основные сведения о типах данных и операторах, специальных методах, встроенных функциях, которые пригодятся при работе с Python.

«Python. Книга Рецептов», Дэвид Бизли, Брайан К. Джонс. Пособие для начинающих и опытных разработчиков, которое поможет создавать легкочитаемый, оптимизированный и поддерживаемый код. 15 глав охватывают основные темы Python, каждая глава содержит конкретные «рецепты» с примерами кода, которые вы сможете использовать в своих проектах.

«Алгоритмы: построение и анализ», Томас Кормен, Чарльз Лейзерсон, Рональд Ривест, Клиффорд Штайн. Это справочник и пособие по алгоритмам, которое пригодится и начинающим разработчикам, и сеньорам, и тимлидам. Описания даются на простом языке, главы независимы друг от друга, можно изучать в любом порядке и объёме.

Вакансии в тему: