Как справлялся с legacy кодом
Что проверяют
Умеете ли вы менять старый код, не ломая его, и понимаете ли, что переписывание с нуля почти всегда плохая идея. Следом обычно спрашивают, с чего вы начали и как убедились, что ничего не сломали.
Как отвечать
Нужна своя история: что за код, что в нём мешало, что вы сделали и чем это измерили. Каркас:
- контекст: размер и возраст кодовой базы, версия Python, фреймворк, отсутствие тестов или документации. Одна-две фразы, без жалоб на предшественников;
- страховка до правок: характеризационные тесты на pytest, которые фиксируют текущее поведение, даже странное. Отчёт
coverage.pyпоказывает, какие модули трогать опасно; - постепенные улучшения:
ruffкак линтер и форматтер, проверка только изменённых файлов через pre-commit, аннотации типов иmypyмодуль за модулем, начиная с самых часто меняемых; - рефакторинг малыми шагами: выделение функций, разрыв циклических импортов, передача зависимостей вместо глобальных объектов. Каждый шаг отдельным небольшим PR;
- крупные замены по частям: паттерн strangler fig: новый модуль постепенно забирает функции старого, а старый удаляется в конце;
- обновление окружения: переход на поддерживаемую версию Python и свежие зависимости с фиксацией версий через
uv,poetryилиpip-tools.
Результат называйте своими цифрами и честно: сколько модулей покрыли тестами, как изменилось время типовой доработки или число инцидентов после релизов. Если замеров не было, так и скажите и объясните, по каким признакам поняли, что стало лучше.
Если настоящего legacy не было, возьмите любой унаследованный код: чужой модуль в команде, старый пет-проект, open source, куда вы отправляли исправление. Важен подход, а не масштаб.
Где спотыкаются
Рассказывают, как всё переписали с нуля. Интервьюер слышит риск: вместе со старыми багами ушли и старые фичи, о которых никто не знал.
Приводят круглые проценты вроде «производительность выросла на 30%, ошибок стало вдвое меньше» без способа измерения. Первый же вопрос «как считали?» обнуляет ответ.
Начинают рефакторинг без тестов или одним огромным PR. Такое ревью никто не проверяет по-настоящему, и регрессия уезжает в прод.