Flow Efficiency: почему задача больше ждёт, чем делается
Задача попала в работу в понедельник.
На прод уехала в следующую пятницу.
На календаре — 10 дней.
Выглядит так, будто команда 10 дней делала задачу. Но если разложить путь по этапам, картина обычно менее героическая:
- разработка заняла 1 день;
- ревью — 2 часа;
- тесты — полдня;
- остальное время задача просто ждала.
Ждала уточнений.
Ждала ревью.
Ждала тестирования.
Ждала согласования.
Ждала релиза.
Ждала, пока кто-нибудь вспомнит, что она вообще существует.
Вот это и показывает Flow Efficiency.
Простыми словами:
Flow Efficiency — это доля времени, когда задача реально двигалась, по сравнению со всем временем её жизни в процессе.
Есть active time: над задачей пишут код, ревьюят, тестируют, выкатывают.
Есть waiting time: задача лежит в очереди и ничего полезного с ней не происходит.
Формула без страданий:
Flow Efficiency = время активной работы / общее время прохождения задачи
Если задача ехала 10 дней, а реально над ней работали 2 дня, то проблема, скорее всего, не в том, что разработчики медленно печатают.
Проблема в ожиданиях между этапами.
Для тимлида это полезная метрика, потому что она показывает не «кто виноват», а где поток ломается:
- задачи копятся перед ревью;
- требования долго уточняются;
- тестирование становится бутылочным горлышком;
- согласования съедают сроки;
- у людей слишком много параллельной работы;
- WIP раздут, поэтому всё начато и почти ничего не закончено.
И это очень хороший разговор с бизнесом.
Потому что иногда запрос звучит так:
«Давайте разработчики будут быстрее писать код».
А Flow Efficiency показывает:
«Даже если код писать в два раза быстрее, общий срок почти не изменится, потому что задача большую часть времени ждёт ревью, тестов и согласований».
Это неприятно, зато честно.
Теперь важная часть из рубрики «метрики без насилия».
Flow Efficiency не надо использовать как палку.
Не надо:
- мерить каждого разработчика отдельно;
- требовать 100% эффективности;
- делать выводы по одной задаче;
- сравнивать баг, исследование и большую фичу как одинаковые сущности;
- превращать метрику в повод для охоты на виноватых.
100% Flow Efficiency — это не цель. Это почти фантазия.
У нормальной команды задачи иногда ждут. Вопрос не в том, чтобы убрать ожидание полностью. Вопрос в том, чтобы увидеть, где ожидание стало системой.
Что делать, если Flow Efficiency низкая:
- уменьшить WIP;
- договориться о правилах ревью;
- быстрее уточнять требования;
- назначить владельцев согласований;
- резать крупные задачи;
- автоматизировать ручные проверки;
- явно подсвечивать задачи без движения;
- улучшать один участок за раз, а не «чинить весь процесс» разом.
Главный вывод такой:
Низкая Flow Efficiency часто означает не то, что люди медленно работают.
Она означает, что система плохо пропускает задачи через себя.
Люди могут быть заняты весь день. Календарь может быть забит. Чаты могут кипеть. Но если задачи при этом лежат в очередях, поток всё равно медленный.
А если разложить ваши задачи по времени, где будет больше ожидания: требования, ревью, тесты, согласования или релиз?
Задача попала в работу в понедельник.
На прод уехала в следующую пятницу.
На календаре — 10 дней.
Выглядит так, будто команда 10 дней делала задачу. Но если разложить путь по этапам, картина обычно менее героическая:
- разработка заняла 1 день;
- ревью — 2 часа;
- тесты — полдня;
- остальное время задача просто ждала.
Ждала уточнений.
Ждала ревью.
Ждала тестирования.
Ждала согласования.
Ждала релиза.
Ждала, пока кто-нибудь вспомнит, что она вообще существует.
Вот это и показывает Flow Efficiency.
Простыми словами:
Flow Efficiency — это доля времени, когда задача реально двигалась, по сравнению со всем временем её жизни в процессе.
Есть active time: над задачей пишут код, ревьюят, тестируют, выкатывают.
Есть waiting time: задача лежит в очереди и ничего полезного с ней не происходит.
Формула без страданий:
Flow Efficiency = время активной работы / общее время прохождения задачи
Если задача ехала 10 дней, а реально над ней работали 2 дня, то проблема, скорее всего, не в том, что разработчики медленно печатают.
Проблема в ожиданиях между этапами.
Для тимлида это полезная метрика, потому что она показывает не «кто виноват», а где поток ломается:
- задачи копятся перед ревью;
- требования долго уточняются;
- тестирование становится бутылочным горлышком;
- согласования съедают сроки;
- у людей слишком много параллельной работы;
- WIP раздут, поэтому всё начато и почти ничего не закончено.
И это очень хороший разговор с бизнесом.
Потому что иногда запрос звучит так:
«Давайте разработчики будут быстрее писать код».
А Flow Efficiency показывает:
«Даже если код писать в два раза быстрее, общий срок почти не изменится, потому что задача большую часть времени ждёт ревью, тестов и согласований».
Это неприятно, зато честно.
Теперь важная часть из рубрики «метрики без насилия».
Flow Efficiency не надо использовать как палку.
Не надо:
- мерить каждого разработчика отдельно;
- требовать 100% эффективности;
- делать выводы по одной задаче;
- сравнивать баг, исследование и большую фичу как одинаковые сущности;
- превращать метрику в повод для охоты на виноватых.
100% Flow Efficiency — это не цель. Это почти фантазия.
У нормальной команды задачи иногда ждут. Вопрос не в том, чтобы убрать ожидание полностью. Вопрос в том, чтобы увидеть, где ожидание стало системой.
Что делать, если Flow Efficiency низкая:
- уменьшить WIP;
- договориться о правилах ревью;
- быстрее уточнять требования;
- назначить владельцев согласований;
- резать крупные задачи;
- автоматизировать ручные проверки;
- явно подсвечивать задачи без движения;
- улучшать один участок за раз, а не «чинить весь процесс» разом.
Главный вывод такой:
Низкая Flow Efficiency часто означает не то, что люди медленно работают.
Она означает, что система плохо пропускает задачи через себя.
Люди могут быть заняты весь день. Календарь может быть забит. Чаты могут кипеть. Но если задачи при этом лежат в очередях, поток всё равно медленный.
А если разложить ваши задачи по времени, где будет больше ожидания: требования, ревью, тесты, согласования или релиз?
❤2
Definition of Ready: как не отдавать в разработку задачу-тыкву
Задача попадает в разработку.
Исполнитель назначен.
Срок уже обсуждают.
В Jira статус «В работе».
Через час появляются первые вопросы:
— а какую проблему решаем?
— какой сценарий основной?
— кто принимает результат?
— что делать с пограничными случаями?
— где макеты?
— а зависимость от соседней команды точно закрыта?
Формально задача в работе.
Фактически команда только начала выяснять, что вообще нужно сделать.
И вот здесь начинается дорогой жанр: разработка как способ уточнения требований.
Команда может быстро писать код, оперативно ревьюить и регулярно выкатываться. Но если на вход приходит задача без цели, контекста и критериев готовности, delivery ломается ещё до первой строки кода.
Для этого и нужен Definition of Ready.
Definition of Ready, или DoR, — это договорённость команды о минимальных условиях, при которых задачу можно брать в работу.
Не огромный чек-лист.
Не новая церемония.
Не бюрократический забор вокруг разработки.
А простой фильтр от задач вида:
- «сделайте примерно как у конкурента»;
- «надо срочно, детали уточним потом»;
- «там всё понятно»;
- «начните пока, а бизнес определится по ходу».
То есть от классического управленческого оптимизма, оплаченного временем разработчиков.
Что может входить в DoR для обычной продуктовой задачи:
- понятна цель изменения;
- описан ожидаемый результат;
- есть критерии приёмки;
- определены основные сценарии;
- известны зависимости;
- доступны макеты, контракты или нужные данные;
- понятно, кто отвечает на вопросы;
- задача достаточно мала, чтобы её можно было закончить;
- команда видит основные риски.
Важно: DoR зависит от типа задач.
Для бага он один.
Для продуктовой фичи другой.
Для исследования третий.
Для срочного инцидента вообще могут быть отдельные правила.
Если сделать один универсальный список на 37 пунктов, команда быстро научится его ненавидеть. И будет права.
DoR должен помогать стартовать осознанно, а не превращать подготовку задачи в археологическую экспедицию.
Простой пример.
Без DoR задача уходит в разработку, а потом:
- два дня ждут уточнений;
- переделывают решение после первого показа;
- внезапно находят зависимость от другой команды;
- выясняют, что критерии приёмки все понимали по-разному.
С DoR часть проблем всплывает до старта:
- нет решения по спорному сценарию;
- не готов контракт;
- объём слишком большой;
- непонятно, кто принимает результат.
Задача стартует позже на день, но заканчивается раньше на неделю.
Иногда «быстрее начать» и «быстрее закончить» находятся по разные стороны здравого смысла.
Теперь важное ограничение.
DoR тоже можно испортить.
Он вреден, если:
- чек-лист используют механически;
- аналитики месяцами готовят «идеальную» задачу;
- разработчики прячутся за DoR и отказываются обсуждать неопределённость;
- DoR становится способом перебрасывать ответственность;
- одно правило применяют к фичам, багам, исследованиям и инцидентам.
Хороший DoR не говорит: «мы не начнём, пока всё не идеально».
Он говорит: «мы понимаем достаточно, чтобы начать без очевидного самообмана».
Как внедрить без MBA и процессного театра:
1. Возьмите пять последних задач, которые задержались.
2. Посмотрите, какой информации не хватало на старте.
3. Найдите 4–6 повторяющихся пунктов.
4. Сделайте из них первый Definition of Ready.
5. Через месяц проверьте, стало ли меньше зависаний и переделок.
Не надо начинать с идеального процесса.
Начните с того, что реально болит.
Хороший Definition of Ready не гарантирует, что задача пройдёт идеально.
Он просто снижает вероятность, что разработка станет местом, где команда впервые начинает понимать требования.
А какая информация чаще всего отсутствует в ваших задачах на старте: цель, критерии приёмки, макеты, зависимости или владелец решения?
Задача попадает в разработку.
Исполнитель назначен.
Срок уже обсуждают.
В Jira статус «В работе».
Через час появляются первые вопросы:
— а какую проблему решаем?
— какой сценарий основной?
— кто принимает результат?
— что делать с пограничными случаями?
— где макеты?
— а зависимость от соседней команды точно закрыта?
Формально задача в работе.
Фактически команда только начала выяснять, что вообще нужно сделать.
И вот здесь начинается дорогой жанр: разработка как способ уточнения требований.
Команда может быстро писать код, оперативно ревьюить и регулярно выкатываться. Но если на вход приходит задача без цели, контекста и критериев готовности, delivery ломается ещё до первой строки кода.
Для этого и нужен Definition of Ready.
Definition of Ready, или DoR, — это договорённость команды о минимальных условиях, при которых задачу можно брать в работу.
Не огромный чек-лист.
Не новая церемония.
Не бюрократический забор вокруг разработки.
А простой фильтр от задач вида:
- «сделайте примерно как у конкурента»;
- «надо срочно, детали уточним потом»;
- «там всё понятно»;
- «начните пока, а бизнес определится по ходу».
То есть от классического управленческого оптимизма, оплаченного временем разработчиков.
Что может входить в DoR для обычной продуктовой задачи:
- понятна цель изменения;
- описан ожидаемый результат;
- есть критерии приёмки;
- определены основные сценарии;
- известны зависимости;
- доступны макеты, контракты или нужные данные;
- понятно, кто отвечает на вопросы;
- задача достаточно мала, чтобы её можно было закончить;
- команда видит основные риски.
Важно: DoR зависит от типа задач.
Для бага он один.
Для продуктовой фичи другой.
Для исследования третий.
Для срочного инцидента вообще могут быть отдельные правила.
Если сделать один универсальный список на 37 пунктов, команда быстро научится его ненавидеть. И будет права.
DoR должен помогать стартовать осознанно, а не превращать подготовку задачи в археологическую экспедицию.
Простой пример.
Без DoR задача уходит в разработку, а потом:
- два дня ждут уточнений;
- переделывают решение после первого показа;
- внезапно находят зависимость от другой команды;
- выясняют, что критерии приёмки все понимали по-разному.
С DoR часть проблем всплывает до старта:
- нет решения по спорному сценарию;
- не готов контракт;
- объём слишком большой;
- непонятно, кто принимает результат.
Задача стартует позже на день, но заканчивается раньше на неделю.
Иногда «быстрее начать» и «быстрее закончить» находятся по разные стороны здравого смысла.
Теперь важное ограничение.
DoR тоже можно испортить.
Он вреден, если:
- чек-лист используют механически;
- аналитики месяцами готовят «идеальную» задачу;
- разработчики прячутся за DoR и отказываются обсуждать неопределённость;
- DoR становится способом перебрасывать ответственность;
- одно правило применяют к фичам, багам, исследованиям и инцидентам.
Хороший DoR не говорит: «мы не начнём, пока всё не идеально».
Он говорит: «мы понимаем достаточно, чтобы начать без очевидного самообмана».
Как внедрить без MBA и процессного театра:
1. Возьмите пять последних задач, которые задержались.
2. Посмотрите, какой информации не хватало на старте.
3. Найдите 4–6 повторяющихся пунктов.
4. Сделайте из них первый Definition of Ready.
5. Через месяц проверьте, стало ли меньше зависаний и переделок.
Не надо начинать с идеального процесса.
Начните с того, что реально болит.
Хороший Definition of Ready не гарантирует, что задача пройдёт идеально.
Он просто снижает вероятность, что разработка станет местом, где команда впервые начинает понимать требования.
А какая информация чаще всего отсутствует в ваших задачах на старте: цель, критерии приёмки, макеты, зависимости или владелец решения?
👍2
Team Working Agreements: правила команды, которые действительно помогают
Рубрика: «Из жизни тимлида»
В понедельник писал про готовность задач.
Но даже хорошо подготовленная задача может застрять, если у команды нет общих правил работы.
Большинство команд живёт по правилам.
Просто эти правила часто нигде не записаны.
Кто-то считает нормальным поставить встречу на свободное место в календаре.
Кто-то ожидает ревью в тот же день.
Кто-то пишет обо всех блокировках на daily.
Кто-то молчит неделю, потому что «пока пытаюсь разобраться сам».
Кто-то уверен, что открытый PR кто-нибудь обязательно заметит.
В итоге получается распределённая система без протокола.
Что даже для людей несколько рискованно.
А потом команда удивляется конфликтам, задержкам и разным ожиданиям.
Team Working Agreements — это явные договорённости о том, как команда работает вместе.
Не корпоративный кодекс.
Не документ про ценности.
Не «мы уважаем друг друга и стремимся к excellence».
Это практические правила, которые уменьшают неопределённость в ежедневной работе.
Например, команда может договориться:
- где задавать несрочные вопросы;
- когда писать лично;
- что считается срочным;
- за какое время обычно отвечаем;
- какие решения обязательно фиксируем письменно;
- когда встреча действительно нужна;
- можно ли отказаться от встречи без повестки;
- кто назначает ревьюера;
- за какое время PR должен получить первый взгляд;
- когда спор в комментариях пора переносить в разговор;
- сколько задач можно вести одновременно;
- когда задача считается заблокированной;
- когда нужно эскалировать проблему.
Это не звучит как что-то великое и стратегическое.
Но именно на таких мелочах команда часто теряет больше всего времени.
Пример небольшого набора договорённостей:
- блокировка дольше четырёх часов поднимается в командном чате;
- PR получает первый отзыв в течение рабочего дня;
- решение после встречи фиксируется в задаче;
- срочная задача должна сопровождаться решением, что снимается с текущей работы;
- встречи после 16:00 не ставятся без явной необходимости;
- у разработчика одновременно не больше двух активных задач.
Цифры здесь не универсальные.
Их нельзя торжественно скопировать в каждую команду и ожидать наступления инженерного рая.
Смысл не в конкретных числах.
Смысл в том, чтобы у команды появилась общая версия реальности.
Плохая договорённость:
Звучит красиво, но непонятно, что делать завтра.
Рабочая договорённость:
Тут уже есть конкретное поведение.
Как такие правила создавать?
Лучше не писать их тимлиду единолично и не спускать команде сверху.
Я бы шёл так:
1. Собрать повторяющиеся проблемы команды.
2. Выбрать 3–5 самых болезненных.
3. Сформулировать конкретные правила.
4. Договориться, как замечать нарушения.
5. Через месяц пересмотреть договорённости.
Последний пункт важен.
Working Agreements — это не каменная плита с заповедями.
Это рабочий инструмент.
Команда изменилась, нагрузка изменилась, процесс изменился — договорённости тоже могут измениться.
Что делает такие правила бесполезными:
- слишком много пунктов;
- абстрактные формулировки;
- правила без конкретного поведения;
- отсутствие пересмотра;
- разные правила для руководителя и команды;
- документ, который никто не открывал после создания.
Working Agreements нужны не для того, чтобы контролировать каждый шаг команды.
Они нужны, чтобы люди не тратили силы на постоянное угадывание чужих ожиданий.
Потому что когда правила не проговорены, они всё равно существуют.
Просто у каждого свои.
А это уже не командная работа, а интеграция через сюрпризы.
Какая одна договорённость сильнее всего упростила бы работу вашей команды прямо сейчас?
Рубрика: «Из жизни тимлида»
В понедельник писал про готовность задач.
Но даже хорошо подготовленная задача может застрять, если у команды нет общих правил работы.
Большинство команд живёт по правилам.
Просто эти правила часто нигде не записаны.
Кто-то считает нормальным поставить встречу на свободное место в календаре.
Кто-то ожидает ревью в тот же день.
Кто-то пишет обо всех блокировках на daily.
Кто-то молчит неделю, потому что «пока пытаюсь разобраться сам».
Кто-то уверен, что открытый PR кто-нибудь обязательно заметит.
В итоге получается распределённая система без протокола.
Что даже для людей несколько рискованно.
А потом команда удивляется конфликтам, задержкам и разным ожиданиям.
Team Working Agreements — это явные договорённости о том, как команда работает вместе.
Не корпоративный кодекс.
Не документ про ценности.
Не «мы уважаем друг друга и стремимся к excellence».
Это практические правила, которые уменьшают неопределённость в ежедневной работе.
Например, команда может договориться:
- где задавать несрочные вопросы;
- когда писать лично;
- что считается срочным;
- за какое время обычно отвечаем;
- какие решения обязательно фиксируем письменно;
- когда встреча действительно нужна;
- можно ли отказаться от встречи без повестки;
- кто назначает ревьюера;
- за какое время PR должен получить первый взгляд;
- когда спор в комментариях пора переносить в разговор;
- сколько задач можно вести одновременно;
- когда задача считается заблокированной;
- когда нужно эскалировать проблему.
Это не звучит как что-то великое и стратегическое.
Но именно на таких мелочах команда часто теряет больше всего времени.
Пример небольшого набора договорённостей:
- блокировка дольше четырёх часов поднимается в командном чате;
- PR получает первый отзыв в течение рабочего дня;
- решение после встречи фиксируется в задаче;
- срочная задача должна сопровождаться решением, что снимается с текущей работы;
- встречи после 16:00 не ставятся без явной необходимости;
- у разработчика одновременно не больше двух активных задач.
Цифры здесь не универсальные.
Их нельзя торжественно скопировать в каждую команду и ожидать наступления инженерного рая.
Смысл не в конкретных числах.
Смысл в том, чтобы у команды появилась общая версия реальности.
Плохая договорённость:
Уважительно относимся ко времени коллег.
Звучит красиво, но непонятно, что делать завтра.
Рабочая договорённость:
Не ставим встречи без повестки и ожидаемого результата.
Тут уже есть конкретное поведение.
Как такие правила создавать?
Лучше не писать их тимлиду единолично и не спускать команде сверху.
Я бы шёл так:
1. Собрать повторяющиеся проблемы команды.
2. Выбрать 3–5 самых болезненных.
3. Сформулировать конкретные правила.
4. Договориться, как замечать нарушения.
5. Через месяц пересмотреть договорённости.
Последний пункт важен.
Working Agreements — это не каменная плита с заповедями.
Это рабочий инструмент.
Команда изменилась, нагрузка изменилась, процесс изменился — договорённости тоже могут измениться.
Что делает такие правила бесполезными:
- слишком много пунктов;
- абстрактные формулировки;
- правила без конкретного поведения;
- отсутствие пересмотра;
- разные правила для руководителя и команды;
- документ, который никто не открывал после создания.
Working Agreements нужны не для того, чтобы контролировать каждый шаг команды.
Они нужны, чтобы люди не тратили силы на постоянное угадывание чужих ожиданий.
Потому что когда правила не проговорены, они всё равно существуют.
Просто у каждого свои.
А это уже не командная работа, а интеграция через сюрпризы.
Какая одна договорённость сильнее всего упростила бы работу вашей команды прямо сейчас?
👍2