Уход за беклогом (груминг), или Как сделать планирование спринтов легкой задачей

Довольно давно, когда я запускал свой первый Скрам-проект (Ciklum, проект Encode, 2004 год) мы не знали, что такое груминг.

 

Заказчик созванивался с нами для планирования спринта… и тут начиналось: мы задавали глупые вопросы; заказчик куда-то убегал за ответами, с кем-то советовался и менял приоритеты; мы воевали с картами за истории, били истории на задачи… и так бесконечно. Планирование спринта у нас редко занимало меньше 8 часов.

 

Хуже всего то, что через две недели этот кошмар нужно было повторить. Сильная закалка для Скрам-мастера! :)

Груминг как он есть
Груминг как он есть

Что мы делали не так? Что мы упускали? Что бы я делал сейчас по-другому?

Сегодня практика “причесывания беклога” (по-английски: “grooming”) является одной из тех активностей, без которых не обходятся продуктивные agile-команды.

 

Эта практика описана в “Скрам-гайде” от Швабра и Сазерленд, формальном описании Скрама.

Что такое груминг? Дополнительная церемония Скрама? Как и когда его проводить?

Груминг – это не ещё один тип встреч в Скраме. Это активность, которая делается на протяжении спринта для подготовки беклога к следующему спринт-планированию.

 

Груминг стоит проводить:

  • активно в начале проекта или релиза;
  • затем регулярно (или по необходимости) в течение всего проекта, выделяя на эту активность время в каждом спринте.

В начале проекта на груминги может уходить немало времени. Чтобы всё-таки был прогресс по выполнению текущих задач, а вы не занимались слепым анализом требований, советуем взять за правило тратить не больше 10% от времени спринта на груминги.

Когда у вас появится достаточно нагрумленных историй на 2-3 спринта вперёд, стоит чуть сбавить темп и дальше грумить регулярно, но понемногу. Так вы будете поддерживать в постоянном здоровом состоянии верхушку беклога.

Здоровое состояние беклога или Definition of Ready:

  • верхушки беклога достаточно на 2-3 спринта;
  • эти истории понятны всем членам команды;
  • истории имеют такой размер, что несколько из них могут быть сделаны за спринт;
  • истории оценены командой;
  • записаны критерии приёмки или “how to demo”.

Как можно провести сессии груминга?

Печать истории из треккинга:

Пригласить Владельца Продукта приехать и поучаствовать вживую:

Создать непринужденную атмосферу и погрумить в свое удовольствие: 

Советы по грумингу:

  1. Сделайте груминг частью вашего процесса.
  2. Выработайте понятие здорового беклога – “Definition of Ready”.
  3. Заведите понятие “текущего” и “следующего” релиза, что позволит заказчику управлять объёмом работы текущего релиза.
  4. Встречайтесь вживую всей командой и Владельцем Продукта как минимум раз в релиз для одноразового масштабного груминга и планирования релиза.
  5. В каждом спринте выделяйте время всей команды на регулярные grooming-сессии – скажем, каждую среду c 11:00 до 12:00.
  6. Во время груминга работайте с бумажным беклогом.

Write a comment

Comments: 145
  • #1

    цац (Wednesday, 18 September 2019 14:56)

    Какой только херни не придумают лишь бы усложнить жизнь программистам, а менеджерам пыль в глаза руководству пустить

  • #2

    Oleksand Chovhan (Thursday, 07 November 2019 23:56)

    Цац не в себе

  • #3

    Alexandr Bondarenko (Wednesday, 29 April 2020 20:17)

    Цац, приди в себя!

  • #4

    Груммер Ебатель (Thursday, 16 July 2020 11:58)

    Цец дело говорит. Цац хуйни не скажет.

  • #5

    Анти-цац (Tuesday, 03 November 2020 08:46)

    Цац, уверуй.
    Скрам - это сексуально

  • #6

    не-цац (Friday, 12 February 2021 08:55)

    цац

  • #7

    Анон (Friday, 12 February 2021 16:10)

    Если этой "херни" не будет, то бэклог будет в говне..

    Ну или если Вы работайте в финтехе, то тут другая проблема, там всем плевать на бэклог :)

  • #8

    Ламер (Tuesday, 14 September 2021 03:42)

    Комментарии порадовали))

  • #9

    Просто я (Thursday, 16 September 2021 12:35)

    Цац всё правильно сказал.

  • #10

    цац (Sunday, 10 October 2021 10:26)

    я был не прав...

  • #11

    exmr (Friday, 26 November 2021 09:31)

    Люди, очнитесь: разработчики, аналитики, тестировщики вырезают бумажечки и играются с ними... Что за детский сад? Может вместо этого работать лучше?

    цац пророк наш

  • #12

    Груммер-Ахуеватель (Friday, 24 December 2021 21:44)

    Всем пива

  • #13

    ZMskyuza (Wednesday, 26 October 2022 17:23)

    20

  • #14

    ZMskyuza (Wednesday, 26 October 2022 20:37)

    20

  • #15

    ZMskyuza (Wednesday, 26 October 2022 20:38)

    20

  • #16

    ZMskyuza (Wednesday, 26 October 2022 20:39)

    20

  • #17

    ZMskyuza (Wednesday, 26 October 2022 20:40)

    20

  • #18

    ZMskyuza (Wednesday, 26 October 2022 20:40)

    20

  • #19

    ZMskyuza (Wednesday, 26 October 2022 20:41)

    20

  • #20

    ZMskyuza (Wednesday, 26 October 2022 20:42)

    20

  • #21

    ZMskyuza (Wednesday, 26 October 2022 20:43)

    20

  • #22

    ZMskyuza (Wednesday, 26 October 2022 20:43)

    20

  • #23

    ZMskyuza (Wednesday, 26 October 2022 20:44)

    20

  • #24

    ZMskyuza (Wednesday, 26 October 2022 20:45)

    20

  • #25

    ZMskyuza (Wednesday, 26 October 2022 20:46)

    20

  • #26

    ZMskyuza (Wednesday, 26 October 2022 20:47)

    20

  • #27

    ZMskyuza (Wednesday, 26 October 2022 20:47)

    20

  • #28

    ZMskyuza (Wednesday, 26 October 2022 20:48)

    20

  • #29

    ZMskyuza (Wednesday, 26 October 2022 20:49)

    20

  • #30

    ZMskyuza (Wednesday, 26 October 2022 20:50)

    20

  • #31

    ZMskyuza (Wednesday, 26 October 2022)

    20

  • #32

    ZMskyuza (Wednesday, 26 October 2022 20:51)

    20

  • #33

    ZMskyuza (Wednesday, 26 October 2022 20:52)

    20

  • #34

    ZMskyuza (Wednesday, 26 October 2022 20:53)

    if(now()=sysdate(),sleep(15),0)

  • #35

    ZMskyuza (Wednesday, 26 October 2022 20:54)

    0'XOR(if(now()=sysdate(),sleep(15),0))XOR'Z

  • #36

    ZMskyuza (Wednesday, 26 October 2022 20:55)

    0"XOR(if(now()=sysdate(),sleep(15),0))XOR"Z

  • #37

    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)+"*/

  • #38

    ZMskyuza (Wednesday, 26 October 2022 20:56)

    -1; waitfor delay '0:0:15' --

  • #39

    ZMskyuza (Wednesday, 26 October 2022 20:57)

    -1); waitfor delay '0:0:15' --

  • #40

    ZMskyuza (Wednesday, 26 October 2022 20:58)

    1 waitfor delay '0:0:15' --

  • #41

    ZMskyuza (Wednesday, 26 October 2022 20:58)

    S7sHdJ7C'; waitfor delay '0:0:15' --

  • #42

    ZMskyuza (Wednesday, 26 October 2022 20:59)

    -5 OR 215=(SELECT 215 FROM PG_SLEEP(15))--

  • #43

    ZMskyuza (Wednesday, 26 October 2022 21:00)

    -5) OR 869=(SELECT 869 FROM PG_SLEEP(15))--

  • #44

    ZMskyuza (Wednesday, 26 October 2022 21:01)

    -1)) OR 406=(SELECT 406 FROM PG_SLEEP(15))--

  • #45

    ZMskyuza (Wednesday, 26 October 2022 21:01)

    oW7yo75E' OR 186=(SELECT 186 FROM PG_SLEEP(15))--

  • #46

    ZMskyuza (Wednesday, 26 October 2022 21:02)

    lkoGzBVo') OR 437=(SELECT 437 FROM PG_SLEEP(15))--

  • #47

    ZMskyuza (Wednesday, 26 October 2022 21:03)

    F7FwSLBd')) OR 932=(SELECT 932 FROM PG_SLEEP(15))--

  • #48

    ZMskyuza (Wednesday, 26 October 2022)

    20*DBMS_PIPE.RECEIVE_MESSAGE(CHR(99)||CHR(99)||CHR(99),15)

  • #49

    ZMskyuza (Wednesday, 26 October 2022 21:04)

    20'||DBMS_PIPE.RECEIVE_MESSAGE(CHR(98)||CHR(98)||CHR(98),15)||'

  • #50

    ZMskyuza (Wednesday, 26 October 2022 21:05)

    20

  • #51

    ZMskyuza (Wednesday, 26 October 2022 21:06)

    20

  • #52

    ZMskyuza (Wednesday, 26 October 2022 21:07)

    20

  • #53

    ZMskyuza (Wednesday, 26 October 2022 21:08)

    20

  • #54

    ZMskyuza (Wednesday, 26 October 2022 21:08)

    20

  • #55

    ZMskyuza (Wednesday, 26 October 2022 21:09)

    20

  • #56

    ZMskyuza (Wednesday, 26 October 2022 21:10)

    20

  • #57

    ZMskyuza (Wednesday, 26 October 2022 21:11)

    20

  • #58

    ZMskyuza (Wednesday, 26 October 2022 21:11)

    20

  • #59

    ZMskyuza (Wednesday, 26 October 2022 21:12)

    20

  • #60

    ZMskyuza (Wednesday, 26 October 2022 21:13)

    20

  • #61

    ZMskyuza (Wednesday, 26 October 2022 21:13)

    20

  • #62

    ZMskyuza (Wednesday, 26 October 2022 21:14)

    20

  • #63

    ZMskyuza (Wednesday, 26 October 2022 21:15)

    20

  • #64

    ZMskyuza (Wednesday, 26 October 2022 21:16)

    20

  • #65

    ZMskyuza (Wednesday, 26 October 2022 21:17)

    20

  • #66

    ZMskyuza (Wednesday, 26 October 2022 21:18)

    20

  • #67

    ZMskyuza (Wednesday, 26 October 2022 21:19)

    20

  • #68

    ZMskyuza (Wednesday, 26 October 2022 21:20)

    20

  • #69

    ZMskyuza (Wednesday, 26 October 2022 21:21)

    20

  • #70

    ZMskyuza (Wednesday, 26 October 2022 21:21)

    20

  • #71

    ZMskyuza (Wednesday, 26 October 2022 21:22)

    20

  • #72

    ZMskyuza (Wednesday, 26 October 2022 21:23)

    20

  • #73

    ZMskyuza (Wednesday, 26 October 2022 21:24)

    20

  • #74

    ZMskyuza (Wednesday, 26 October 2022 21:25)

    20

  • #75

    ZMskyuza (Wednesday, 26 October 2022 21:26)

    20

  • #76

    ZMskyuza (Wednesday, 26 October 2022 21:27)

    20

  • #77

    ZMskyuza (Wednesday, 26 October 2022 21:28)

    20

  • #78

    ZMskyuza (Wednesday, 26 October 2022 21:28)

    20

  • #79

    ZMskyuza (Wednesday, 26 October 2022 21:29)

    20

  • #80

    ZMskyuza (Wednesday, 26 October 2022 21:30)

    20

  • #81

    ZMskyuza (Wednesday, 26 October 2022 21:31)

    20

  • #82

    ZMskyuza (Wednesday, 26 October 2022 21:33)

    20

  • #83

    ZMskyuza (Wednesday, 26 October 2022 21:45)

    20

  • #84

    ZMskyuza (Wednesday, 26 October 2022 21:46)

    20

  • #85

    if(now()=sysdate(),sleep(15),0) (Wednesday, 26 October 2022 21:47)

    20

  • #86

    0'XOR(if(now()=sysdate(),sleep(15),0))XOR'Z (Wednesday, 26 October 2022 21:48)

    20

  • #87

    0"XOR(if(now()=sysdate(),sleep(15),0))XOR"Z (Wednesday, 26 October 2022 21:49)

    20

  • #88

    1 waitfor delay '0:0:15' -- (Wednesday, 26 October 2022)

    20

  • #89

    Tjarur2c'; waitfor delay '0:0:15' -- (Wednesday, 26 October 2022 21:51)

    20

  • #90

    BKdBoq5z' OR 780=(SELECT 780 FROM PG_SLEEP(15))-- (Wednesday, 26 October 2022 21:52)

    20

  • #91

    dHR5cFTn') OR 450=(SELECT 450 FROM PG_SLEEP(15))-- (Wednesday, 26 October 2022 21:53)

    20

  • #92

    rfNjQqiX')) OR 822=(SELECT 822 FROM PG_SLEEP(15))-- (Wednesday, 26 October 2022 21:54)

    20

  • #93

    ZMskyuza'||DBMS_PIPE.RECEIVE_MESSAGE(CHR(98)||CHR(98)||CHR(98),15)||' (Wednesday, 26 October 2022 21:54)

    20

  • #94

    ZMskyuza (Wednesday, 26 October 2022 21:55)

    20

  • #95

    ZMskyuza (Wednesday, 26 October 2022 21:56)

    20

  • #96

    ZMskyuza (Wednesday, 26 October 2022 21:57)

    20

  • #97

    ZMskyuza (Wednesday, 26 October 2022 21:58)

    20

  • #98

    ZMskyuza (Wednesday, 26 October 2022 21:58)

    20

  • #99

    ZMskyuza (Wednesday, 26 October 2022 21:59)

    20

  • #100

    ZMskyuza (Wednesday, 26 October 2022 22:00)

    20

  • #101

    ZMskyuza (Wednesday, 26 October 2022 22:01)

    20

  • #102

    ZMskyuza (Wednesday, 26 October 2022 22:02)

    20

  • #103

    ZMskyuza (Wednesday, 26 October 2022 22:02)

    20

  • #104

    ZMskyuza (Wednesday, 26 October 2022 22:03)

    20

  • #105

    ZMskyuza (Wednesday, 26 October 2022 22:04)

    20

  • #106

    ZMskyuza (Wednesday, 26 October 2022 22:05)

    20

  • #107

    ZMskyuza (Wednesday, 26 October 2022 22:06)

    20

  • #108

    ZMskyuza (Wednesday, 26 October 2022 22:06)

    20

  • #109

    ZMskyuza (Wednesday, 26 October 2022 22:07)

    20

  • #110

    ZMskyuza (Wednesday, 26 October 2022 22:08)

    20

  • #111

    ZMskyuza (Wednesday, 26 October 2022 22:09)

    20

  • #112

    ZMskyuza (Wednesday, 26 October 2022 22:10)

    20

  • #113

    ZMskyuza (Wednesday, 26 October 2022 22:10)

    20

  • #114

    ZMskyuza (Wednesday, 26 October 2022 22:11)

    20

  • #115

    ZMskyuza (Wednesday, 26 October 2022 22:12)

    20

  • #116

    ZMskyuza (Wednesday, 26 October 2022 22:13)

    20

  • #117

    ZMskyuza (Wednesday, 26 October 2022 22:14)

    20

  • #118

    ZMskyuza (Wednesday, 26 October 2022 22:15)

    20

  • #119

    ZMskyuza (Wednesday, 26 October 2022 22:15)

    20

  • #120

    ZMskyuza (Wednesday, 26 October 2022 22:16)

    20

  • #121

    ZMskyuza (Wednesday, 26 October 2022 22:17)

    20

  • #122

    ZMskyuza (Wednesday, 26 October 2022 22:17)

    20

  • #123

    ZMskyuza (Wednesday, 26 October 2022 22:18)

    20

  • #124

    ZMskyuza (Wednesday, 26 October 2022 22:19)

    20

  • #125

    ZMskyuza (Wednesday, 26 October 2022 22:20)

    20

  • #126

    ZMskyuza (Wednesday, 26 October 2022 22:21)

    20

  • #127

    ZMskyuza (Wednesday, 26 October 2022 22:22)

    20

  • #128

    ZMskyuza (Wednesday, 26 October 2022 22:22)

    20

  • #129

    ZMskyuza (Wednesday, 26 October 2022 22:23)

    20

  • #130

    ZMskyuza (Wednesday, 26 October 2022 22:24)

    20

  • #131

    ZMskyuza (Wednesday, 26 October 2022 22:25)

    20

  • #132

    ZMskyuza (Wednesday, 26 October 2022 22:26)

    20

  • #133

    ZMskyuza (Wednesday, 26 October 2022 22:26)

    20

  • #134

    ZMskyuza (Wednesday, 26 October 2022 22:27)

    20

  • #135

    ZMskyuza (Wednesday, 26 October 2022 22:28)

    20

  • #136

    ZMskyuza (Wednesday, 26 October 2022 22:28)

    20

  • #137

    ZMskyuza (Wednesday, 26 October 2022 22:29)

    20

  • #138

    ZMskyuza (Wednesday, 26 October 2022 22:30)

    20

  • #139

    ZMskyuza (Wednesday, 26 October 2022 22:31)

    20

  • #140

    ZMskyuza (Wednesday, 26 October 2022 22:31)

    20

  • #141

    ZMskyuza (Wednesday, 26 October 2022 22:32)

    20

  • #142

    ZMskyuza (Wednesday, 26 October 2022 23:13)

    20

  • #143

    ZMskyuza (Wednesday, 26 October 2022 23:57)

    20

  • #144

    ZMskyuza (Thursday, 27 October 2022 01:21)

    20

  • #145

    ZMskyuza (Thursday, 27 October 2022 02:37)

    20