Python roadmap, который ведёт к работе, начинается не со списка библиотек. Он начинается с ветки: backend, данные и скрипты, иногда автоматизация тестов. «Выучить Python» как цель в 2026-м в CIS даёт резюме без роли — и отклики, на которые не отвечают.

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

Коротко:

  • Сначала роль и пять вакансий, потом стек. Иначе roadmap расползается в «все фреймворки».
  • База: типы, функции, ошибки, модули, виртуальное окружение, Git, тесты на своём коде — не «синтаксис за выходные».
  • Backend-ветка в CIS чаще всего: HTTP API, PostgreSQL, Docker. FastAPI и Django — разные продукты, не чекбоксы в одном резюме без проекта.
  • Данные — другая карта: SQL в центре, Python как клей. Не путайте с ML-инженером.
  • Критерий готовности — репозиторий, который можно запустить, и рассказ, что сломалось. Не сертификат и не «прошёл 40 часов».

Сначала ветка, не язык

Откройте вакансии Python-разработчика и прочитайте десять заголовков. Часть — backend (Django, FastAPI, Flask). Часть — аналитика и скрипты. Часть — автотесты. Редко — «просто Python». Если смешать ветки в одном файле, получится человек, которого некуда положить в воронке.

Выберите одну на 90 дней. Сменить потом можно, но проект должен быть одним. Backend: сервис с БД и тестами. Данные: повторный расчёт и SQL, Python не главная строка. Автотесты: API/UI-набор с отчётом, не «знаю pytest» без кейсов. Как вообще входить в разработку на этом языке — в как стать Python-разработчиком; здесь — порядок учёбы под найм.

Не выбирайте ветку по «что популярнее в интернете». Выбирайте по тому, какие объявления вы готовы читать без боли и какой проект реально доведёте. Удалённый junior на Python в русскоязычных командах чаще backend или данные, чем «ML с нуля».

База языка, без которой вакансии врут вам

До фреймворка нужно читать чужой код и не теряться. Практический минимум:

  • структуры, срезы, словари, генераторы на уровне «пишу сам», не «видел в шпаргалке»;
  • функции, аргументы, исключения, логирование вместо print в «проде учебного сервиса»;
  • модули, пакеты, venv, зависимости в файле, а не глобальный Python в системе;
  • чтение traceback и pdb/отладчик в IDE;
  • Git: ветка, коммит с смыслом, pull request самому себе, если нет команды.

ООП зубрите ровно настолько, насколько требует ветка. Django без классов не проживёт. Для скриптов аналитика классы часто лишние. Не сидите месяц на «солид и паттерны» до первой сущности в БД — это популярный способ не дойти до проекта.

Асинхронность, метаклассы, сложные декораторы — не вход. Если в вакансии FastAPI и вы не понимаете, зачем async на I/O, разберёте на проекте, не в отрыве. Типы: аннотации полезны, mypy не обязателен в первую очередь, если вы ещё путаетесь в обычных ошибках.

Backend-ветка

Типичный junior backend на Python в CIS: принять запрос, проверить данные, записать в PostgreSQL, отдать JSON, покрыть пару негативных сценариев тестом, собрать в Docker. Очереди, Kafka, Kubernetes — плюс или middle, не чек-лист новичка.

Порядок, который стыкуется с вакансиями:

  1. HTTP: статус-коды, идемпотентность на пальцах, что такое клиентская и серверная ошибка.
  2. Один фреймворк. FastAPI — если в ваших пяти вакансиях он есть и вам ближе API. Django — если админка, ORM, шаблоны, «классический» продукт. Карты: FastAPI roadmap и Django roadmap.
  3. PostgreSQL: схема, миграции, транзакция, «почему N+1». Сырой SQL на уровне понимания, не только ORM.
  4. Тесты: хотя бы на хендлер создания сущности и на отказ валидации. pytest достаточно.
  5. Docker: сервис + БД поднимаются одной командой. Детали — в Docker roadmap.

Не ставьте в резюме Django и FastAPI равным весом, если один — курс, второй — три дня. Основной фреймворк тот, в котором лежит проект. Второй — «касался», если готовы так сказать.

Ветка данных и скриптов

Если цель — аналитик или «Python для отчётов», roadmap другой. Центр — SQL и метрики, Python — pandas/скрипт выгрузки. Не учите FastAPI «на всякий случай» вместо JOIN. Навыки роли — в что должен знать Data Analyst, SQL — в SQL roadmap.

Достаточный Python здесь: чтение файлов, merge, даты, повтор запуска, а не микросервисы. Если вакансии смешанные «аналитик-разработчик», честно выберите перевес и покажите его в заголовке резюме. Смешанный skills без проекта путает ATS и человека.

Что не учить в первые 90 дней

Список, который чаще всего раздувает roadmap и не закрывает junior:

  • второй и третий фреймворк «для широты»;
  • Kubernetes, Terraform, «микросервисная архитектура» без одного сервиса;
  • нейронные сети при цели backend;
  • все облака сразу: AWS, GCP, Yandex Cloud как три навыка с курса;
  • алгоритмы на уровне олимпиады, если ваши вакансии не про спортивное программирование. Структуры данных на пальцах — да, LeetCode как единственная учёба — нет.

Алгоритмы имеют смысл как разминка к лайвкодингу, если в вакансии его прямо обещают. Тогда 3–4 типовые задачи в неделю, не вместо проекта. Иначе вы придёте с пустым GitHub и «решал 200 задач» — для CIS junior backend это слабый пакет.

Пример 1. 90-дневный проект под backend junior

Сервис «заказы»: пользователи, позиции, статусы, простой лимит. Стек: Python, FastAPI или Django — один, PostgreSQL, pytest, Docker Compose, README.

  1. Дни 1–15. Модель данных, миграции, создание заказа, ошибка при пустой корзине. Без фронта: HTTP-клиент или минимальный скрипт.
  2. Дни 16–40. Список с фильтром по статусу, пагинация, идемпотентный ключ на создание «на пальцах», логирование. Два теста на счастливый путь, два — на отказ.
  3. Дни 41–65. Docker Compose: приложение + Postgres. Переменные окружения, не пароль в репозитории. Короткий сценарий «как накатить миграции».
  4. Дни 66–90. README на 15–20 строк: зачем сервис, как запустить, что сделано вами, чего нет (нет оплаты, нет очереди). Один разбор бага в issues или в файле DECISIONS.md: «почему отказался от такого JOIN». Резюме по резюме Python-разработчика.

Откликаюсь на junior Python backend. Собрал сервис заказов: FastAPI, PostgreSQL, тесты на создание и валидацию, Docker Compose. Коммерческого стажа нет. На созвоне могу разобрать схему и почему пагинация сделана так. Репозиторий: [ссылка]. Готов к тестовому на 4–8 часов в том же формате, что в вакансии.

Это письмо закрывает роль лучше, чем «прошёл roadmap Python 2026». Черновик можно собрать в генераторе письма — вставьте ссылку и стек из README, не общий абзац про язык.

Пример 2. Было / стало в плане учёбы

Было. Неделя 1: синтаксис. Неделя 2: ООП. Неделя 3: Django + Flask + FastAPI. Неделя 4: pandas + ML. Неделя 5: Docker + k8s. Результат: ни одного запускаемого сервиса.

Стало. Недели 1–2: язык + Git + venv на маленьких упражнениях внутри будущего сервиса. Недели 3–8: один фреймворк и БД. Недели 9–11: тесты и Docker. Неделя 12: README, резюме, 10 откликов на вакансии, где стек совпадает.

Второй план скучнее и приводит к тестовому. Первый выглядит как «полный стек» и проигрывает человеку с одним скучным репозиторием.

Критерии «готов откликаться»

Честный чек-лист:

  • проект поднимается с нуля по README за 15 минут у другого человека (хотя бы у вас на чистой машине);
  • есть тесты, которые падают, если сломать валидацию;
  • вы можете 10 минут рассказывать, что бы сделали иначе;
  • в skills только то, что есть в репозитории или чем готовы пользоваться на тестовом;
  • заголовок резюме совпадает с веткой: Python backend / Python скрипты / QA automation — не «Python developer / data / ML».

Если пунктов нет, ещё рано слать 50 откликов. Допилите артефакт. Как описывать проект в файле — в как описать проекты в резюме. Проверка файла — cv-review.

На созвоне часто просят написать функцию или разобрать баг. Это не экзамен по всему языку. Готовьте свой проект и 5–6 типовых вопросов: мутабельность аргументов, скоупы, чем список отличается от кортежа, зачем виртуальное окружение. Подборка — в вопросах на собеседовании Python.

Как читать вакансию, чтобы roadmap не разъехался

Откройте объявление и выпишите три корзины: must-have, плюс, шум. Must-have — то, без чего вас не позовут: язык, фреймворк, БД. Плюс — очереди, облако, английский. Шум — «знание ООП», «желание развиваться», пять синонимов Agile. Roadmap строится по первой корзине. Вторая — одна штука в проекте, если успеете. Третья — не учится отдельно.

Пример. Вакансия: Python, FastAPI, PostgreSQL, Docker, «будет плюсом Kafka, AWS». Ваш план на 90 дней не включает Kafka. В README напишите «очереди нет». На созвоне это звучит взрослые, чем «Kafka знаю с курса». Если must-have — Django, а вы готовили FastAPI, не переименовывайте проект в письме. Либо две-три недели на тонкий Django-модуль, либо другой кластер объявлений.

Фильтры каталога помогают не смешивать ветки: смотрите Python backend отдельно от аналитики. Живой срез — в каталоге Python-вакансий. Для входа без стажа иногда честнее стажировка, чем штат с тремя годами «желательно» — как искать такие входы, в стажировке в IT и в поиске работы без опыта.

Что писать в резюме и чего ждать на тестовом

Пули проекта — не стек списком. «Сервис заказов: создание заказа с валидацией, фильтр по статусу, миграции, pytest, Compose». Одна строка про ограничение: «оплаты и очереди нет». Skills совпадают с README. Как собрать файл целиком — в как составить резюме и в навыках в IT-резюме.

Тестовое junior Python чаще всего: маленький API или скрипт плюс тесты, иногда SQL. Ограничивайте объём тем, что просят. Не приносите микросервис, если дали одну сущность. Не оставляйте пароль в репозитории тестового. Если дают 4–8 часов — лучше узкий работающий контур, чем «почти архитектура». Разбор жанра — в тестовом задании.

На лайвкодинге могут попросить функцию, разбор traceback или маленький хендлер. Держите под рукой свой проект как якорь: «в сервисе заказов я ловил такую ошибку вот так». Это спокойнее, чем вспоминать учебник. Общая рамка созвона — подготовка к интервью.

Частые вопросы

Нужно ли учить алгоритмы до проекта?

Нет, если ваши вакансии — продуктовый backend без явного лайвкодинга. Да, точечно, если в описании «будет секция на алгоритмы». Даже тогда проект не отодвигается на «после 300 задач».

Python 3.x — какую версию ставить?

Ту, что в документации вашего фреймворка и что поднимается у вас локально без боли. Не коллекционируйте версии. В резюме достаточно «Python 3», если вы не сидите на мёртвом 2.7 — в 2026-м это уже сигнал проблемы, не навык.

Стоит ли сразу TypeScript/Go «для широты»?

Нет. Один язык до первой работы. Второй стек имеет смысл, когда есть оффер или явная смена роли. Иначе вы снова без проекта.

Как быть, если в вакансии Django, а я делал FastAPI?

Не откликайтесь пачкой, притворяясь Django-разработчиком. Либо соберите маленький модуль на Django за 2–3 недели, либо целитесь в FastAPI-роли. Честное «основной FastAPI, Django читал документацию» проходит только если вакансия гибкая. Смотрите формулировку, не надежду.

Нужен ли английский на junior Python в CIS?

Чтение документации — да. Созвоны на английском — только если вакансия про международную команду. Не блокируйте учёбу языка ожиданием C1. Документация фреймворка всё равно на английском.

Когда смотреть стажировки, а не junior?

Если проект сырой и вы не тянете тестовое 4–8 часов. Стажировка — отдельный поиск, не строка «готов работать за опыт» в письме на штат. Формат — в стажировке в IT.

Что сделать сейчас

Выпишите пять вакансий одной ветки и вычеркните из roadmap всё, чего в них нет. Начните сервис или скриптовый контур сегодня, не «модуль ООП». Через 90 дней у вас должен быть запускаемый репозиторий, а не конспект.

Когда README готов, соберите резюме под эту ветку и ищите совпадение стека в каталоге Python-вакансий. Roadmap без откликов на подходящие роли — это снова курс, только длиннее.