Уже 3 статьи посвятил Стори Поинтам, начал почему-то с более сложных и замороченных вещей. А тут внезапно поступил запрос в стиле “Прикольно написано и разжевано, но что такое этот Стори Поинт?”.
Давайте попробуем разобраться, а что это за такая оценка, почему она вдруг появилась, как её использовать и зачем вообще пытаться переключиться на какие-то другие системы координат, когда есть классические часы.
Чего я только не наслушался в качестве ответа на вопрос: “Что такое Стори Поинты?”, и объём, и альтернативное время, и капасити, и сложность… и самое смешное, что всё это недалеко от истины и в то же время совершенно не то )) Го разбираться ))
Я точно не собираюсь вам пересказывать изначальную историю создания Стори Поинтов, вы можете погуглить и найти эту информацию в первоисточнике, я попробую “на пальцах” помочь понять, для чего, зачем и как использовать.
Давайте представим, что у нас есть задача - выкопать яму 3 кубических метра. И тут ЗАДАЧА это “выкопать яму”, а тот самый объём = 3 кубических метра. И можно быстро ответить, что “Вот же, 3 кубических метра это и есть Стори Поинт!”, увы, но нет ))
Кроме того, что есть понятный объём, есть ещё несколько дополнительных факторов, которые в итоге повлияют на конечных результат:
1. Кто будет выполнять работу?
Например, 1 студент, команда из нескольких студентов или профессиональных рабочих, экскаваторщик, смешанная команда из нескольких студентов и рабочих, команда из нескольких рабочих и экскаваторщика и т.п. На самом деле вариантов много, и это, конечно, повлияет на срок выполнения.
2. Что сокрыто под землей в том месте, где необходимо выкопать яму?
Если в этом месте ранее не проводились никакие земляные работы, то до того момента, пока кто-то не начнёт копать, мы точно не знаем, насколько каменистая почва или есть ли какие-то подземные родники или пустоты. Если же в этом месте ранее проводились работы, то необходимо убедиться, что нет коммуникаций и любых конструкций, которые могут как-то помешать выполнению работ. Хорошо бы сразу понять, есть ли возможность провести предварительный анализ почвы, или заказчик готов смириться с рисками и действовать по мере выполнения задачи. И этот фактор тоже влияет на срок выполнения работ.
3. Какая погода будет в момент копания ямы и повлияет ли она на исполнителей?
Как бы мы ни планировали работы, погода может внезапно внести свои корректировки, и если первые 2 пункта более-менее прогнозируемы, то внезапно начавшийся дождь может довольно существенно изменить первоначальный прогнозируемый срок выполнения.
4. С каким качеством необходимо обеспечить “финальную” яму?
Важный, хотя не всегда облюбованный вниманием фактор. На примере ямы, насколько идеально ровными должны быть пол и стены, насколько идеальными 90-градусными должны быть углы, какие допустимы погрешности. И как не трудно догадаться, это тоже повлияет на срок выполнения. И помимо хотелок заказчика будет напрямую связано с 1, 2 и 3 предыдущими пунктами.
5. Дополнительные риски.
Никак нельзя забывать про дополнительные риски, например, болезни, геополитическая обстановка в зоне работ, локальные праздники и психологический настрой работников. Конечно и это тоже повлияет на срок выполнения.
Ну и вроде бы всё просто, берем исполнителей, узнаём, за сколько они выкопают яму, запускаем работы, ждём и получаем результат.
И вот день Х и вы приходите за результатом, давайте пофантазируем, какие могут быть варианты:
1. Яма вырыта, но заполнена водой.
Возможно сыграл риск с погодой, или на месте ямы проходит водопровод и экскаватор его задел, может быть вода имеет природное происхождение и за ночь яма заполнилась грунтовыми водами. В общем, сыграли риски.
2. Яма вырыта наполовину.
Возможно кто-то из исполнителей заболел, возможно копатели наткнулись на камни, возможно погода была непригодной для проведения работ и работы начались намного позже. Хммм… снова риски.
3. На месте одной ямы в 3 кубометра 3 ямы по одному кубометру.
Возможно почва ниже одного метра стала слишком каменистой и исполнитель решил, что можно рядом вырыть пару ям по метру и будет норм, или когда озвучивалась задача по телефону, были проблемы со связью и исполнитель услышал, что надо выкопать 3 кубометра земли, а как именно - неважно. Дурацкие, но риски )))
4. На месте ямы - ничего.
Классика жанра, договорились о работах и том, что они будут длиться столько-то времени, но как-то неоднозначно договорились о том, когда начало, а когда конец. Или исполнитель взял предоплату и исчез? Или предоплаты не было и исполнитель забил? А может у прораба вчера был ДР и сегодня он всем дал выходной? А может только сегодня утром закончился ураган? Риски! ))
5. Яма вырыта, но она ПОЧТИ 3 кубометра.
То ли у исполнителя инструмент некачественный, то ли постановка задачи не очень корректная, то ли погодные условия не позволили в метель точно провести измерения. Ага, снова те самые риски ))
6. Яма вырыта, но она 5 кубометров.
Тут как и некачественный инструмент, так и желание “сделать получше” могут сыграть. Точно-точно, снова риски.
… нет, Стори Поинты это не риски, но я хочу сделать акцент на том, что риски существенно влияют на сроки при одном и том же объёме.
Ладно, давайте представим, что исполнитель всё сделал вовремя и с ожидаемым качеством. Во второй раз то же самое и результат тот же, а вот в третий внезапно готово только пол-ямы. При разборе оказалось, что почва немного другая и предусмотреть никак. Потом через 3 ямы, опа, и исполнитель выдал 5-кубовую яму, так как соседний отдел сказал, что им надо в этом месте 5 кубов, и вашу трех кубовую “внутрь к себе заберут”. Потом 1 раз сделали трех кубовую яму в 3 раза быстрее. Потом 5 ям подряд делали в 3 раза дольше, так как там и погода была не очень, и почва оказалась каменистой, и водопровод чуть не повредили.
Я вас подвожу к тому, что даже одинаковая по ОБЪЁМУ работа, выполняемая одинаковыми людьми при казалось бы одинаковых первоначальных вводных, может выполняться разное количество времени. Но конечный-то результат вроде как не менялся.
Т.е. по факту получается, что мы не можем сделать однозначную прямолинейную конвертацию из объёма в дэдлайны просто из-за огромного количества дополнительных факторов, которые влияют на окончательный результат.
Что мы точно можем сделать, мы можем взять все трёх кубовые ямы и разделить их на 3 категории: 1. Простые, 2. Нормальные и 3. Сложные.
Далее мы можем определить, что:
- Простые ямы команда делала от 4 часов до 2-х дней,
- Нормальные, от 1 до 4-х дней,
- Сложные от 3-х до 5 дней.
Хотя каждый раз, берясь за работу по вырыванию новой ямы, мы и не можем со 100%-й точностью определить срок, но на основе исторических данных мы можем точно сказать, что за 1 месяц конкретно эта бригада вырывает от 13 до 25 ям с разными категориями. Т.е. по факту можно внимательнее изучить данные и предположить, что в месяц может быть сделано 20 Простых, 2 Сложные и 3 Нормальные ямы. Или 6 Сложных, 5 Нормальных и 2 Простых. И т.д. И вроде у нас появляется какая-то понятность, но с которой работать не всегда удобно, так как любое изменение плана по необходимым ямам тут же требует произвести полный перерасчет. А если дополнительно ещё внести информацию о том, что за месяц бригада в среднем завершает 80-90% от запланированного объёма, то мозг начинает скрипеть сильнее. А если мы дополнительно учтём, что кроме трех кубовых ям у бригады есть однокубовые, пятикубовые, прямоугольные, круглые, ромбовидные и трапециевидные, то становится понятно, что необходимо вносить какие-то цифровые определения для того, чтобы можно было определять объём планируемой на месяц работы.
Чтобы “цифровизировать” наши ямы, мы берем самую типовую простую трёх кубовую яму и присваиваем ей оценку в 1SP. И вот теперь наши Простые трёх кубовые = 1SP. Далее проходимся по всем уже сделанным ямам и распределяем их по шкале упрощенного числового ряда Фибоначчи (0.5, 1, 2, 3, 5, 8, 13, 20, 40 и 100). Тут важно понять, что чем больше число, которое мы присваиваем работе (яме), тем в том числе выше неопределенность.
Может ли у нас получиться так, что простая трёх кубовая попадёт в 2 SP - конечно может, и это совершенно нормально! Просто конкретная трехкубовая и простая делалась, возможно, в период дождей, что добавило ей “веса”. Все сделанные задачи (ямы) необходимо распределить по нашему ряду SP и получить что-то вроде такой картины:
И это будет наш эталонный образец для оценивания новой работы (ям) относительно экспертизы на основе ранее выполненной работы.
Т.е. в дальнейшем, когда Владелец Продукта (прораб) придет к команде и скажет: “Коллеги, у нас с вами предстоит амбициозная задача по выкапыванию трёх кубовой ямы на вершине Фудзиямы”, команда (бригада) тут же определяет, что это очень похоже вот на ту 8-ми стори поинтовую яму, обозначенную как “3-х кубовая сложная”, потому что там как раз и была работа на Фудзияме и прораб также тогда говорил ))
А если, например, прораб скажет, что-то типа: “Ребята, у нас новый вызов, нужна пятикубовая яма на Эвересте!”, то команда вполне вправе закинуть такую задачу (яму) к оценке 40 или даже 100 и дополнительно потребовать исследования для получения новых данных и уточнения оценки. Сама процедура оценивания достойна отдельной статьи… как-нибудь в другой раз.
В общем, оценка в SP - не что иное, как оценка совокупности объёма, рисков, сложности, условий и любых факторов, которые команда посчитает нужными учесть для оценки работы.
Ну допустим ок, и стало понятно, как и что считать, и дальше вопрос: “А зачем? Вот чтобы что?”.
Тут всё элементарно - для того чтобы можно было давать прогноз на определенный период. Если ваша классическая итерация = 1 месяц, то можно исторически посмотреть, каких и сколько “ям” делалось бригадой за эту итерацию, сопоставить их с нашей таблицей, после чего легко получить информацию в виде столбцовой диаграммы, называемой Velocity chart, которая поможет нам в планировании следующих итераций.
Давайте разберем на вышеприведенном примере, как будет выглядеть Velocity:
- Месяц 1: 20 Простых (1*20->20 SP), 2 Сложные (2*5->10 SP) и 3 Нормальные (3*3->9 SP) ямы. Итого: 39 SP. Предположим, что изначально хотели вырыть ещё 3 простые ямы, то есть наш план был 42 SP, получили мы по факту 39 SP, соответственно наша предсказуемость равна 93%, что является очень хорошим результатом.
- Месяц 2: 6 Сложных (6*5->30 SP), 5 Нормальных (5*2->10 SP) и 2 Простых (1*2->2 SP). Итого: 42 SP. Предположим, что изначально хотели вырыть ещё 3 сложные ямы, то есть наш план был 57 SP, получили мы по факту 42 SP, соответственно наша предсказуемость равна 74%, что является НЕ очень хорошим результатом.
Показатель предсказуемости - по сути соотношение плана к факту, где идеальный “зеленый коридор” равен как правило 80-90%. Использовать предсказуемость только для SP, чаще всего, не очень рационально, лучше использовать в комплексе с дополнительными замерами!
В итоге наш Velocity chart с прогнозом на следующий месяц будет выглядеть так:
При построении прогноза я рекомендую использовать исторические данные за 3-5 предыдущих итераций, при этом дополнительно учитывать 20%-ю дельту на риски и возможности. И если ваша команда попадёт в эти прогнозы даже по нижней границе 20%го риска, то у вас с планированием всё очень неплохо, а вот если результаты внезапно будут сильно выше верхней границы 20% возможностей, значит у вас не супер команда, а они вас супер обманывают и/или вы их супер недооцениваете )))
Т.е. имея оценки в SP:
Нам проще быстро оценивать наши задачи на основе нашего опыта и исторических данных.
Мы можем строить прогнозы, не углубляясь в часы и не включая все риски детально.
Даже с учетом высокого уровня неопределенности мы имеем оценки, выраженные в числах, с которыми впоследствии удобно работать.
Вот именно поэтому были придуманы SP ))
Чтобы быстро, просто и с требуемой точностью можно было запланировать работу команды, в работе которой есть условно повторяющиеся задачи с неопределенностью. Все же знают, что разработчики в большинстве своём по сути один и тот же код пишут ))), как и рабочие те же ямы копают, теми же лопатами, теми же руками кирпичи кладут и т.п. [sarcazm]
Вот прочитает всё вышенаписанное начинающий менеджер и такой: “Ну прям ништяяяяк… ща как конвертну SP в часы, деньги смогу планировать и прогнозы строить по бюджетам на любые команды…”.
… а не тут-то было.
Во первых, надо помнить, что если ты внесешь изменение в команду, то все свои исторические данные можешь тут же выкинуть. Например, у тебя уволился рабочий, ты его заменяешь экскаватором, а у тебя почему-то вместо бОльшего количества SP внезапно просадка происходит. Оказывается, чтобы ямы на Фудзияме и Эвересте копать, там инфраструктура должна быть, а её нет, так что у тебя минус человек с огромной дырой в бюджете и т.п.
Во вторых, надо помнить, что если у тебя есть размерная сетка, то она применима только для той команды, которая самостоятельно на сетке расположила свои задачи, а принести эту сетку другой команде и сказать “Делайте так!”, немножечко недостаточно.
Ну и в третьих, не факт, что каждой команде необходимо натягивать на их глобус Стори Поинты.
Что ещё…
Некоторые Agile эксперты в самом начале вместо SP пытаются объяснить на примере размеров домов, животных, кораблей, чудес света и т.п. И всё бы ничего, но ровно до того момента, когда надо всё посчитать, C-lvl менеджмент не очень ценит, когда ему притаскивают презентации, в которых написано что-то типа: “За 3-й квартал 2024г команда сделала 5 задач размером со слона, 10 размером с жирафа и 50 кошечек”. И не буду кривить душой, стори поинты им тоже не очень понятны, но они выглядят намного лучше при использовании план/факта графиков. В общем, я не рекомендую такой способ упрощения, как бы ни казалось, что командам будет легче сначала освоиться со сравнением объектов. Впоследствии переезд на числа в виде SP будет происходить болезненнее.
Если у вас в работе задачи кардинально уникальны и совершенно не повторяются, не надо пытаться натянуть SP, нечего им там делать, только больше сумятицы создаст. Для уникальных задач и исследовательской деятельности ограничение работы сверху подходит в разы больше. Конечно, это тоже отдельная большая история, о которой не сейчас )))
Надо постоянно помнить, что оценивать задачи в SP должна ТОЛЬКО команда. Ни руководитель, ни бизнес-заказчик и т.п. не вправе давать такую оценку. Ну а если оценил, то должен сам сделать )) а если нужна "какая-то оценка", то есть другие инструменты, сходите поучитесь! )))
И команда - значит КОМАНДА, а не один оценил одну яму, второй - вторую, третий краем уха слышал про оценку и т.п. НЕТ! Все сели возле ямы и потратили время, чтобы оценить! Никак иначе. Если так не можете, значит у вас не будет работать этот инструмент.
Снова напоминаю, не конвертируйте SP в часы и/или деньги. Толку от этого нет, даже если в самом начале может показаться, что это “...ой как удобненько”.
А ещё, если у вас вдруг из команды исчез коллега и менеджмент говорит что-то вроде: “Давайте вычтем SP, которые делал ваш коллега, и получим новый прогноз Velocity” - БЕГИТЕ ОТТУДА! [НЕ сарказм]
Ну и повторно напоминаю, не пытайтесь натянуть на всех единую размерную сетку. Никогда и ни в одной компании даже соседние команды не имеют одинаковых оценок. А если такое вам всё-таки встречается, значит эти команды заставили и они тупо “взломали” метрики, с таким же успехом можно графики в презентациях от балды рисовать, так как они ни на что не влияют.
- -
Ранее публиковал статьи про SP: “Ваши Стори Поинты (Story Points/SP) не работают!”, “3 смертных греха при использовании SP” и “Почему не стоит всё оценивать в Стори Поинтах (SP)”.
Очень надеюсь, что помогаю вам! ))
P.S.
Если в вашей компании используется что-то из критикуемого мной, то это не обязательно должно гореть на костре святой инквизиции Agile, просто, возможно, вы используете какой-нибудь “<компанинейм>джайл” и/или работаете в компаниях, в названиях которых есть слова банк, нефть, газ, строй. В общем, не обращайте внимания, это не для вас, я просто вам завидую. Я точно это знаю, я в таких работал :)
P.P.S.
Сложность восприятия материала в этой статье 3 из 10.