Сложность нельзя отменить…
... её можно только перенести.
Чем дольше я работаю над сложными системами, тем больше убеждаюсь в одной мысли.
Сложность похожа на воду. Она всегда найдет, куда перетечь.
Не написали документацию? Кажется, что стало проще. На самом деле сложность просто переехала в обсуждения команды и бесконечные уточнения.
Не написали тесты? Кажется, что сэкономили время. Но теперь за это придется платить во время регресса, сопровождения и исправления багов.
Отложили рефакторинг? Выиграли один спринт. Но проиграли следующие несколько месяцев разработки.
Разделили монолит на микросервисы? Упростили отдельные компоненты, но сделали сложнее их взаимодействие.
Объединили несколько сервисов в один? Упростили инфраструктуру, но усложнили сам код.
Именно поэтому мне кажется опасной фраза: «Давайте сделаем проще».
Проще — для кого? Для разработчика? Для тестировщика? Для бизнеса? Для сопровождения? Для команды, которая придет в проект через год?
В инженерии почти не бывает бесплатных упрощений. Если где-то стало проще, почти всегда стоит спросить себя, где стало сложнее.
Наверное, именно в этом и заключается одна из главных задач инженера. Не победить сложность — это невозможно. А осознанно выбрать, где за нее придется платить.
Хорошая архитектура, качественная документация, автоматические тесты и понятный код не делают систему простой. Они помогают перенести сложность туда, где ее цена минимальна.
И чем больше у меня опыта, тем реже я задаю вопрос: «Как сделать проще?»
И тем чаще спрашиваю: «Для кого станет проще?»
А как считаете вы? Действительно ли сложность нельзя устранить, а можно только перераспределить? Или вам встречались решения, которые делали систему проще без скрытой цены?
· 09.07
Сложностью можно и нужно управлять, но для начала стоит научиться ее понимать)
0
ответить
коммент скрыт — часть юзеров считает его токсичным или некорректным
коммент удалён
· 09.07
Я бы сказал понимать последствия размещения сложности именно «здесь» в долгосрочной перспективе.
0
ответить
коммент скрыт — часть юзеров считает его токсичным или некорректным
ответ удалён
· 09.07
Да она везде и всегда. Нужно только понять какая она: accidental или essential. Далее уже тянут за ниточки и тюнят (и пофиг что это: код, процесс или ещё чего).
0
ответить
коммент скрыт — часть юзеров считает его токсичным или некорректным
ответ удалён