Хочу поговорить про инженерию.
Переодически ставлю задачи на проектирование для разработчиков. В рамках этих задач нужно принести архитектуру будущего сервиса, и разделить на задачи.
На уровне разработчика любовь к архитектуре часто обусловлена эстетикой. Классы красиво лежат, аккуратные абстракции. Сам любил такое.
Но теперь, для меня как для менеджера, архитектура такая же утилитарная вещь как ножнички для ногтей (никогда не любил кусачки, всегда был за ножницы).
Первое, это понижение когнитивной сложности. Людям легко мыслить ярлыками, абстракция такой же ярлык. Главное, чтобы абстракция была четко прописана и все разработчики работающие с этой абстракцией были синхронизированы.
Второй важный фактор, архитектура должна позволять параллелить разработку. Нельзя допустить такое, чтобы проект мог делать только один человек последовательно. Это и бас-фактор и замедление разработки.
Понятно что нельзя все нарезать равномерно, какие-то задачи будут простыми, какие-то сложными, и все равно кто-то будет вынужден сделать больше. Но важный факт, даже тот, кто делает простую работу, он вынужден, запустить проект, посмотреть какие в нем есть абстракции, потыкать его, написать пару тестов. ОН СТАНОВИТСЧЯ ПОГРУЖЕННЫМ, что важно для меня как для менеджера.
Если вы вдруг задались вопросом, как проектировать архитектуру так же, то покупайте мой курс за 100500 денег, то нарезка может быть и горизонтальной и вертикальной.
Горизонтальная нарезка это нарезка по слоям. Например слой View, слой Бизнес-логики и слой Репозиториев/БД. На границах слове DTO, потом в рамках отдельных задач объединять слои. На время разработки использовать тесты, которые подбрасывают DTO тестируемому коду.
Вертикальная нарезка это нарезка по конкретным урлам или модулям а-дя /cart/, /product/, и т.п. Когда люди делают кусок конкретной функциональности.
На практике объединяют оба способа, допустим, сперва делают отдельно слой работы с базой + модельки, затем вертикально делают конкретные урлы.
Инженерия заключается не только в том, как нарисовать самолет, но и придумать как его собрать. Это тоже важная, если не ключевая ее часть. А придумать слоистую архитектуру для echo-чат-бота не сложно.
Вообще, в удивительное время живем, раньше программист это и инженер и мастер, инженер проектирует, мастер «крутит гайки», а теперь нейронки могут крутить гайки, но только под управлением опытного инженера. Настала пора им быть!