Как разобраться в чужом коде за первую неделю
Как разобраться в чужом коде, не сломав продакшн: запуск локально, карта проекта, поиск того, что реально используется, и первые безопасные правки.
Тебе достался проект: его писал фрилансер, агентство или ИИ-ассистент под чьим-то руководством, документации нет, а пользователи уже есть. Разобраться в чужом коде за неделю реально, если не пытаться прочитать его целиком. Читать весь код подряд — всё равно что учить город по справочнику улиц. Надо пройти по нему пешком.
Главное правило первой недели: ты ничего не улучшаешь. Ты смотришь, записываешь и запускаешь. Правки в продакшн — только если что-то горит.
День 1: запустить локально
Пока проект не запускается у тебя на машине, всё остальное — гадание. Склонируй репозиторий и попробуй поднять его так, как поднял бы новичок. Каждый шаг, на котором ты застрял, записывай: какой версии нужен Node или Python, какие переменные окружения, откуда взять ключи, какую базу создать.
Две вещи важны сразу:
- Локальная копия не должна смотреть в боевую базу. Если в
.envлежит адрес продакшн-базы — замени на локальную или тестовую до первого запуска. - Почта, оплата и прочие внешние сервисы в локальном запуске должны быть в тестовом режиме или выключены. Иначе одна кнопка «отправить» уйдёт настоящим людям.
К концу дня у тебя должен быть работающий проект и черновик инструкции, как его запустить. Это уже больше, чем было.
День 2: нарисовать карту
Теперь сверху вниз. Открой структуру папок и ответь на вопросы:
- где точка входа: что запускается первым;
- где маршруты: какие страницы и какие эндпоинты API существуют;
- где модель данных: таблицы, схемы, миграции;
- какие внешние сервисы вызываются и откуда.
Хороший приём — выписать список таблиц в базе и рядом с каждой отметить, какие файлы её читают и пишут. Поиск по проекту (grep -rn "orders" или поиск в редакторе) даст это быстрее, чем чтение. В итоге получится грубая схема на одну страницу. Она будет неточной, и это нормально — ты её уточнишь.
ИИ-ассистент здесь полезен: попроси его описать, что делает папка или модуль. Но проверяй каждое утверждение по коду — он уверенно рассказывает и то, чего там нет.
День 3: пройти по главным сценариям
Возьми три-четыре действия, ради которых продуктом пользуются: регистрация, покупка, создание главной сущности. Пройди каждое в интерфейсе и параллельно проследи в коде путь запроса: кнопка → обработчик → API → база → ответ.
На этом шаге становится понятно, какие части живые, а какие лежат рядом просто так. Записывай странности: проверка прав только в интерфейсе, цена, которая приходит из браузера, два почти одинаковых обработчика. Чинить пока не надо — только список.
День 4: найти то, что реально используется
В проектах, которые росли быстро, заметная часть кода не используется: старые страницы, брошенные эксперименты, три версии одного компонента. Чтобы отличить живое от мёртвого:
- посмотри логи сервера и аналитику: какие маршруты вызываются, а какие нет;
- поищи использования функции или компонента по всему проекту;
- проверь историю файла в git: когда его трогали последний раз и зачем;
- спроси тех, кто был до тебя, если они на связи.
Ничего не удаляй. Просто пометь в своих заметках: «похоже, не используется, проверить».
День 5: первые безопасные правки
Если до этого не было, настрой отдельное тестовое окружение, куда можно выкатить изменение и посмотреть на него, не трогая пользователей. Потом сделай одну маленькую, заведомо безопасную правку — поправь опечатку в тексте или обнови комментарий — и проведи её через весь путь до продакшна.
Цель не правка, а проверка процесса: как собирается проект, как выкатывается, как откатить, если что. Лучше узнать, что деплой занимает сорок минут и требует ручного шага, на опечатке, чем на срочном исправлении в пятницу вечером.
Итог: что значит разобраться в чужом коде
Работающая локальная копия, инструкция по запуску, карта проекта на одну страницу, список главных сценариев с путями в коде, список подозрительных мест и проверенный путь выкатки. Это и есть основа для README и для плана, что чинить первым.
Коротко
- Разобраться в чужом коде быстрее через запуск и сценарии, чем через чтение файлов подряд.
- Первым делом отключи локальную копию от боевой базы и боевых сервисов.
- Нарисуй карту: точка входа, маршруты, таблицы, внешние сервисы.
- Живой код отличай от мёртвого по логам, поиску использований и истории git, но пока ничего не удаляй.
- Первая правка должна проверять процесс выкатки, а не код.
Если нужен второй взгляд на доставшийся проект, SUBXCAT делает такой разбор вместе с командой.