Доработка Django-проекта: как передать чужой код без боли

Типичная ситуация: сайт на Django работает годами, разработчик ушёл (в найм, в закат, на связь не выходит), а бизнесу нужны изменения. Новые исполнители смотрят код и говорят «проще переписать». Спойлер: почти всегда неправда. Разберём, как передаётся чужой проект и что считать нормальной ценой въезда.

Почему «проще переписать» — почти всегда ложь

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

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

Что подготовить к передаче

Минимальный комплект, без которого въезд затянется:

  1. Доступы: репозиторий, сервер, база, домен, почтовые и платёжные сервисы, все API-ключи. Если репозитория нет и код только на сервере — это решаемо, вытащим, но скажите об этом сразу.
  2. Живой стенд: URL продакшена и, если есть, тестовый контур.
  3. Контакты предыдущего разработчика — даже одна сессия вопросов экономит десятки часов археологии. Не выходит на связь — справимся без него, дольше.
  4. Список болей: что падает, что тормозит, что давно хотели поменять.

Как выглядит въезд в чужой код

Нормальный процесс у любой зрелой команды:

  • Аудит (часы, не недели). Версии Django/Python, структура, состояние зависимостей, тесты, деплой, очевидные дыры безопасности. На выходе — карта проекта и список рисков по приоритетам. Подробно — в статье про аудит.
  • Стенд и деплой. Первым делом — воспроизводимая локальная сборка и понятный деплой. Пока «выкатить» умеет только ушедший человек — проект в заложниках.
  • Первая мелкая задача. Тестовый заезд: небольшая доработка от постановки до продакшена. Проверяет и код, и процессы, и вас как заказчика.
  • Дальше — обычный ритм. Задачи, оценки в часах, демо.

Въезд в средний проект — 10–30 часов до первой продуктовой задачи. По ставке от 1700 руб/час — 17–50 тыс за то, чтобы проект перестал быть чёрным ящиком.

Красные флаги новых подрядчиков

  • «Всё переписать» до аудита. Диагноз без осмотра — продажа, а не инженерия.
  • Оценка «весь проект под ключ» вместо задач. Чужой код дорабатывается итерациями с оценкой каждой, не оптом.
  • Не просят доступов к продакшену и базе. Значит, планируют чинить вслепую.
  • Молчат про бэкапы. Первое действие в чужом проекте — убедиться, что есть откат.

Сколько стоит доработка

После въезда чужой Django-проект дорабатывается по обычным ставкам — от 1700 руб/час, задачами с предварительной оценкой. Новая фича — десятки часов, мелкие правки — часы. Дороже обычного стоят только задачи, упирающиеся в накопленный техдолг, — о нём вы узнаете из аудита заранее, а не по факту счёта.