Закоулки мозга

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.
  • Структурные изменения можно соотнести с “экономией от масштаба”, как пример - создание обобщенного механизма / мини-фабрики по производству нужных модулей ПО. Написание библиотек функций, да и любое устранение дублирования кода (с дальнейшим переиспользованием выделенных модулей) относятся сюда же.
  • Обобщение механизмов - абстрагирование - значительно повышает способность к производству в будущем (при условии, что абстракции верны и область их применения будет в будущем развиваться и расширяться). Сопротивление абстракциям в коде