Как меняется бизнес-логика
Что проверяют
Как вы устраиваете код, чтобы смена правил бизнеса не расползалась по всему сервису, и как проходите такие изменения на практике. Вопрос размытый, поэтому следом просят пример: что поменялось, сколько кода задело, как не сломали старых клиентов. Бывает, его задаёт и кандидат, чтобы понять, насколько стабильны требования в команде.
Как отвечать
Держите каркас из двух частей: как это заложено в архитектуре и как вы проводили реальное изменение.
- изоляция правил: бизнес-логика живёт в слое сервисов или домена и не знает про HTTP, gRPC и SQL. Хендлер разбирает запрос, репозиторий ходит в базу, правило меняется в одном месте;
- интерфейсы у потребителя: в Go интерфейс объявляют там, где его используют, и делают маленьким. Смена хранилища или внешнего API тогда не трогает логику;
- тесты как страховка: табличные тесты на правила. Перед изменением фиксируете старое поведение, потом меняете;
- обратная совместимость: в protobuf поля добавляют, а номера удалённых помечают
reserved; схема базы меняется миграциями (goose, golang-migrate) в несколько шагов; - постепенное включение: фича-флаг, чтобы включить новое правило на часть трафика и откатить без релиза.
Затем пример из своего опыта: что было, что потребовал бизнес, где пришлось править, чем проверили, что вышло. Цифры называйте только свои и реальные: срок внедрения, число затронутых пакетов, инциденты после релиза. Если крупных изменений на проекте не было, скажите прямо и опишите, как сделали бы: где провели бы границу слоя и какие тесты написали бы первыми.
Если спрашиваете вы, уточните, кто инициирует изменения, как часто они приходят и формулирует ли их аналитик до разработки.
Где спотыкаются
Отвечают общими словами про гибкость и Agile без единого примера. Интервьюер так и не понимает, был ли у вас реальный опыт.
Описывают проект, где логика размазана по хендлерам и SQL-запросам, и не видят в этом проблемы.
Рассказывают STAR-историю с круглыми процентами роста, которые не могут объяснить на уточнении. Скромная, но проверяемая цифра убедительнее.