Что должен знать Python-разработчик без опыта: дорожная карта джуна

Файлы в Python Про IT

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

Речь про роль бэкенд/general-purpose Python-разработчика начального уровня. Отдельные направления (Data Science, ML, DevOps) требуют своей математики и инструментов и здесь не разбираются — это осознанное сужение темы.

С чего начинать и как понять, что готов

Главный критерий готовности к отклику — не «прошел курс», а «есть 1-2 проекта на GitHub, которые я могу объяснить». Поэтому дорожную карту стоит строить вокруг артефакта: небольшого приложения, которое запускается, покрыто тестами и лежит в репозитории. Каждый навык ниже добавляет к этому артефакту недостающий кусок.

Честный ориентир по срокам: на базовый уровень уходит несколько месяцев регулярных занятий, а не «N дней». Скорость зависит от бэкграунда и от того, сколько часов в неделю вы реально пишете код, а не читаете о нем.

Дорожная карта: что учить по шагам

  1. Синтаксис, типы и структуры данных. Переменные, условия, циклы, функции. Встроенные типы: int, float, str, bool, None. Коллекции: список, кортеж, множество, словарь — когда какую брать. Отдельно разберите изменяемость: список изменяемый, кортеж и строка — нет; это частый вопрос на собеседовании.
  2. ООП. Класс и объект, атрибуты и методы, __init__, наследование, инкапсуляция, полиморфизм. Здесь же — зачем нужны исключения и как их обрабатывать через try/except.
  3. Стандартная библиотека. Не заучивать целиком, а знать, где искать: collections, itertools, datetime, pathlib, json, logging. Умение читать документацию модуля важнее, чем помнить сигнатуры.
  4. Виртуальное окружение и pip. python -m venv, активация окружения, установка пакетов через pip, фиксация зависимостей в requirements.txt. Без этого проект не воспроизвести на чужой машине.
  5. Git. Базовый цикл: init, add, commit, push, ветки, merge, разрешение простого конфликта. Работодатель ожидает, что код лежит в репозитории с внятной историей коммитов.
  6. Основы SQL. SELECT, WHERE, JOIN, INSERT/UPDATE/DELETE, первичный и внешний ключи, простые индексы. Достаточно уровня «спроектировать пару таблиц и написать запрос к ним».
  7. Тестирование. Модуль unittest или библиотека pytest, понятие юнит-теста, проверка через assert. Тесты в проекте — сильный сигнал зрелости для джуна.
  8. Один веб-фреймворк. Не оба сразу: возьмите Django (батарейки в комплекте: ORM, админка, аутентификация) либо FastAPI (легкий, для API, асинхронный). Доведите до одного рабочего приложения.
  9. Чтение чужого кода. Навык, который недооценивают: на работе вы больше читаете, чем пишете. Тренируйте на открытых репозиториях — разберите, как устроен небольшой проект, и попробуйте добавить в него мелкую правку.

Django или FastAPI: что взять первым

Выбирайте по задаче, а не по «моде». Оба фреймворка живые и активно развиваются на 2026 год.

Критерий Django FastAPI
Тип приложения сайт с интерфейсом, админкой, формами API/микросервис, отдача JSON
Что в комплекте ORM, админка, аутентификация, шаблоны роутинг, валидация через Pydantic
Асинхронность поддержана, но не в центре асинхронность в основе
Порог входа больше концепций сразу быстрее до первого эндпоинта
Когда брать нужен полноценный веб-продукт нужен быстрый бэкенд под фронт/мобилку

Для первого проекта берите тот, что ближе к вашей идее приложения. Второй фреймворк добавите позже — переносить знания между ними несложно.

Минимальный проект, который уже показывает навыки

Сначала — целиком рабочий пример, который копируется и запускается, потом разбор. Небольшой трекер задач: функции, словари, список, точка входа.

# tasks.py
def add_task(tasks, title):
    tasks.append({"title": title, "done": False})
    return tasks

def complete_task(tasks, title):
    for task in tasks:
        if task["title"] == title:
            task["done"] = True
    return tasks

if __name__ == "__main__":
    todo = []
    add_task(todo, "learn git")
    complete_task(todo, "learn git")
    print(todo)

Запуск python tasks.py выведет в консоль:

[{'title': 'learn git', 'done': True}]

Здесь видны сразу несколько базовых навыков: функции, работа со словарем и списком, изменяемость (список меняется на месте), защита точки входа через if __name__ == "__main__".

Теперь добавим тест — именно он отличает учебный скрипт от мини-проекта:

# test_tasks.py
from tasks import add_task, complete_task

def test_complete_marks_done():
    todo = add_task([], "learn git")
    complete_task(todo, "learn git")
    assert todo[0]["done"] is True

Команда pytest -q в папке проекта выведет строку вида 1 passed. Если тест падает — pytest покажет, какое значение пришло вместо ожидаемого, и это подскажет, где ошибка в логике.

Осталось положить проект под контроль версий. В код-блоке используются обычные ASCII-дефисы, чтобы команды копировались без правок:

git init -b main
git add tasks.py test_tasks.py
git commit -m "add task tracker with tests"

Флаг -b main задает имя основной ветки явно: так поведение не зависит от версии Git и локальных настроек.

Какие проекты класть в портфолио

Портфолио из 2-3 завершенных проектов сильнее одного огромного недоделанного. Ориентиры:

  • CLI-утилита (парсер, конвертер, трекер) — показывает работу с файлами, аргументами, обработкой ошибок.
  • Веб-приложение или API на выбранном фреймворке с одной-двумя таблицами в базе — показывает связку «код плюс SQL».
  • Клиент к чужому API (получить данные, разобрать JSON, сохранить) — показывает работу с сетью и внешними сервисами.

К каждому проекту приложите README: что делает, как запустить, какие технологии и почему. На собеседовании спросят именно это.

Мягкие навыки, которые проверяют у джуна

Технику дополняют личностные качества — для новичка их иногда ценят выше, потому что научить с нуля проще того, кто умеет учиться:

  • способность быстро осваивать новое и не бояться незнакомых задач;
  • умение задавать уточняющие вопросы и вникать в суть задачи;
  • аккуратность в работе с чужим кодом и код-ревью;
  • базовая коммуникация: спокойно объяснить, что сделал и где застрял.

Отдельно готовят ответ про рутину: часть работы джуна — однотипные задачи. Адекватный ответ — что на старте это способ набрать опыт, а не повод скучать.

Как искать первую работу

Порядок действий, а не общие слова:

  1. Соберите резюме под роль: стек из дорожной карты, ссылки на GitHub с проектами, короткое сопроводительное под конкретную вакансию.
  2. Откликайтесь на позиции junior и intern, а также на стажировки — для входа без опыта это рабочий путь.
  3. Готовьтесь к типовым вопросам: структуры данных, изменяемость, ООП, основы SQL, базовые команды Git и терминала.
  4. Заранее изучите компанию и продукт — на собеседовании часто спрашивают, почему вы откликнулись именно сюда.
  5. После отказа спрашивайте обратную связь и закрывайте пробелы — это ускоряет следующий заход.

Рынок начального уровня конкурентный, требования к джунам за последние годы выросли. Это не повод сдаваться, а причина делать ставку на портфолио и умение объяснять свой код.

Если не получается: типовые симптомы и что делать

  • «Прошел курс, но не могу написать программу сам». Симптом пассивного обучения. Лечение: перестаньте смотреть, начните писать — берите маленькую задачу и доводите до рабочего кода без подсказок.
  • «Учу вширь, ничего не доделываю». Слишком много тем параллельно. Лечение: заморозьте один проект как цель и учите только то, что нужно для него прямо сейчас.
  • «Проект работает у меня, но не запускается у других». Не зафиксированы зависимости. Лечение: соберите requirements.txt, проверьте установку в чистом виртуальном окружении.
  • «Много откликов, ноль ответов». Часто дело в резюме без пруфов. Лечение: добавьте ссылки на GitHub с README и подгоняйте отклик под вакансию.
  • «Заваливаю технические вопросы». Пробелы в базе. Лечение: прогоните вслух структуры данных, изменяемость, ООП и SQL на своих же примерах из проектов.

Выводы

  • Junior Python-разработчик без опыта — это умение довести небольшую задачу до рабочего кода в репозитории, а не знание всего языка.
  • Учите по шагам: основы и структуры данных, ООП, стандартная библиотека, venv/pip, Git, SQL, тесты, один фреймворк, чтение чужого кода.
  • Портфолио из 2-3 завершенных проектов с README и тестами — главный аргумент на входе.
  • Мягкие навыки (обучаемость, коммуникация, спокойное отношение к рутине) для новичка весят наравне с техникой.
  • Первую работу ищут откликами на junior/стажировки, подготовкой к типовым вопросам и работой над обратной связью после отказов.

Где применяется / связь с практикой

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

Освойте тему на практике

Разложить эти шаги в последовательную программу с практикой и ревью помогает курс Python Basic от Otus: основы языка, структуры данных, ООП и первые проекты в портфолио. Перед стартом полезно сходить на открытые уроки Otus — посмотреть формат и оценить, какой уровень старта вам подходит.

FAQ

Нужно ли высшее техническое образование, чтобы взяли джуном?
Не обязательно. На вход смотрят на навыки и портфолио. Диплом бывает плюсом в отдельных направлениях (например, Data Science с упором на математику), но для general-purpose роли решают код и умение его объяснить.

Сколько проектов должно быть в портфолио для первого отклика?
Достаточно двух-трех завершенных и запускаемых проектов с README. Одно доделанное приложение с тестами ценнее пяти брошенных заготовок.

Django или FastAPI учить первым?
Тот, что ближе к вашей задаче: Django — для полноценного сайта с админкой, FastAPI — для легкого API. Знания переносятся, второй фреймворк осваивается быстрее.

OTUS Журнал