← Главная

1 просм. 5 мин чтения

Scrum покер строгого спринта

Konstantin Anisimoff

У команд разработки исповедующих scrum есть забава - планировать спринты. Одна из таких методик — покер планирования. Это техника коллективной оценки задач. Её предком считают Wideband Delphi Барри Боэма из 1970-х, современную форму в 2002 году описал Джеймс Греннинг. Метод получил широкую огласку после книги Майка Кона Agile Estimating and Planning 2005 года.

Механика простая: команда знакомится с задачей, каждый независимо выбирает карту с оценкой, затем все одновременно вскрываются. Допустим, на столе лежат условные 3, 3, 5, 3 - значит оценка участников сходится. Но если рядом оказываются 2 и 13, значит, кто-то обладает тайным знанием о задаче и это должно заставить остальных членов команды задуматься. Planning Poker помогает выслушать разные суждения о сложности и рисках.

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

И так, чтобы как-то развеселить процесс планирования - предлагаю вашему вниманию свою колоду.

0 — «Призрак бэклога»

В Planning Poker: задача фактически не требует работы.
Что означает: всё уже сделано, только Jira об этом ещё не знает.

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

Это задача, которую починили соседним коммитом, закрыли другим релизом или реализовали полгода назад, но забыли сообщить бэклогу.

½ — «Точка с запятой»

В Planning Poker: изменение настолько маленькое, что единица кажется расточительством.

Что означает: минимальная и хорошо понятная правка.

Под увеличительным стеклом лежит единственный символ. Почти археологическая находка.
Под увеличительным стеклом лежит единственный символ. Почти археологическая находка.

Исправить условие. Поменять текст. Добавить ;.

1 — «Одиночный коммит»

В Planning Poker: маленькая локальная задача с понятным результатом.

Что означает: сделал, проверил, закоммитил.

Пристрелить задачу с одного выстрела.
Пристрелить задачу с одного выстрела.

Редкий представитель бэклога, про которого разработчик говорит «там действительно немного» — и почти всегда это правда.

2 — «Парный фикс»

В Planning Poker: небольшая задача, но изменение затрагивает пару связанных мест.

Что означает: локально всё ещё просто, однако появляется зависимость.

У всякой настройки есть копия. Обычно забытая.
У всякой настройки есть копия. Обычно забытая.

Классический случай: изменил DTO — проверь маппер. Поменял API — обнови клиента. Исправил один конфиг — найди его брата-близнеца в production.

3 — «Тройной дозор»

В Planning Poker: небольшая знакомая задача, которую надо провести через обычный цикл разработки.

Что означает: код, тесты, ревью.

На щите три глаза. Один смотрит на реализацию, второй — на тесты, третий — туда, откуда обычно прилетает комментарий «а почему так?».
На щите три глаза. Один смотрит на реализацию, второй — на тесты, третий — туда, откуда обычно прилетает комментарий «а почему так?».

Тут нельзя сказать: "У меня все работает"! Нужно доказать это остальному миру.

5 — «Узел зависимостей»

В Planning Poker: средняя задача с несколькими связанными изменениями.

Что означает: начинаются настоящие зависимости.

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

Это тот размер, где задача перестаёт быть функцией и начинает становиться системой.

Контроллер тянет сервис. Сервис — схему. Схема — миграцию. Миграция — тесты. Тесты — разработчика. Больше возни чем реальной работы.

8 — «Спрут интеграций»

В Planning Poker: заметная задача с внешними зависимостями и существенной неопределённостью.

Что означает: собственный код — только часть приключения.

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

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

13 — «Чёртова миграция»

В Planning Poker: крупная задача с высоким риском и несколькими сценариями отказа.

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

Скелет-паромщик перевозит базу данных на другой берег.
Скелет-паромщик перевозит базу данных на другой берег.

Миграция схемы. Перенос данных. Обратная совместимость. Переключение трафика. Проверка. Rollback.

У хорошей миграции всегда есть план отката.

У плохой тоже есть план отката, просто называется он «восстановить бэкап и молиться».

20 — «Монолит на шее»

В Planning Poker: задача слишком велика или слишком связана с остальной системой, чтобы относиться к ней как к обычной истории.

Что означает: пора искать границы и декомпозировать.

На цепи висит огромный серверный куб, внутри которого замурованы сервисы нескольких эпох.
На цепи висит огромный серверный куб, внутри которого замурованы сервисы нескольких эпох.

Хотел добавить поле и понеслось. Отказал общий базовый класс 19.. года, XML-конфигурацию, три deprecated-библиотеки и комментарий:

// temporary workaround

История умалчивает, временно относительно чего.

40 — «Собор легаси»

В Planning Poker: перед нами уже не столько задача, сколько экспедиция.

Что означает: значительная часть работы уйдёт на восстановление контекста.

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

Документация неполна. Тесты знают не всё. Код знает всё, но разговаривает на древнем диалекте. Остается уповать на высшие силы чтобы изменения встали как нужно.

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

100 — «Переписать с нуля»

В Planning Poker: это уже не нормальная оценка задачи, а сигнал, что под видом тикета в спринт пытаются протащить проект.

Что означает: границы задачи исчезли за горизонтом.

Из горящего репозитория взлетает феникс. В когтях у него старый баг.
Из горящего репозитория взлетает феникс. В когтях у него старый баг.

Переписать с нуля звучит как способ оставить старые проблемы в старом коде. На практике в репозиторие уже живут старые проблемы и потихоньку пробираются новые.

? — «Туманное ТЗ»

В Planning Poker: оценивать пока нечего.

Что означает: неизвестен результат, критерии приёмки или существенная часть условий.

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

Это мое любимое. Пойди туда — не знаю куда, принеси то — не знаю что.

∞ — «Вечный TODO»

В Planning Poker: задача не имеет обозримых границ.

Что означает: требуется исследование, ограничение scope или декомпозиция.

Змея складывается в знак бесконечности вокруг надгробия с вечным TODO.
Змея складывается в знак бесконечности вокруг надгробия с вечным TODO.

Имеет смысл использовать, когда слышим фразы:

  • «Улучшить производительность».
  • «Навести порядок в архитектуре».
  • «Сделать нормальную авторизацию».

Технически работа существует. Практически Definition of Done ушёл за горизонт и отключил геолокацию.

☕ — «Право на перекур»

В Planning Poker: это не оценка.

Что означает: команда больше не оценивает задачу, а генерирует случайные числа с выражением профессиональной уверенности.

На карте чашка кофе лежит на переломаных клавиатурах.
На карте чашка кофе лежит на переломаных клавиатурах.

Иногда лучшая техника оценки — взять паузу.

И ещё одна карта, которую лучше не разыгрывать

В колоду просится отдельный туз — «Деплой в пятницу».

Релиз ушел, а я остался.
Релиз ушел, а я остался.

«Туз пятничный» — знак отличия разработчика, который выкатил релиз перед выходными и остался разбираться с последствиями. В нашей вымышленной IT-символике это отметка "опыта", самоуверенности и дорогого урока.

Послесловие

Надеюсь, эта колода немного разбавит серьёзность планирований и добавит юмора в вечные споры о сроках задач.Всем понятных требований, релизов без сбоев, миграций с рабочим rollback и хорошего настроения.И главное — не разыгрывайте туза по пятницам.