2.2

2.2 Элементы потока: функции, дефекты, риски и долг

Обзор и мотивация

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

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

Для крупных команд эта видимость меняет характер разговора о ресурсах. Вместо того чтобы инженерный лидер приводил неколичественный аргумент «нам нужно больше времени на технический долг», классификация элементов потока производит фактическое число, долг потребил 30% мощности прошлого квартала, которое можно обсуждать, защищать и сознательно корректировать с бизнес-заинтересованными сторонами. Корпоративные организации, управляющие многими одновременными продуктовыми линиями, и государственные агентства, балансирующие новый функционал, обращённый к гражданам, против риска устаревшей системы, обе полагаются на такой защитимый количественный компромисс гораздо больше, чем на частное неформальное ощущение «мы тратим слишком много времени на обслуживание».

Ключевые принципы

  • Каждый элемент потока принадлежит ровно одному типу. Принудительная единственная классификация, а не допущение смешанной или неоднозначной, это то, что делает таксономию пригодной для сводной отчётности.
  • Распределение это игра с нулевой суммой, а не аддитивная. Больше мощности для функций неизбежно означает меньше мощности для дефектов, риска и долга в тот же период.
  • Не существует универсально здорового распределения. Молодой продукт в фазе роста законно может смещаться в сторону функций; зрелая система, несущая реальный технический риск, законно может смещаться в сторону работы над долгом и риском.
  • Работа над долгом и риском хронически недоотчитывается без этой дисциплины. Она имеет тенденцию происходить тихо, поглощаемая общими «инженерными задачами», пока классификация элементов потока не выведет её на свет.
  • Качество классификации определяет всю ценность таксономии. Таксономия, применяемая непоследовательно или подделанная постфактум, производит числа, которые активно вводят в заблуждение, а не информируют.

Рекомендации

Классифицируйте каждый элемент при приёме, используя письменное определение для каждого типа

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

Сообщайте распределение потока как тренд, а не единичный снимок

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

Установите сознательное целевое распределение с бизнес-заинтересованными сторонами, а не только с инженерией

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

Перекрёстно проверяйте классификацию элементов потока против независимых доказательств

Периодически сравнивайте ваше распределение потока с метриками, не зависящими от самоклассификации: доля эскейп-дефектов (тема 5.1), измерение технического долга (тема 4.5) и метрики управления уязвимостями (тема 6.4). Если дефекты или уязвимости растут, пока доля элементов потока «дефекты» и «риск» остаётся плоской или сжимается, это несоответствие самый ясный доступный сигнал того, что классификация оторвалась от реальности.

Следите конкретно за паттерном фабрики функций

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

Компромиссы: плюсы и минусы

ПодходПлюсыМинусы
Отсутствие формальной классификации (общий бэклог)Нет накладных расходов процессаРабота над долгом, риском и дефектами остаётся невидимой; трудно защищать решения о ресурсах
Четырёхтипная классификация элементов потокаДелает распределение мощности видимым и обсуждаемым с заинтересованными сторонамиТребует дисциплины при приёме и письменного согласованного определения на тип
Более детализированная классификация (много подтипов)Больше диагностических деталейБольше усилий на классификацию; больше чисел для объяснения заинтересованным сторонам
Ретроспективная классификацияПроще применять, без предварительного изменения процессаСильно подвержена манипулированию; классификация дрейфует к тому, что выглядит лучше всего

Центральное напряжение: дисциплина классификации против накладных расходов процесса. Четырёхтипная таксономия намеренно грубая, достаточно грубая, чтобы классификация элемента занимала секунды, а не дебаты, но эта грубость держится только в том случае, если дисциплина классификации при приёме против письменного определения действительно поддерживается. Разрешайте это напряжение, удерживая таксономию именно такой простой, четыре типа, не больше, и вкладывая любую дополнительную строгость в шаг аудита (перекрёстной проверки против независимых доказательств), а не в более сложную схему классификации, разрушающуюся под реальной нагрузкой.

Вопросы для обсуждения в команде

  1. Если бы мы классифицировали всё, что наша команда отгрузила в прошлом квартале, как бы выглядело фактическое разделение между функциями, дефектами, риском и долгом, и удивило бы это наших заинтересованных сторон? Большинство команд никогда не делали это упражнение честно. Попробуйте его с реальными данными, прежде чем предполагать, что вы уже знаете ответ.

  2. Есть ли у нас письменное согласованное определение того, что считается функцией против долга против риска в нашем конкретном контексте, или классификация зависит от того, кто помечает заявку? Неформальное непоследовательное определение производит числа, которые выглядят точными, но на самом деле не сравнимы от периода к периоду.

  3. Дрейфовало ли наше распределение потока когда-либо устойчиво в сторону одного типа элемента без того, чтобы кто-то принял это решение сознательно? Медленный дрейф легко пропустить период за периодом, но он очевиден, если построить его как тренд. Возьмите несколько периодов данных, если они у вас есть, и честно поищите этот паттерн.

  4. Как бы выглядело здоровое распределение потока для текущей фазы нашего продукта, и действительно ли мы согласовали эту цель с бизнес-заинтересованными сторонами? Большинство организаций никогда не делали эту цель явной, что означает отсутствие общей основы для замечания, когда фактическое распределение дрейфует от неё.

  5. Соответствует ли наше распределение потока независимым доказательствам, вроде доли эскейп-дефектов или числа открытых уязвимостей, или есть несоответствие, достойное расследования? Несоответствие здесь самый ясный доступный признак того, что классификация оторвалась от того, чем работа является на самом деле.

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

Отраслевой взгляд

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

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

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

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

Примеры

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

Государство. Команда цифрового лицензирования государственного агентства автотранспорта впервые классифицировала свой бэклог после того, как публичный сбой привлёк внимание к стабильности лежащей в основе системы. Упражнение раскрыло, что работа над «риском», в первую очередь исправление уязвимостей безопасности, которое неоднократно деприоритизировалось в пользу видимых функций, обращённых к гражданам, сократилась до менее 5% мощности за предыдущий год, паттерн, никогда не видимый в стандартной отчётности команды. Руководство агентства использовало эту находку, чтобы установить минимальное распределение для работы над риском вперёд, подкреплённое данными распределения потока, а не только общим заявлением о политике.

Бизнес-кейс: мотивация, ROI и TCO

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

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

Антипаттерны и ловушки

  • Классификация работы ретроспективно, после того как результат известен: вектор манипулирования в сердце этой темы. Под давлением доставки команда может тихо пометить работу над долгом или риском как функцию постфактум, или округлить неоднозначный элемент в сторону того типа, который лучше выглядит на диаграмме распределения, без того чтобы какое-либо отдельное решение само по себе выглядело нечестным. Страховка классификация при приёме против письменного определения в сочетании с периодическими аудитами, сравнивающими распределение потока с независимыми доказательствами вроде доли эскейп-дефектов (тема 5.1) и метрик уязвимостей (тема 6.4), та же дисциплина аудита против независимых доказательств, которую тема 1.2 требует для каждой метрики в этой книге.
  • Позволение функциям стабильно поглощать почти всю мощность (паттерн фабрики функций): тихо лишает работу над долгом и риском мощности, пока это не проявится как кризис.
  • Отношение к распределению одного периода как ко всей картине: упускает медленный накопительный дрейф, который ясно раскрывает взгляд на тренд.
  • Установление целевого распределения без бизнес-заинтересованных сторон: лишает фреймворк его главной ценности, общего согласованного понимания компромисса.
  • Использование непоследовательного или недокументированного определения для каждого типа: производит числа, которые выглядят точными, но на самом деле не сравнимы во времени.
  • Чрезмерное усложнение таксономии многими подтипами: добавляет накладные расходы на классификацию, разрушающие дисциплину без пропорционального понимания.

Модель зрелости

  • Уровень 1, Инициация: Работа отслеживается обобщённо, без классификации элементов потока; работа над долгом и риском невидима в отчётности.
  • Уровень 2, Развитие: Некоторые команды классифицируют элементы потока неформально, но определения непоследовательны, и классификация часто происходит ретроспективно.
  • Уровень 3, Стандартизация: Все команды классифицируют при приёме против общего письменного определения, а распределение потока отслеживается как тренд.
  • Уровень 4, Управление: Распределение потока периодически перекрёстно проверяется против независимых доказательств, а целевые распределения устанавливаются сознательно с бизнес-заинтересованными сторонами.
  • Уровень 5, Оркестрация: Данные об элементах потока напрямую информируют решения о ресурсах и инвестициях по всей организации, и руководство может указать на конкретные решения, принятые потому, что классификация сделала ранее невидимый компромисс явным.

Идеи для обсуждения

  1. Что показало бы честное разделение элементов потока работы прошлого квартала, и удивило бы это кого-нибудь?
  2. Есть ли у нас письменное определение для каждого из четырёх типов элементов потока, или классификация зависит от того, кто помечает работу?
  3. Дрейфовало ли наше распределение потока когда-либо в сторону одного типа элемента без сознательного решения за этим?
  4. Против каких независимых доказательств мы могли бы сегодня перекрёстно проверить наше распределение потока?

Основные выводы

  • Элемент потока принадлежит ровно одному из четырёх типов, функции, дефекты, риски или долг, и распределение мощности между ними это игра с нулевой суммой.
  • Не существует универсально здорового распределения; правильная смесь зависит от фазы продукта и должна быть сознательной согласованной целью с бизнес-заинтересованными сторонами.
  • Центральный вектор манипулирования этой темы это ретроспективная классификация, тихое переобозначение работы над долгом или риском как функции постфактум; страховка классификация при приёме плюс периодические аудиты против независимых доказательств.
  • Следите конкретно за паттерном фабрики функций, функциями, стабильно поглощающими почти всю мощность, что лишает работу над долгом и риском мощности, пока это не проявится как кризис.
  • Распределение потока наиболее ценно как тренд, и его самая большая отдача приходит от того, чтобы делиться им напрямую с бизнес-заинтересованными сторонами.

Источники и дальнейшее чтение

  • Kersten, Mik. Project to Product: How to Survive and Thrive in the Age of Digital Disruption with the Flow Framework. IT Revolution Press, 2018.
  • Kim, Gene, Kevin Behr, and George Spafford. The Phoenix Project. IT Revolution Press, 2013.
  • Reinertsen, Donald G. The Principles of Product Development Flow: Second Generation Lean Product Development. Celeritas Publishing, 2009.