Немного о DDD, сложности и странных комментариях

Канал о системном и бизнес-анализе, продуктовом мышлении и архитектуре. Как выявлять реальные проблемы, строить работающие решения и не терять здравый смысл в IT. Все вопросы - @innokentyB

dddсложностькоммуникация

Видимо, наследие Otus меня не отпускает. Сегодня получил обратную связь на свой открытый урок по DDD, записанный больше года назад:

«Прослушал половину видеоролика и ни разу не услышал главного слова в DDD — “модель”. Автор путает essential complexity и accidental complexity. Essential complexity невозможно уменьшить (автор ошибся). Возникает вопрос: как DDD вообще может помочь бороться со сложностью? Ответа нет.»

Формально — человек прав. Я действительно не произносил слово “модель” и не читал лекцию по Бруксу. Но если чуть отойти от формальной логики и посмотреть на суть — всё становится интереснее.


Для меня DDD — это не про построение моделей, а про коммуникацию. Про умение выстроить совместное понимание между командами — бизнесом, аналитикой и разработкой. Это коллаборативная техника, которая помогает людям наконец начать говорить на одном языке. Вот в этом и есть настоящая ценность DDD.


Теперь про сложность. Да, essential complexity — исходную сложность домена — в абсолютных величинах не уменьшить. Разве что вы перепишете законы, регламенты и бизнес-процессы. Но вот accidental complexity — ту, что мы сами добавляем из-за непонимания предметной области — вот её DDD и помогает убирать.

Причём не “в теории”, а относительно конкретной команды, которая благодаря совместному языку лучше понимает, что она делает и зачем.


💬 Поэтому я по-прежнему считаю, что DDD снижает сложность, пусть и не абсолютную, а коммуникационную и когнитивную. А это, если честно, сложность посерьёзнее любой технической.

Готов подискутировать — особенно с теми, кто до сих пор верит, что DDD — это про рисование UML и словарь терминов. 😉

Дискуссия

Nikolaj Potashnikov
ИМХО автор здесь на 110% прав))) Тот же Брукс говорит о синдроме второй системы, когда на смену элегантным системам приходят "over-engineered, bloated systems, due to inflated expectations and overconfidence". Но ведь inflated expectations -- это именно о нашем понимании домена. Понятно, essential complexity невозможно уменьшить без изменения фундаментальных требований. Но подход DDD как раз и помогает нам лучше коммуницировать, уменьшить когнитивную сложность и, в конечном счете, изменить фундаментальные требования, т.е. снизить essential complexity. Часто законы, регламенты, бизнес-процессы и переписывать не надо. Если после внедрения системы люди говорят: "Оказывается, мы работаем проще, чем мы думали", это прям победа. Ну и опять же, есть много ситуаций, когда можно и переписать. DDD -- это же не о том, чтобы "отлить при жизни в гранит". Одной из проблем DDD, как по мне, была сложность рефакторинга (вроде как контексты менять нужно, но все сломаем...). Но сейчас (ко вчерашнему обсуждению) LLM в этом вопросе смогут, уверен, сильно помочь и именно аналитику. И DDD станет еще большим a must.
Присоединиться к обсуждению →

Читайте так же