Scrum и XP: заметки с передовой

Книберг Хенрик

Как мы проводим ретроспективы

 

 

Почему мы настаиваем на том, чтобы все команды проводили ретроспективы

Наиболее важная вещь в отношении ретроспектив - это их проведение.

По некоторым причинам команды не проявляют должного интереса к проведению ретроспектив. Без небольшого давления со стороны многие команды часто пропускают ретроспективу и сразу переходят к следующему спринту. Может быть, это особенность шведского менталитета, в чём я не уверен.

Хотя при этом все вроде соглашаются, что ретроспективы крайне полезны. Я бы даже сказал, что ретроспектива является вторым по значимости мероприятием в Scrum'e (первое - это планирование спринта), потому что это самый подходящий момент для начала улучшений!

Конечно, чтобы возникла хорошая идея, вам не нужна ретроспектива, она может прийти к вам в голову, когда вы дома в душевой кабинке! Но поддержит ли команда вашу идею? Может быть, но вероятность значительно выше, если идея рождается внутри команды, то есть, во время ретроспективы, когда каждый может сделать свой вклад в обсуждение идеи.

Без ретроспектив вы обнаружите, что команда наступает на одни и те же грабли снова и снова.

 

Как мы проводим ретроспективы

Хотя основной формат немного варьируется, но в основном мы делаем так:

• Выделяем 1-3 часа, в зависимости от того насколько долгая ожидается дискуссия.

• Участвуют: product owner, вся команда и я собственной персоной.

• Располагаемся либо в отдельной комнате с уютным мягким уголком, либо на террасе, либо в каком-то другом похожем месте, поскольку нам нравится вести дискуссию в спокойной и непринуждённой атмосфере.

• Зачастую мы стараемся не проводить ретроспективы в рабочей комнате, так как это рассеивает внимание участников.

• Выбираем кого-то в качестве секретаря.

• ScrumMaster показывает sprint backlog и при участии команды подводит итоги спринта. Важные события, выводы и т.д.

• Начинаем «серию» обсуждений. В этот момент каждый имеет шанс высказаться о том, что, по его мнению, было хорошего, что можно было бы улучшить и что бы он сделал по-другому в следующем спринте. При этом его никто не перебивает.

• Мы сравниваем прогнозируемую и реальную производительность. Если имеются существенные расхождения, то пытаемся проанализировать и понять, почему так получилось.

• Когда время подходит к концу, ScrumMaster пытается обобщить все конкретные предложения по поводу того, что мы можем улучшить в следующем спринте.

Вот вам пример доски с нашей последней ретроспективы:

Вообще-то, наши ретроспективы не имеют чёткого плана проведения, но главная тема - всегда одна и та же: «Что мы можем улучшить в следующем спринте». У нас есть три колонки:

Хорошо: Если нужно было бы повторить этот спринт ещё раз, то мы бы сделали это точно так же.

Могло бы быть и лучше: Если нужно было бы повторить этот спринт ещё раз, то мы бы сделали это по-другому.

Улучшения: Конкретные идеи о том, как в будущем можно что-то улучшить.

Таким образом, первая и вторая колонки относится к прошлому, тогда как третья - направлена в будущее.

После того как команда закончил свой мозговой штурм по поводу всех этих стикеров, они проводят «точечное голосование» для определения улучшений, которым следует уделить особое внимание в ходе следующего спринта. У каждого члена команды имеется три магнитика, которыми он может воспользоваться для голосования. Каждый член команды может лепить магнитики как ему вздумается, хоть все три сразу на одну задача.

Основываясь на этом голосовании, мы выбираем 5 улучшений, которые мы попытаемся внедрить в следующем спринте, а на следующей ретроспективе мы проверим, что у нас вышло.

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

 

Как учиться на чужих ошибках

Информация, которая всплывает в ходе ретроспектив, обычно крайне важна. Для команды настали нелёгкие времена, потому что менеджеры по продажам начали забирать программистов с работы на свои встречи, чтоб те играли роль «технических экспертов»? Это очень важная информация. Возможно, что и у других команд точно такие же проблемы. Может быть, нам стоит провести специальные тренинги по нашему продукту для отдела маркетинга, чтобы они самостоятельно смогли отвечать на все вопросы клиентов?

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

Как же собрать все эти результаты? Мы выбрали достаточно простой способ. Один человек (в этом случае я) принимает участие во всех ретроспективах в роли «связующего звена». Без всяких формальностей.

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

Наиболее важные требования для человека, который будет «связующим звеном»:

• Он должен быть хорошим слушателем.

• Если ретроспектива проходит очень вяло, он должен быть готов задать простой, но меткий вопрос, который подтолкнёт людей на дискуссию. Например: «Если бы можно было повернуть время вспять и переделать этот спринт с самого первого дня, чтобы вы сделали по-другому?».

• Он должен быть согласен тратить своё время на посещение всех ретроспектив всех команд.

• Он должен обладать необходимыми полномочиями, которые помогли бы ему взяться за выполнение предложенных командой улучшений, выходящих за пределы возможностей самой команды.

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

 

Изменения. Быть или не быть

Предположим, команда пришла к выводу, что «мы слишком слабо общались внутри команды, поэтому мы постоянно мешали друг другу и переделывали архитектурные решения».

Что нам с этим делать? Организовать ежедневные встречи для обсуждения архитектуры? Внедрить новые средства, чтобы упростить общение? Создать больше страниц в wiki? Может, и да. А может, и нет.

Оказалось, что достаточно всего лишь четко определить проблему, и она часто решается сама собой в следующем спринте. В особенности, если на стене в рабочей комнате повесить записи по ретроспективе спринта (что, к нашему стыду, мы так часто забываем сделать!) Имейте в виду, что каждое изменение имеет свою цену, поэтому перед тем как его внедрять, подумайте, может, стоит ничего не делать вообще и надеяться, что проблема станет меньше или исчезнет совсем.

Пример, приведенный выше («мы так слабо общались внутри команды…») - это классический пример того, что решается лучше всего бездействием.

Если в ответ на каждую жалобу пытаться что-то делать, народ с неохотой будет рассказывать про свои даже самые мелкие проблемы, которые могут быть ужасными.

 

Типичные проблемы, которые обсуждают на ретроспективах

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

 

«Нам надо было больше времени потратить на разбиение историй на подзадачи»

О, это классика жанра. Каждый день на Scrum'е можно услышать, как люди произносят избитую до боли фразу: «Я не знаю, что мне сегодня делать». И вам приходится изо дня в день тратить кучу времени для того, чтобы после Scrum'а найти задачи для этих ребят. Мой совет - делайте это заранее.

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

 

«Очень часто беспокоят извне»

Стандартные действия:

• Попросите команду уменьшить фокус-фактор на следующий спринт, чтобы у них был более реалистичный план.

• Попросите команду более подробно записывать случаи вмешательства (кто и как долго). Потом будет легче решить проблему.

• Попросите команду переводить все внешние запросы на ScrumMaster'а или Product owner’а.

• Попросите команду выбрать одного человека в качестве «голкипера» и перенаправлять на него все вопросы, которые могут отвлечь команду от работы. Это позволит остальной части команды

• сконцентрироваться на своих задачах. В это роли может выступать, как ScrumMaster, так и любой член команды, которого нужно будет периодически менять.

 

«Мы взяли огромный кусок работы, а закончили только половину»

Стандартные действия: никаких. Скорее всего, в следующий раз команда не станет браться за нереальный объём работ. Или, по крайней мере, поскромнее оценит свои возможности.

 

«У нас в офисе бардак и очень шумно»

Стандартные действия:

• Попробуйте создать более благоприятную атмосферу или перевезите команду на другое место. Куда угодно. Можете снять комнату в отеле (см. стр. 43 «Как мы обустроили комнату команды»).

• Если это возможно, попросите команду уменьшить фокус-фактор на следующий спринт с чётким описанием причины: шум и бардак в офисе. Может быть, это заставит Product owner’а начать пинать вышестоящий менеджмент насчёт вашей проблемы.

Слава Богу, мне никогда не приходилось перевозить команду в другое место. Но если придётся - я это сделаю. :o)