Как писать и поддерживать приложение для снижения ошибок в продакшене и при доработках
Что проверяют
Есть ли у вас система, а не набор лозунгов про SOLID и DRY. Интервьюер хочет услышать, что вы делаете до релиза, во время выкладки и после, и как узнаёте об ошибке раньше пользователя. Следом обычно просят рассказать о конкретном инциденте и о том, что изменилось после него.
Как отвечать
Разложите ответ по этапам жизни кода:
- статические проверки: аннотации типов и
mypyилиpyrightхотя бы для нового кода,ruffкак линтер и форматтер, всё это вpre-commitи в CI; - тесты:
pytestс фикстурами, упор на бизнес-логику и интеграционные тесты с настоящей базой через testcontainers, а не на моки всего подряд. Для парсеров и расчётов полезенhypothesis. На каждый баг из продакшена пишется регрессионный тест; - границы системы: входящие данные проверяются на входе через Pydantic или схемы фреймворка, дальше по коду ходят уже валидные объекты;
- зависимости: версии зафиксированы в lock-файле (
uv.lock,poetry.lock), обновления идут отдельными PR через Dependabot или Renovate; - выкладка: небольшие PR с ревью, миграции Alembic по схеме expand/contract, чтобы старая и новая версии кода работали с одной схемой, фичефлаги и откат за минуты;
- наблюдаемость: Sentry для исключений, структурированные логи с идентификатором запроса, метрики ошибок и задержек с алертами.
Закончите процессом: после инцидента разбор без поиска виноватых и задача, которая закрывает класс ошибок, а не один случай.
В примерах из своего опыта называйте цифры, которые реально мерили: сколько инцидентов в месяц было и стало, за сколько минут откатывались. Если такой статистики не вели, так и скажите и опишите, что внедрили бы на новом месте первым делом.
Где спотыкаются
Перечисляют всё подряд без приоритетов. Сильнее ответ, где понятно, что вы внедрите первым и почему.
Обещают стопроцентное покрытие. Покрытие показывает, какие строки выполнились, а не то, что поведение проверено.
Говорят только про тесты и забывают про откат и мониторинг. Ошибки в продакшен всё равно попадут, вопрос в том, как быстро вы их заметите и уберёте.