Beck K. Behavior Change = Revenue Versus Structure Change = Option // Software Design: Tidy First? [Электронный ресурс].
URL: https://tidyfirst.substack.com/p/behavior-change-revenue-versus-structure (дата обращения: 20.09.2022).
- Две ценности ПО - поведение и структура
- Изменения поведения и изменения структуры ПО не стоит проводить одновременно
Эффективная работа с унаследованным кодом
- Изменения поведения и изменения структуры конкурируют за ресурсы (время
разработчиков)
- Экономическая ценность любой системы состоит из двух компонентов:
дисконтированный денежный поток + оценка возможности генерировать денежный
поток в будущем. Производство vs Способность к производству
- Любое изменение поведения - это увеличение денежного потока (обычно через
увеличение выручки, реже через снижение издержек). При этом влияние на
возможность генерировать денежные потоки в будущем, как правило, не
учитывается.
- Любое изменение структуры призвано увеличить способность генерировать
денежные потоки в будущем, при этом прямого влияния на краткосрочные
выгоды обычно нет.
- Конфликт краткосрочной выгоды и долгосрочных целей приводит
к распределению ресурсов в пользу изменений поведения. Возможно, движущей
силой здесь является “жадность” (получение дохода прямо сейчас). Возможно,
эмоционально наличие поведения воспринимается как “безопасность”, а
инвестиции в структуру - как “риск”.
- Два полярных вида провальных проектов: (1) проект с перекосом в сторону
структуры - разработка платформ, движков и т.п. - провал всегда резкий,
ощущается как интенсивный и болезненный, т.к. затрат много, а полезного
поведения мало. (2) проект с перекосом в сторону поведения - провал очень
медленный (эффект “вареной лягушки”, “болезнь посредственности”), но столь
же катастрофический. Второй вид кажется не столь драматичным, поэтому с ним
часто мирятся.
- Дополнительные параметры, которые необходимо учитывать при принятии решений
о распределении ресурсов: контекст - для стартапов (быстрая проверка гипотез
о поведении) и стабильных компаний (устоявшиеся процессы) он разный;
риск и неопределенность будущих изменений денежного потока;
время - еще один ограниченный ресурс, можно учитывать в виде Cost of Delay.
- Структурные изменения можно соотнести с “экономией от масштаба”, как пример -
создание обобщенного механизма / мини-фабрики по производству нужных модулей
ПО. Написание библиотек функций, да и любое устранение дублирования кода (с
дальнейшим переиспользованием выделенных модулей) относятся сюда же.
- Обобщение механизмов - абстрагирование - значительно повышает способность к
производству в будущем (при условии, что абстракции верны и область их
применения будет в будущем развиваться и расширяться).
Сопротивление абстракциям в коде