Линейные vs событийные модели

В отличной книге по архитектуре программных продуктов «97 Things Every Software Architect Should Know» есть классная мысль: в реальном мире редко встречаются жестко последовательные алгоритмы, поэтому любая программная система по мере развития превращается в событийную.

Если более простым языком: если даже изначально работа с системой выглядит как длинный визард или форма, со временем она эволюционирует в вызов отдельных мелких кусочков, как то же меню в Microsoft Word. Попытка жестко зафиксировать какую-либо последовательность действий вызывает неудобство для пользователя, поскольку в процессе работы всегда что-то изменяется: от появления новых данных до корректировки задач.

Эта аналогия хорошо применима и к бизнесу, поскольку он гораздо ближе к реальному миру, нежели то же программирование: попытка жестко зафиксировать какие-то длинные процессы, заняться микроменеджментом на бумаге в реальности обречены на провал. Гораздо эффективнее давать людям отдельные мелкие инструменты и возможности, чтобы они реагировали на окружающий мир, а не перли через него буром.

По этой же причине, мне кажется, программные системы становятся неудобными по мере их развития: изначально простые и быстрые инструменты превращаются в какие-то комплексные, цельные, негибкие последовательные процессы. Они просто не выдерживают столкновения с объективной реальностью.

Собственно, следование парадигме мелких инструментов и обеспечило, мне кажется, успех тех же UNIX-систем. Они максимально разбиты на мелкие части, инструменты, соответственно человек может не сколько построить что-то новое и цельное из кусочков (что тоже будет в итоге сломано реальным миром), сколько адекватно реагировать с минимумом усилий на новые задачи и требования.

Ну и, возвращаясь к бизнесу: вместо попыток сделать его «цельным», лучше стремиться превратить его в гибкий, подстраивающийся под реалии сегодняшнего дня организм. Не танк, а Терминатор из жидкого металла. Поощрять не следование изначально намеченному плану, но действия в угоду текущей прибыли, поскольку именно такие действия наиболее эффективны и дают адекватную информацию о рынке.