Мы используем файлы cookie. Продолжив работу с сайтом, вы соглашаетесь с Политикой обработки персональных данных.
OK

WSJF: «Более важная и короткая работа в первую очередь»

Перевод статьи, размещённой на blackswanfarming.com.

Оригинал можно прочитать здесь.
Что такое WSJF?
«Более важная и короткая работа в первую очередь» (Weighted Shortest Job First) - это алгоритм планирования (или, если вы предпочитаете, метод расстановки приоритетов), который максимизирует количество того, что вы выбираете для «взвешивания» за определённый период времени с помощью ограниченного ресурса.
Откуда пришёл этот алгоритм?
Ещё в 1970-х годах, когда вычислительные ресурсы были чрезвычайно дорогими и сильно ограниченными, Кратчайшее оставшееся время (Shortest Job First) использовалось как способ планирования пакетных заданий так, чтобы максимально использовать ограниченный ресурс. Совсем недавно Дон Рейнертсен предложил и популяризировал принцип «Более важная и короткая работа в первую очередь» как способ максимизировать отдачу от инвестиций в команды разработчиков ПО.

Для WSJF требуются только два ингредиента: вес каждой работы и продолжительность каждой работы. Весом, который Дон специально рекомендует для разработки продукта, является Стоимость задержки (вот 3-х минутное видео, в котором объясняется Стоимость задержки). Другая часть, продолжительность означает насколько «коротка» каждая работа. Нам нужно знать: «Как долго эта работа будет блокировать пайплайн?» Для этого нам нужен некоторый прогноз продолжительности выполнения этой работы. Это важно, потому что пока он находится в процессе, он блокирует запуск другой работы. В течение этого времени мы платим Стоимость задержки. Дон конкретно предлагает особую форму WSJF: Стоимость задержки, делённая на Продолжительность.

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

CD3: Стоимость задержки, деленная на Продолжительность
Говорить «Более важная и короткая работа в первую очередь» или, более конкретно, «Стоимость задержки, деленная на продолжительность утомляет. Для облегчения мы можем сократить это до CD3 — по крайней мере, для случая, когда мы взвешиваем Стоимость задержки. У этой формулировки есть преимущество, что она сообщает о более важном компоненте алгоритма: стоимости задержки.

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

Поскольку CD3 использует в знаменателе длительность, то он имеет преимущество — он способствует разбивке работы на более мелкие партии. Разбивка работы — одно из самых простых и эффективных улучшений, которые мы можем сделать с точки зрения получения большей ценности, более быстрого выполнения и лучшего качества.
WSJF: Стоимость задержки, деленная на Продолжительность
Давайте рассмотрим пример, который поможет нам понять, как и почему WSJF/CD3 повышает рентабельность инвестиций. Рассмотрим следующие три функции, для которых мы получим результаты двух альтернативных подходов к планированию.
Использование метода «Первым пришёл — первым ушёл» (First-in, First-out, FIFO)
Мы могли бы работать над этими функциями и предоставлять их по очереди в том порядке, в котором они поступили. A, затем B, затем C. Это называется «Первым пришёл — первым ушёл» (FIFO). Это распространённый подход к планированию в производстве. В конце концов, человек, запрашивающий функцию А, будет ждать дольше всех, поэтому для нас может иметь смысл сначала обслужить его. Затем мы перейдем к B, а затем C.

В течение 5 недель, когда мы работаем над функцией А, мы несём расходы на задержку всех трёх функций: $ 5000 в неделю + $ 4000 в неделю + $ 1000 в неделю. Это добавляет до $ 10 000 в неделю в течение 5 недель, что даёт нам затраты на задержку в размере $ 50 000.

Как только мы доставим функцию A, мы сможем перейти к разработке функции B. В течение 1 недели, которая потребуется нам для поставки, мы нёсем Расходы на задержку функций B и C: $ 4000 в неделю + $ 5000 в неделю = $ 9000 в неделю в течение 1 недели, т. е. дополнительные $ 9000, в результате чего общая сумма понесённых затрат на задержку составляет $ 59 000.

Наконец, мы можем начать работу над функцией C, понеся Расходы на задержку C во время её разработки в размере $ 5000 в неделю в течение 2 недель, необходимых для создания функции C. Таким образом, еще $ 10 000. Затраты на задержку должны быть добавлены к нашим предыдущим $ 59 000 в общей сложности $ 69 000 понесённых затрат на задержку.
Использование WSJ: Стоимость задержки, деленная на Продолжительность (CD3)
Давайте рассмотрим другой способ обработки этих функций. Если мы разработаем функции на основе того, у кого самый высокий балл CD3, мы сначала сделаем функцию B, затем функцию C и, наконец, функцию A.

В течение 1 недели, пока мы работаем над функцией B, мы несём расходы на задержку в размере ($ 4000 + $ 5000 + $ 1,000)/неделя. Стоимость задержки после 1 недели = $ 10 000.

В течение следующих 2 недель мы работаем над функцией C, мы несём расходы на задержку в размере ($ 5000 + $ 1000)/неделя. Стоимость задержки = $ 12 000.

В течение 5 недель, над которыми мы работаем над функцией А, мы несём расходы на задержку в размере $ 1000 в неделю. Стоимость задержки = $ 5000.

Общая стоимость задержки при использовании CD3 = $ 27 000

Сравнение
Использование FIFO привело к общей стоимости задержки в размере $ 69 000. Использование CD3 дало нам общую стоимость задержки в размере $ 27 000, т. е. на 61% меньше понесённых затрат на задержку. Как вы можете видеть, использование CD3-версии «Более важной и короткой работы в первую очередь» для упорядочения вашего бэклога может иметь довольно большое значение.

Однако, это простое сравнение не показывает влияние человеческого фактора, т. е. желания выполнять более мелкие задачи в первую очередь. А также не показывает влияние этого предпочтения на поток и сроки выполнения.

Как мы показали в нашем отчёте: использование CD3 также способствует разбивке пакетов, как способу влияния на приоритет. Это означает, что вместо того, чтобы вознаграждать более крупные партии, которые часто требуют более высоких выплат, мы призываем людей минимизировать размер того, что они просят. Это даёт огромные преимущества в ряде областей, не в последнюю очередь из-за значительно более быстрого выполнения заказов, а также повышения производительности, благодаря уменьшению вариабельности обрабатываемых рабочих элементов.
SAFe (Scaled Agile Framework), WSJF и Стоимость задержки
Большим преимуществом WSJF является то, что масштабированный гибкий фреймворк Дина Леффингвелла (SAFe) рекомендует использовать его для определения приоритетов. SAFe также подчёркивает, что WSJF следует применять на уровне функций, что также соответствует нашему опыту использования Стоимости задержки. Одна из самых разрушительных концепций, когда-либо существовавших в организациях, заключается в том, что крупносерийные проекты являются «локомотивом» разработки ПО. SAFe следует похвалить за поощрение организаций к дальнейшему развитию в обеих этих областях.

Нынешнее обучение WSJF в SAFe оставляет много возможностей для улучшения — в частности, как они относятся к стоимости задержки. В своей попытке упростить стоимость задержки, SAFe, возможно, непреднамеренно усложнила её и сделала бесполезной для большей части стоимости, которую может принести Стоимость задержки. Вот мои мысли о том, как SAFe интерпретирует стоимость задержки.

Моя главная просьба состояла бы в том, чтобы убедиться, что вы не сводите стоимость задержки к простому лучшему способу определения приоритетов — это гораздо больше!
Эту тему мы разбираем на тренингах:
Четырехдневный онлайн-курс
Kanban System Design
Расширенный курс по построению систем управления с дополнительными материалами и проработкой большего числа кейсов и вопросов. Курс будет полезен для менеджеров проектов, топ-менеджеров и менеджеров среднего звена, которые хотят провести изменения постепенно, избежать сопротивления и повысить эффективность работы команды в сложных условиях.
Шестидневный онлайн-курс
Extended Kanban System Design
Расширенный курс по построению систем управления с дополнительными материалами и проработкой большего числа кейсов и вопросов. Курс будет полезен для менеджеров проектов, топ-менеджеров и менеджеров среднего звена, которые хотят провести изменения постепенно, избежать сопротивления и повысить эффективность работы команды в сложных условиях.