Конспект
Главный объект внимания - Шаг изменений.
Характеристики шагов:
- Должен быть достаточно маленьким
- Должен быть “поставляемым” по завершении (система работает)
- Не должен ухудшать состояние системы
Внутренние преимущества MMMSS:
- Прерываемость. Перерывы в конце шага возможны и обходятся дешево, т.к. система работает. Любые перерывы “внутри” шага дороги, т.к. нужно погружаться в контекст при неработающей системе.
- Управляемость. В смысле, выбор направления разработки. Дешевле всего изменить направление у работающей системы.
- Реверсивность. Возможность дешево откатить последние изменения или их часть (один шаг).
- Многопоточность. Имеется в виду возможность как будто бы одновременно двигаться в нескольких направлениях, преследуя цели разных стейкхолдеров, делая один шаг в интересах первого, один шаг в интересах второго и т.п. Чем мельче шаги, тем чаще можно переключаться и тем сильнее видимый снаружи эффект многопоточности.
- Минимальный объем. Устраняем комбинаторные взрывы и нелинейно (экспоненциально?) растущую когнитивную нагрузку, появляющиеся при увеличении скоупа.
- Ритм. Начало шага - это всегда стресс, завершение шага - это всегда расслабление. Чередование этих моментов приводит к очень желанному выбросу нейромедиаторов. Действие эндорфинов очень короткое, поэтому нужно создавать эндорфиновые ситуации чаще - это поддерживает внутреннюю мотивацию.
- Безопасность. Люди более креативны, тщательны и вдумчивы, когда чувствуют себя в безопасности. Работающая система создает это ощущение безопасности (особенно, если код еще и покрыт тестами). К тому же маленькие изменения кажутся (и часто так и есть) более безопасными. Даже если маленький шаг окажется неверным, цена ошибки очень мала.
- Автономность. Во-первых, это делает возможной децентрализацию управления. Во-вторых, это мощнейший мотивационный драйвер (наряду с ритмом и безопасностью, по мнению Daniel Pink, книга “Drive”)
Теория избегания переделок (Rework Avoidance Theory - RAT) говорит, что кратчайший путь между двумя точками - это прямая. Поэтому нужно определить (заранее) максимально эффективный план движения к цели. Беда в том, что жизнь - это не двумерное пространство, и евклидова геометрия тут плохо работает.
Обычно есть план достижения цели, выраженный в виде цепочки действий (а не шагов), то есть, по сути, есть один гигантский шаг, ведущий к цели. Кажется, что это прямая, соединяющая две точки, поэтому это кратчайший и наиболее эффективный путь. Но Инженерная проблема характеризуется неопределенностью в четырех смыслах, два из которых - неопределенность цели и неопределенность текущего положения делают эту прямую бессмысленной. К тому же у одного шага нет перечисленных выше преимуществ. Ну и геометрия бизнеса - неевклидова.
Цена ошибки одного гигантского шага намного больше, чем у каждого из множества маленьких шагов.
Цена повышения точности решения выше 80% безумно высока, а при большом количестве решений (а в современном ПО их насчитываются тысячи) любая точность меньше пяти-шести девяток после запятой гарантирует ошибку.
1-1a1a Разделение труда увеличивает производительность в физическом производстве, но 1-1a1b Специализация в разработке ПО малоэффективна