С чего всё началось
В июне 2023 года мне было 28 лет, и я работал менеджером по продажам в строительной компании. Зарплата была приемлемая,
но каждый день я чувствовал, что занимаюсь не своим делом. Программирование привлекало меня давно: ещё в университете я
ковырялся с HTML и пытался делать сайты на WordPress, но дальше этого не зашло.
Переломный момент наступил, когда коллега автоматизировал отчётность отдела с помощью Python-скрипта. То, на что у нас
уходило 3 часа в пятницу, стало занимать 2 минуты. Я попросил его показать код — и увидел, что это не так сложно, как
казалось. В тот же вечер я установил Python и написал свой первый Hello, World!.
Через 4 месяца и 12 дней я получил оффер на позицию Junior Python Developer с зарплатой 95 000 рублей. Вот как это было.
Мой путь обучения: что учил и в каком порядке
Первый месяц: основы языка
Я начал с бесплатного курса на Stepik «Поколение Python: для начинающих». Проходил по 2–3 урока в день, на каждый тратил
около часа. Параллельно решал задачи на Codewars — начал с 8 kyu (самый простой уровень) и к концу месяца добрался до 6
kyu.
Что освоил за первый месяц:
- Переменные, типы данных, операторы
- Условия, циклы, функции
- Списки, словари, множества, кортежи
- Работа с файлами (чтение, запись)
- Основы ООП (классы, наследование)
Главное открытие месяца: программирование — это не про математику, а про логику и системное мышление. Мне, как бывшему
менеджеру, это было ближе, чем я ожидал.
Второй месяц: веб-разработка и базы данных
Выбор фреймворка вызвал муки. Django казался слишком большим и сложным, Flask — слишком маленьким. В итоге я начал с
Django, потому что по нему было больше вакансий на HeadHunter. Позже, когда узнал про FastAPI, пожалел, что не начал с
него — он проще для понимания и современнее. Если вы сейчас в начале пути, рекомендую прочитать сравнение FastAPI,
Django и Flask, чтобы сделать осознанный выбор.
Что освоил:
- SQL: SELECT, JOIN, GROUP BY, подзапросы
- PostgreSQL и работа с ним из Python
- Django: модели, вьюхи, шаблоны, формы, ORM
- Django REST Framework для создания API
- Базовая аутентификация и авторизация
Третий месяц: инструменты и практика
Понял, что знать фреймворк мало — нужны инструменты экосистемы:
- Git и GitHub на уровне уверенного пользователя
- Docker (базовый уровень: Dockerfile, docker-compose)
- Тестирование с pytest
- Linux: базовые команды, SSH, работа с сервером
- Основы HTTP, REST, API-дизайн
Четвёртый месяц: проекты, резюме, поиск работы
Этот месяц я полностью посвятил портфолио и подготовке к собеседованиям. Параллельно начал откликаться на вакансии.
Проекты в портфолио: что я сделал
Портфолио — это то, что отличает вас от тысяч других джуниоров, прошедших те же курсы. Вот проекты, которые я
подготовил:
Проект 1: Агрегатор новостей
Что делает: Парсит новости с 5 RSS-источников, сохраняет в базу данных, отображает на веб-странице с фильтрацией по
категориям и поиском.
Стек: Django, PostgreSQL, Celery, Redis, BeautifulSoup.
Почему это хороший проект: Показывает работу с внешними данными, фоновыми задачами, полнотекстовым поиском.
Работодатели видят, что вы умеете не только CRUD делать.
Проект 2: REST API для управления задачами
Что делает: Полноценный API для таск-трекера. Регистрация и авторизация по JWT, CRUD для проектов и задач,
назначение исполнителей, фильтрация по статусу и приоритету, пагинация.
Стек: Django REST Framework, PostgreSQL, pytest, Docker.
Почему это хороший проект: Чистый API без фронтенда — именно то, что делает backend-разработчик.
Swagger-документация, 45 тестов с покрытием 87%.
Проект 3: Telegram-бот для учёта расходов
Что делает: Пользователь отправляет сообщение вида «Кофе 350» — бот сохраняет расход. Можно запросить статистику за
день, неделю, месяц. Графики расходов по категориям.
Стек: aiogram, SQLite, matplotlib.
Почему это хороший проект: Telegram-боты — это реальная задача, с которой сталкиваются многие компании. Проект
показывает умение работать с асинхронным Python и сторонними API.
Проект 4: Скрипт автоматизации отчётов
Что делает: Собирает данные из Google Sheets и CRM через API, формирует Excel-отчёт с графиками, отправляет на email
руководителю каждый понедельник.
Стек: openpyxl, gspread, smtplib, schedule.
Почему это хороший проект: Это не учебный проект — я сделал его для реальной задачи на предыдущем месте работы.
Работодатели особенно ценят решения реальных проблем. Подобные скрипты мы подробно описали в статье про автоматизацию на
Python.
Подготовка резюме
Что включил в резюме
- Заголовок: Junior Python Developer (не «начинающий программист»)
- О себе: 3 предложения — кто я, что умею, что ищу
- Навыки: Python, Django, DRF, PostgreSQL, Git, Docker, pytest, Linux
- Проекты: 4 проекта с кратким описанием и ссылками на GitHub
- Предыдущий опыт: Менеджер по продажам — но переформулировал через призму аналитики и работы с данными
Чего не делал
- Не указывал все курсы подряд — только 2 основных
- Не писал «быстро обучаюсь» — вместо этого показал проекты
- Не использовал шаблонные фразы — каждый пункт содержал конкретику
Поиск работы: стратегия и цифры
Где искал
- HeadHunter — основной источник, 80% откликов
- Хабр Карьера — качественные вакансии, но меньше для джуниоров
- Telegram-каналы — Python Jobs, Junior Developer Jobs, Dev Jobs
- LinkedIn — для иностранных компаний и удалёнки
Статистика поиска
| Метрика |
Количество |
| Отправлено откликов |
67 |
| Получено ответов |
14 |
| Приглашений на собеседование |
8 |
| Пройдено собеседований |
6 |
| Тестовых заданий |
4 |
| Офферов |
2 |
Конверсия откликов в ответы — 21%. Это нормально для джуниора. Многие компании просто не отвечают, и к этому нужно быть
готовым.
Что помогло получить ответы
- Сопроводительное письмо — под каждую вакансию я писал 3–4 предложения о том, почему хочу именно в эту компанию и
как мой опыт решает их задачи
- GitHub с реальными проектами — HR и тимлиды переходили по ссылкам, это видно по статистике
- Отклик в первые 24 часа — свежие вакансии получают меньше откликов
Собеседования: вопросы и как я готовился
Собеседование 1: маленькая веб-студия
Формат: 30 минут с тимлидом по видео.
Вопросы: Расскажите про свои проекты. Чем отличается список от кортежа? Что такое декоратор? Какие HTTP-методы
знаете?
Результат: Отказ. Сказали, что ищут кого-то с опытом работы в команде.
Собеседование 2: стартап в EdTech
Формат: Час с CTO, потом тестовое задание на дом.
Вопросы: Как устроен Django ORM? Что такое N+1 проблема? Расскажите про SOLID. Как бы вы спроектировали API для
системы бронирования?
Тестовое: Написать API для интернет-магазина за 3 дня.
Результат: Прошёл, но вакансию закрыли внутренним кандидатом.
Собеседование 3: аутсорс-компания
Формат: Техническое интервью 45 минут + live-coding.
Вопросы: Что такое GIL в Python? Разница между __str__ и __repr__? Как работает сборщик мусора? Написать
функцию, которая находит все дубликаты в списке.
Live-coding: Реализовать LRU-кеш. Я справился с простой версией на словаре, но не знал про OrderedDict. Интервьюер
подсказал — и мы дописали вместе.
Результат: Оффер! 95 000 рублей, офис с возможностью удалёнки 2 дня в неделю.
Собеседование 4: финтех-компания
Формат: 3 этапа: HR, техническое, знакомство с командой.
Вопросы на техническом: Транзакции в базах данных. Индексы. Разница между процессом и потоком. Как работает asyncio.
Паттерн Repository.
Результат: Оффер, 90 000 рублей, полная удалёнка.
Самые частые вопросы на собеседованиях Junior Python Developer
На основе 6 собеседований я составил список тем, которые спрашивают почти всегда:
По Python
- Изменяемые и неизменяемые типы данных
- Генераторы и итераторы
- Декораторы: что это и зачем
- Менеджеры контекста (
with)
- GIL и многопоточность
*args и **kwargs
По веб-разработке
- HTTP-методы: GET, POST, PUT, PATCH, DELETE
- Коды ответов: 200, 201, 400, 401, 403, 404, 500
- REST API: принципы и best practices
- Cookie и сессии vs JWT
- Middleware: зачем нужен
По базам данных
- JOIN: INNER, LEFT, RIGHT, FULL
- Индексы: зачем и когда создавать
- Нормализация и денормализация
- Транзакции и ACID
- N+1 проблема и как её решать
По инструментам
- Git: merge vs rebase, конфликты, cherry-pick
- Docker: зачем, Dockerfile, docker-compose
- Linux: базовые команды, права, процессы
Что сработало, а что нет
Что помогло больше всего
- Реальные проекты — работодатели смотрят код, а не дипломы курсов
- Тренировка собеседований — после каждого неудачного интервью я записывал вопросы и готовил ответы
- Сообщество — общение в Telegram-чатах помогало не сдаваться и узнавать инсайды
- Регулярность — 2 часа каждый день лучше, чем марафоны по выходным
Что не сработало
- Массовая рассылка одинаковых откликов — конверсия около 5%
- Попытки выучить всё сразу — лучше знать один фреймворк хорошо, чем три плохо
- Прохождение бесконечных курсов — после второго курса нужно переходить к практике
- Занижение ожиданий по зарплате — некоторые компании предлагали 50–60 тысяч, и я рад, что не согласился
Советы тем, кто сейчас в начале пути
Совет 1: Определите конечную цель
«Выучить Python» — это не цель. «Получить работу Python-разработчиком с зарплатой от 80 000 рублей за 4 месяца» — это
цель. Она конкретная, измеримая и с дедлайном. Если вам нужен пошаговый план, рекомендую нашу
статью Python с нуля: план на 3 месяца.
Совет 2: Делайте проекты, а не только задачки
Codewars и LeetCode полезны для алгоритмического мышления, но работодателю важнее увидеть ваш проект на GitHub. Начните
с простого: калькулятор, todo-лист, бот. Постепенно усложняйте.
Совет 3: Не бойтесь откликаться «рано»
Я начал отправлять отклики на третьем месяце обучения, ещё не чувствуя себя готовым. Первые собеседования были
провальными — но они показали мне, чего я не знаю и что нужно подтянуть. Это бесценный опыт.
Совет 4: Общайтесь с другими разработчиками
Вступите в Telegram-чаты, ходите на митапы, задавайте вопросы на Stack Overflow. Программирование — это не одинокое
занятие. Многие разработчики с удовольствием помогают новичкам.
Совет 5: Заботьтесь о здоровье
Это неожиданный совет для статьи про программирование, но я серьёзно. 2 часа за компьютером каждый день в дополнение к
основной работе — это нагрузка. Делайте перерывы каждые 45 минут, разминайте глаза и спину.
Спустя год: чем занимаюсь сейчас
Через полгода после трудоустройства меня повысили до Middle-уровня задач (хотя формально должность не менялась).
Зарплата выросла до 130 000 рублей. Сейчас я работаю над микросервисной архитектурой на FastAPI, изучаю Kubernetes и
думаю о специализации в DevOps.
Переход в IT был лучшим решением в моей жизни. Не потому что зарплата выше (хотя и это тоже), а потому что каждый день я
решаю интересные задачи и вижу результат своей работы. Если вы сомневаетесь — начните прямо сейчас. Через 4 месяца вы
скажете себе спасибо.
Если вашей компании нужны опытные Python-разработчики для реализации проекта — мы всегда готовы помочь. Наша
команда работает с Python более 5 лет и специализируется на веб-разработке, автоматизации и
интеграционных решениях.