Дейли-стендап

Пятнадцать минут, которые либо экономят команде день, либо превращаются в утреннюю планёрку с докладом начальству.

Дейли-скрам (Daily Scrum, стендап) — ежедневная встреча разработчиков не дольше 15 минут, на которой команда сверяет ход работы с целью спринта и при необходимости перестраивает план на день.

Обратите внимание на два слова в определении: разработчиков и перестраивает. Встреча нужна тем, кто делает работу, и нужна она, чтобы что-то изменить в плане. Если после стендапа ничего не поменялось и никто ни о чём не договорился — вы только что потратили 15 минут на пять человек. За двухнедельный спринт это полтора рабочих дня.

Три вопроса — и почему они вводят в заблуждение

Классический формат все знают наизусть:

  • Что я сделал вчера?
  • Что я делаю сегодня?
  • Что мне мешает?

Формулировка удобная, но у неё есть побочный эффект: она подталкивает к рассказу о себе. Пять человек по очереди отчитываются, что делали, — и получается летучка, где каждый говорит в пустоту, а слушает только скрам-мастер, потому что остальным неинтересно.

Поэтому в актуальном Scrum Guide три вопроса вообще перестали быть обязательными. Команда сама выбирает формат — лишь бы он отвечал на главный вопрос: успеваем ли мы к цели спринта и что нужно поменять сегодня?

Простое лечение — переставить фокус с людей на работу. Вместо круга по участникам идти по доске справа налево, от «почти готово» к «ещё не начато»:

Обход доски (walk the board), справа налево:

REVIEW      «Оплата картой» висит на ревью со вчера.
            → Марат: посмотрю после стендапа, до 12:00.

IN PROGRESS «Чек на почту» — Лена, третий день.
            → Лена: застряла на шаблонизаторе, к обеду решу или приду за помощью.

            «Обработка отказа банка» — Дима, сегодня начал.

TODO        «Алерт на падение платежей» — никто не взял.
            → Свободных рук нет. Смотрим завтра; если не начнём — режем (см. план спринта).

ЦЕЛЬ: успеваем, риск — чек на почту.

Разница видна сразу: в таком формате обсуждают задачи, которые стоят, а не людей, которые заняты. И висящее третий день ревью становится заметно, потому что доска показывает это без всяких вопросов.

Почему это не отчёт начальнику

Самая частая деформация стендапа — превращение его в проверку. Приходит тимлид или менеджер, встаёт во главе стола, и каждый отчитывается ему. Даже если он не задаёт ни одного вопроса, само его присутствие меняет речь: люди начинают говорить не «я застрял», а «я в процессе, всё нормально».

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

Отчётный стендапРабочий стендап
Говорят, глядя на менеджераГоворят, глядя друг на друга и на доску
Цель — показать, что не бездельничалЦель — понять, где план расходится с реальностью
«Всё по плану» три дня подряд«Я не понимаю, как это тестировать, нужен час с Мариной»
После встречи ничего не меняетсяПосле встречи двое договорились и переставили приоритеты

Значит ли это, что менеджеру нельзя приходить? Приходить можно — слушать. Нельзя вести встречу, задавать контрольные вопросы и уж тем более раздавать задачи. Тонкая грань, но команда чувствует её моментально.

Признаки выродившегося стендапа

Стендап деградирует незаметно. Вот симптомы, по которым это видно раньше, чем команда начнёт саботировать встречу.

СимптомЧто за ним стоитЧто делать
Встреча длится 30-40 минутОбсуждение проблемы прямо на стендапе, вместо синхронизацииЗавести «парковку»: тема названа — записали — обсуждаем после, тем составом, кому надо
Все говорят «всё по плану»Небезопасно признавать проблемы, или встреча воспринимается как формальностьУбрать наблюдателей, перейти к обходу доски, задавать вопросы к задачам, а не к людям
Слушает только скрам-мастерФормат «доклад по очереди» вместо разговора командыСкрам-мастер выходит из круга или вообще не приходит пару раз
Один и тот же блокер третий деньБлокеры называют, но никто не берётся их сниматьУ каждого блокера — имя и срок; проверять его первым пунктом на следующем дейли
Люди опаздывают или «забывают»Команда не видит пользы — и, скорее всего, праваНе наказывать, а спросить на ретро: «что должно происходить на дейли, чтобы вы не хотели его пропустить?»
Обсуждают задачи, которых нет в спринтеКоманду тянут в сторону; цель спринта размываетсяСделать это видимым: раз в спринт показывать, сколько времени ушло мимо цели

Что делать с блокерами

Блокер (impediment) — то, что мешает команде двигаться к цели и чего она не может убрать сама здесь и сейчас: не дают доступ к тестовому стенду, второй день ждём ответа смежников, сломался CI.

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

  1. У блокера есть владелец. Конкретный человек, не «команда». Часто это скрам-мастер, потому что снятие внешних препятствий — прямо его работа.
  2. У блокера есть срок. Хотя бы «сегодня до конца дня напишу и вернусь с ответом».
  3. Блокеры проверяют первым делом. Не в конце круга, когда все уже смотрят на часы, а в самом начале следующего дейли.

Полезно держать видимый список — колонка на доске или пять строк в закреплённом сообщении:

БЛОКЕРЫ

#1  Нет доступа к sandbox платёжного провайдера
    кто: Настя (SM)   с: 15 марта   срок: сегодня 18:00
    статус: написала в поддержку, ждём ответ

#2  Тесты падают на CI, локально зелёные
    кто: Дима         с: 16 марта   срок: 17 марта
    статус: воспроизвёл, дело в таймзоне на агенте

Закрыто вчера: доступ к логам прода (заняло 2 дня)

И главное: если блокер решается разговором двух человек на пять минут — не обсуждайте его на стендапе. Скажите «после дейли, Марат, Лена, я — на десять минут» и идите решать. Стендап не место для решения проблем, он место для их обнаружения.

Как это работает

Практическая механика, которая обычно приживается:

  • Одно и то же время каждый день. Не нужно договариваться, не нужно напоминать. Лучше не в 9:00 (кто-то опоздает и будет виноват) и не перед обедом.
  • Стоя. Отсюда и название. Простой физический таймер: как только становится долго, тело само просит закончить.
  • 15 минут — это потолок, а не план. Хороший дейли на команду из пяти человек занимает 7-10 минут.
  • Распределённая команда — то же самое в видеозвонке, с включёнными камерами и открытой доской на экране. Асинхронный текстовый стендап в чате работает хуже: он полностью вырождается в отчёт, потому что никто не читает чужие сообщения. Если уж делаете текстом — обязательно оставьте живой созвон хотя бы дважды в неделю.
  • Скрам-мастер не ведёт встречу вечно. Через месяц-другой команда должна проводить дейли сама — это один из немногих объективных признаков, что Scrum прижился.

Частые ошибки

  • Стендап как отчёт руководителю. Люди перестают говорить о проблемах, и встреча теряет единственный смысл.
  • Решение проблем прямо на встрече. Двое погружаются в детали, трое ждут. Выносите обсуждение за пределы 15 минут.
  • Блокер назвали и забыли. Без владельца и срока это просто жалоба вслух.
  • Разговор о людях, а не о задачах. «Я вчера делал» вместо «эта задача застряла». Обход доски лечит почти всегда.
  • Стендап без цели спринта. Если непонятно, к чему идём, невозможно понять, успеваем ли. Цель должна висеть перед глазами.
  • Отмена дейли «потому что и так всё знаем». Иногда это правда — команда из двух человек, сидящих рядом. Чаще это признак, что встречу давно превратили в ритуал и никто не попробовал её починить.

Итоги

  • Дейли — встреча разработчиков для себя, а не отчёт наверх. Смысл — вовремя увидеть расхождение с целью спринта.
  • Три вопроса не обязательны. Обход доски от готового к не начатому обычно работает лучше: обсуждаются задачи, а не люди.
  • Если после стендапа ничего не поменялось в плане на день — встреча прошла впустую.
  • У каждого блокера должен быть владелец и срок, и проверять их надо в начале следующего дейли.
  • 15 минут — потолок. Всё, что требует обсуждения, выносится «на парковку», сразу после встречи, нужным составом.
Проверьте себя
1. На дейли выясняется, что задача Лены заблокирована багом в общей библиотеке, и Дима знает, как его обойти. Что правильнее сделать?
AТут же разобрать баг всей командой — это и есть работа стендапа
BЗаписать тему и сразу после дейли обсудить её вдвоём, вернув остальным их 10 минут
CОтложить до ретроспективы: там как раз разбирают проблемы
DПопросить менеджера назначить ответственного за баг
2. Какой из признаков надёжнее всего говорит, что стендап выродился в формальность?
AВстреча занимает 8 минут вместо 15
BКоманда проводит дейли без скрам-мастера
CВсе третий день подряд говорят «всё по плану», а после встречи ни один план не меняется
DКто-то из разработчиков подключается из дома по видео