2.5

2.5 Эффективность потока и незавершённая работа

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

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

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

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

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

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

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

Измерьте эффективность потока, прежде чем предполагать, что узкое место это усилия

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

Установите явный лимит незавершённой работы и видимо его соблюдайте

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

Относитесь к лимиту НЗР как к системному ограничению, а не индивидуальной квоте

Лимит НЗР управляет тем, сколько работы система (команда, общая очередь ревью, общая среда) имеет в полёте одновременно, а не тем, сколько может трогать любой отдельный человек. Применение лимита как индивидуальной квоты по производительности, «у вас может быть открыто только два тикета», неправильно применяет технику и рискует именно тем видом манипулирования на индивидуальном уровне, против которого эта книга предупреждает на протяжении всего текста. Лимит существует для защиты потока через всю систему, и его соблюдение должно быть командной нормой, а не личным потолком.

Исследуйте, почему работа простаивает, а не только как долго

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

Следите за тем, чтобы НЗР не ползла обратно вверх после первоначального улучшения

Команды, успешно принявшие лимит НЗР, часто видят, как он разрушается со временем, по мере возвращения давления начать новые инициативы, «только в этот раз, нам нужно начать и это срочное дело тоже». Относитесь к каждому исключению из лимита НЗР как к сознательному видимому решению с заявленной причиной, а не тихому рутинному переопределению, чтобы дисциплина лимита не разрушалась тихо обратно к исходному состоянию.

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

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

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

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

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

  2. Сколько незавершённой работы у нас на самом деле есть прямо сейчас по всей команде, и знал ли кто-то это число до подсчёта? Высокая НЗР часто невидима, пока не измерена явно, потому что каждый отдельный человек видит только свой собственный срез её. Подсчитайте всё, что сейчас в процессе, включая работу, которую сегодня никто активно не трогает.

  3. Если бы мы приняли лимит НЗР, что должно было бы измениться в том, как мы реагируем на новый срочный запрос? Этот вопрос выявляет реальную организационную привычку, рефлекторное начало новой работы, которую лимит НЗР призван прервать, и его стоит обсудить до, а не после попытки его соблюдения.

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

  5. Принимали ли мы когда-либо лимит НЗР, а затем наблюдали, как он тихо разрушался через исключения? Это чрезвычайно распространено и стоит честно обсудить: какое давление вызвало первое исключение, и стали ли исключения новой нормой без того, чтобы кто-то принял это решение явно.

  6. Нужно ли было бы применять лимит НЗР в нашем контексте на индивидуальном, командном уровне или уровне общего ресурса (как очередь ревью или тестовая среда)? Разные узкие места требуют лимитов на разных уровнях, и применение лимита не на том уровне, индивидуальные квоты вместо потолка общей очереди, может неправильно применить всю технику.

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

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

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

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

Государство. Многолетние программы часто накапливают огромную неявную НЗР по многим рабочим потокам, каждый индивидуально обоснован, без видимости общей суммы по всей организации. Внедрение видимости НЗР на уровне портфеля, даже неформально, часто единственный самый убедительный аргумент для последовательности работы, а не выполнения всего параллельно, поскольку стоимость эффективности потока от высокой НЗР заметно усугубляется, как только измерена.

Примеры

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

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

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

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

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

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

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

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

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

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

  1. Какова наша фактическая эффективность потока, честно вычисленная по реальным данным?
  2. Сколько незавершённой работы у нас сейчас есть, которую никто не подсчитывал до этого обсуждения?
  3. Чему нам нужно было бы сказать «нет», чтобы соблюдать реальный лимит НЗР?
  4. Какова единственная самая распространённая причина, по которой работа простаивает в нашем конвейере?
  5. Где в нашей организации НЗР на уровне портфеля невидима и, вероятно, слишком высока?

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

  • Эффективность потока, отношение активного времени к общему времени, обычно ниже 25% в реальных конвейерах доставки; время ожидания, а не усилия, доминирует.
  • Ограничение незавершённой работы имеет тенденцию увеличивать пропускную способность, а не уменьшать её, сокращая переключение контекста и укорачивая очереди.
  • Применяйте лимит НЗР как системное ограничение, никогда как индивидуальную квоту.
  • Исследуйте конкретную причину, по которой работа простаивает, а не издавайте общую директиву «сократить время ожидания».
  • Следите за разрушением лимитов НЗР через рутинные исключения; относитесь к каждому исключению как к сознательному видимому решению.
  • Тема 2.4 называет это количество нагрузкой потока, а тема 2.7 формализует связь как закон Литтла: незавершённая работа равна темпу поступления, умноженному на время цикла, для любой стабильной очереди.

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

  • The Principles of Product Development Flow, Дональд Г. Рейнертсен.
  • Kanban: Successful Evolutionary Change for Your Technology Business, Дэвид Дж. Андерсон.
  • Actionable Agile Metrics for Predictability, Дэниел С. Ваканти.
  • The Goal, Элияху М. Голдратт.