Привет! Это команда Яндекс Практикума. В первой половине года мы провели исследование рынка Python-разработки и узнали, как меняются требования работодателей и к чему стоит готовиться джуниору при трудоустройстве. Рассказываем самое важное.

Что мы делали

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

Для этого мы:

  • провели интервью с экспертами — CEO, руководителями и синьор-разработчиками из 12 компаний, включая стартапы, средние продуктовые компании и больших игроков в ретейле, кибербезопасности и других сферах;

  • провели интервью с выпускниками — девятью трудоустроенными Python-разработчиками, окончившими курс «Python-разработчик»;

  • изучили вакансии на hh.ru — обращали внимание на количество предложений и требуемые навыки.

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

Большинство вакансий для Python-разработчиков относится к бэкенд-разработке, поэтому статья ориентирована в основном на такой профиль специалистов. Но мы считаем, что материал будет полезен любому Python-разработчику вне зависимости от направления.

Что мы узнали

Устроиться на первую работу сложно, но возможно

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

«Если джун приходит не из разработки, а “из поля”, то его очень тяжело оценить. И по итогу приходится тратить ресурсы на какое-то время его работы, в которое ты смотришь, тянет он или не тянет», — основатель и техлид в MedTech-проекте

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

«Джунов на самом деле нанимать просто, потому что к ним небольшие требования. Сложность скорее в объёме резюме. Даже в последний набор мне пришлось обработать где‑то сотню», — тимлид в EdTech-проекте

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

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

Устроиться на старте сложно, но перспективы для джуниоров на рынке есть. Выпускники Практикума получают карьерную поддержку на протяжении шести месяцев после обучения — в это время они готовят резюме, учатся проходить собеседования, откликаются на партнёрские вакансии и усиливают портфолио реальным опытом в Мастерской. 73% выпускников, получивших поддержку, нашли работу за шесть месяцев.

FastAPI — уже must have

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

«FastAPI потихоньку становится таким стандартом индустрии, как раньше Flask был, именно в качестве микрофреймворка», — тимлид в EdTech-проекте

Также понимание FastAPI проверяют по портфолио, на собеседованиях и в тестовых заданиях.

«Опять же, учитывая то, что джуны чуть завышают свои скилы, я бы FastAPI оставил must have… Хорошо, если пример уже есть у соискателя в GitHub», — CEO в компании-разработчике цифровых решений

Даже если в компании не используют FastAPI, знание фреймворка будет плюсом.

«Ну, сам FastAPI для нас не так важен, у нас Django и немножко Flask. Но если человек знает FastAPI, это хорошо», — ведущий бэкенд-разработчик в крупном IT-интеграторе

Устроиться без знания FastAPI пока ещё возможно, если в компании используют только Django, но это сильно ограничивает возможности джуниора в поисках работы. Поэтому, чтобы стать универсальным специалистом, рекомендуется освоить и Django, и FastAPI. Тем более, нанимающие отмечают, что разобраться с FastAPI не так сложно.

Асинхронное программирование — почти must have

Требования у работодателей различаются. У одних понимание основ асинхронного программирования пока в числе nice to have навыков. Его отсутствие не мешает найму.

«У нас такого требования нет. Для общего понимания это, конечно, нужно, но это не стоп‑фактор, поскольку у нас асинхронность особо не используется», — ведущий бэкенд-разработчик в крупном IT-интеграторе

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

«Современные фреймворки уже почти все используют асинхронные паттерны, и это уже must», — тимлид в EdTech-проекте

Общий вывод можно сформулировать примерно так: асинхронное программирование — must have для компаний, в которых оно активно используется. В других его понимание, как правило, не требуется, но добавляет очков при найме, помогает выделиться и говорит о более глубоком понимании кода.

Pytest — однозначно must have

Джуниор должен уметь писать тесты с помощью Pytest и Unittest. При этом достаточно базовых знаний тестовых фреймворков.

«Ну хотя бы написать тест, обвязку‑то ладно. Продемонстрировать умение работать с Pytest — это важно!» — тимлид в EdTech-проекте

На собеседовании у джуниора могут спросить, какие есть виды тестов и чем они различаются, использовал ли он Pytest и может ли что-то написать с его помощью. Об этом говорят работодатели — выпускники про такие вопросы не упоминали. Также навык могут проверить при просмотре портфолио.

«Он [джуниор] должен был это хотя бы попробовать. Проект в портфолио с парочкой тестов — это минимум», — разработчик в компании, которая занимается обработкой данных для ИИ

Если навыки тестирования не проверят на собеседовании, они могут понадобиться на первых этапах работы.

Работа с нейросетями — не must have

Умение работать с ChatGPT, Copilot и другими моделями не требуется, но иногда нанимающие спрашивают про опыт работы с нейросетями, так как в будущем это может сэкономить время на выполнение некоторых задач.

Пул таких задач неширокий — ИИ доверяют рутинную работу, такую как рефакторинг и оптимизация кода, объяснение новых тем (вместо Stack Overflow) и написание тестов.

«Нейросети можно использовать в работе. В первую очередь, чтобы отрефакторить или оптимизировать код, потому что какой-нибудь Claude с этим достаточно неплохо справляется. Ну и самое главное для джуниора — закидывать код и писать “объясни”, то есть использовать нейросеть как справочник», — разработчик в компании, которая занимается обработкой данных для ИИ

Иногда работодатели интересуются опытом использования нейросетей не в разработке, а на бытовом уровне.

«Если сказать по‑простому, нейросети сейчас — это как Google раньше. Причем тут тоже требуется не просто вбить запрос и увидеть какой-то ответ, а уметь находить именно нужный ответ точно и быстро. Это тоже своего рода навык. Умение “гуглить” нового поколения», — синьор-разработчик в IT-компании в ретейле

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

Что ещё не нужно: match/case, WebSocket, GraphQL, Kubernetes и gRPC

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

Вот какие требования не подтвердились.

  • match/case. Единицы работодателей считают знание конструкции необходимым, но большинство с ними не согласны. Некоторые нанимающие эксперты и сами не знают, что это такое.

  • WebSocket. Неплохо, если джуниор знаком с протоколом, но навык тянет скорее на nice to have, а его отсутствие не является барьером при найме.

  • GraphQL. По мнению работодателей, достаточно специфичная и редкая технология. Знать её джуниору необязательно. В вакансиях также не упоминается.

  • Облачные технологии. Скорее, лежат в области DevOps. Джуниоры, как правило, с ними не работают. Но понимание контейнеризации и умение работать с Docker — must have.

  • Kubernetes. Не требуется, Docker важнее. Но если в компании работают с Kubernetes, знание основ будет плюсом.

  • gRPC. Нанимающие эксперты считают фреймворк слишком специфичным для джуниора.

Скилсет джуниора: на что рассчитывают работодатели

Набор основных навыков, необходимых любому джуниору, включает шесть пунктов.

  • Python

  • Django (или FastAPI)

  • Базы данных (SQL)

  • Docker

  • Git

  • Linux

Если есть база из навыков выше, всё остальное можно доучить в процессе.

Более широкий и близкий к требуемому в большинстве вакансий скилсет выглядит так.

  • Язык программирования: Python (важно понимание ООП)

  • Фреймворки: Django, FastAPI, реже Flask и aiohttp

  • Работа с API: REST API, HTTP, Django REST Framework

  • Linux: терминал в Unix и Mac

  • Контейнеризация: Docker (Docker Compose)

  • Архитектура: базовое понимание серверов и сетевых интерфейсов

  • Базы данных: SQL, ORM (например, SQLAlchemy или Django ORM)

  • Контроль версий: Git, GitHub или GitLab

  • Трекеры задач: Jira или аналоги

  • IDE: PyCharm

  • Написание тестов: Pytest или Unittest

Ниже — навыки из числа nice to have, которые могут заинтересовать работодателя как дополнительные или требуются только в некоторых компаниях.

  • Асинхронное программирование: понимать, как работает и когда применять asyncio, знать, что такое event loop

  • Кэширование и очереди: Redis, Celery, RabbitMQ

Не менее важны софтскилы.

  • Адекватность

  • Ответственность

  • Инженерное (техническое) мышление

  • Способность к обучению

  • Заинтересованность в самообучении и развитии

  • Коммуникабельность, умение работать в команде

  • Мотивация и «горящие глаза»

  • Самостоятельность

  • Проактивность, инициативность

  • Совпадение по ценностям, идеям и «вайбу» с командой, в которую устраивается джуниор

Как устроен наём джуниоров

Обычно процесс состоит из трёх этапов: скрининга резюме, тестового задания и собеседования. Разберём каждый из шагов подробнее.

Скрининг резюме

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

Нанимающие эксперты смотрят проекты в GitHub, обращают внимание на оформление и стилистику кода, актуализацию и прогресс, учитывают применяемые технологии. Хорошо, если проекты близки к тем, которыми занимается компания-работодатель.

«Я смотрю на GitHub. Не особо разбираюсь, что конкретно человек писал, так как на это нет времени, но если проект хорошо оформлен, есть “рюшечки”, статистика, интересные коммиты, документация — это всё равно выделяет человека», — техлид в компании в сфере кибербезопасности

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

Тестовое задание

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

Задачки могут быть совсем простые, чтобы отсеять совсем ничего не знающих новичков. Например, «напишите программу, которая делает ZIP-архив».

«Первое задание чисто на знание базы Python. Что такое декораторы, как работать с типами. Прям вот entry level», — тимлид в EdTech-проекте

Это подтверждают и выпускники.

«Первое было совсем простое — поднять в FastAPI приложение. А второе — реализовать в нём бизнес-логику. Купи, продай, положи в корзину, удали из корзины. Самое обычное», — выпускник Практикума

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

«Прикольно давать задания, связанные с Википедией. Там всегда есть два варианта решения: либо парсить странички, либо воспользоваться API. Кандидат, который нам подходит, возьмёт API», — тимлид в EdTech-проекте

Самая распространённая ошибка на этом этапе — это неправильный расчёт времени и сил. Джуниоры часто просят мало времени на выполнение тестового, а потом не успевают. Или хотят показаться лучше и берут сложный фреймворк, в котором не разбираются, хотя задачу можно решить более простыми методами.

Выпускники говорят, что сталкивались со сложностями, только когда задание было не под вакансию — например, на уровень мидл-разработчика или вовсе для системного администратора. Или когда приходилось сталкиваться с чем-то совсем незнакомым, например, Redis или WebSocket.

Собеседование

Собеседование также можно поделить на три условные составляющие: теория, практика и проверка софтскилов.

Теория

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

  • Python и ООП. Работодатели «копают» в глубину, поэтому важны не заученные ответы, а понимание языка. Спрашивают про декораторы и генераторы, алгоритмическую сложность операций с различными структурами данных, классы, наследование, работу с атрибутами, статические методы, принципы SOLID. Могут открыть «100 вопросов по Python» и спросить что-то оттуда.

    «Я люблю спрашивать про копирование объектов и вообще управление памятью в Python, про контекстные менеджеры, как они создаются и что там внутри, как работает... Это мои вопросы со звёздочкой. Я их задаю, чтобы понять глубину. Вот человек знает про абстрактные классы, а знает ли он про протокол? Потом спрашиваю про инкапсуляцию в Python и вообще в целом ООП», — синьор-разработчик в IT-компании в ретейле

  • Фреймворки. Задают вопросы по Django, FastAPI.

  • API. Проверяют понимание принципов построения API, знание HTTP.

  • Docker. Спрашивают про опыт работы с Docker, проверяют понимание его работы, умение запустить Docker Compose.

  • Базы данных. Проверяют знание синтаксиса SQL, основ нормализации, индексов. Спрашивают про опыт работы с SQL и ORM.

Также спрашивают про технологии, применяемые в конкретной компании.

Практика

Практическая часть часто касается тестового задания или проектов в GitHub — например, нанимающий разработчик может попросить джуниора поискать более оптимальное решение. Так проверяется и навык работы с кодом, и умение принимать обратную связь.

Также практические навыки проверяют, спрашивая о предыдущем опыте: какие проекты выполнял кандидат, над какими продуктами работал, чем именно занимался самостоятельно и в команде.

Иногда дают задание: написать декоратор или SQL-запрос, предсказать результат и объяснить работу фрагмента кода.

Софтскилы

Софтскилы проверяются по ходу всего интервью — нанимающий разработчик оценивает поведение и настроение кандидата, его мотивацию и вовлечённость, способность рассуждать и искать альтернативные решения, принимать обратную связь. Иногда дополнительные вопросы не требуются, в иных случаях работодатель может спросить кандидата о ситуациях (например, конфликтах) на прошлых местах работы.

Выводы

Подводим итоги.

  • Работодатели отмечают, что наём джуниоров — ресурсозатратный процесс, поэтому он происходит не часто. Предпочитают нанимать опытных разработчиков или открывать стажировки с периодичностью раз в полгода или год.

  • Выпускники говорят, что поиск работы занимает 2–6 месяцев, а самый сложный этап — прохождение скрининга резюме. Компании требуют опыт коммерческой разработки, но не очень понятно, где начинающему специалисту его взять.

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

  • Джуниорам важно понимать, как Python работает «под капотом», так как нанимающие требуют глубоких знаний, а не заученных ответов.

  • Главные навыки — это Python, базы данных (SQL), Docker, Git и Linux. Если вакансия на бэкенд-разработку, дополнительно Django (или FastAPI). Это базовый минимум, который проверяется и без которого не возьмут на работу. Остальные навыки в целом нормально доучить в процессе, если есть хорошая база из навыков выше.

  • Кроме глубины, важна широта знаний — многие инструменты, например Celery, Kubernetes, Redis, RabbitMQ, стоит знать хотя бы на уровне «слышал(а)», «знаю, для чего применяется».

  • В компаниях всё чаще используют асинхронное программирование, поэтому важно понимать, что это такое. Растёт спрос на асинхронные фреймворки (FastAPI) и инструменты (Asyncio, Celery).

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

  • Работодатели смотрят проекты в GitHub. Важно, чтобы они были хорошо оформлены, так как портфолио могут оценить вместо тестового задания и обсуждать на собеседовании.

Комментарии (0)