Контекст дороже модели
Почему один хорошо написанный файл с правилами проекта даёт больший прирост качества, чем переход на модель поновее — и когда это перестаёт быть правдой.
Наблюдение, которое я готов защищать: на прикладных задачах переход на модель посильнее даёт меньший прирост, чем нормально описанный контекст проекта.
Механика простая. Сильная модель лучше рассуждает, но она по-прежнему не знает, что в вашем проекте нельзя трогать модуль оплаты без ревью, что логи пишутся через свой враппер, а не через стандартный, и что в прошлом году отказались от очередей и возвращаться к ним не собираются. Это не знание общего мира — это локальные факты, которых нет ни в одной обучающей выборке.
Модель без них не ошибается случайно. Она уверенно делает то, что статистически правильно вообще и неправильно у вас.
Что стоит держать в файле правил, по убыванию пользы:
- запреты — чего делать нельзя и почему;
- три-четыре примера «как надо» из реального кода, а не выдуманные;
- соглашения об именах и структуре;
- решения, которые уже приняты и не обсуждаются.
Запреты я ставлю первыми не случайно. Положительные инструкции модель разбавляет, отрицательные — соблюдает заметно надёжнее, потому что нарушение запрета проверяется однозначно, а соблюдение рекомендации — нет.
Где это перестаёт быть правдой. Если файл правил уже есть, он на месте и результат всё равно не устраивает — тогда да, дело в модели, и менять надо её. Но в большинстве проектов, куда я прихожу, файла нет вообще, и спор про выбор модели идёт вместо получаса работы, который закрыл бы половину претензий.