«Образцовый» Scrum-проект: клиент доволен, разработчик — нет

Как обнулить достоинства Scrum для клиента — объясняет директор по развитию Grotem на примере разработки сервиса регистрации онлайн-касс.

Grotem работает по Scrum с 2015 года

Этот кейс — для компаний, которые заказывают ИТ-разработку, и для разработчиков, которые только присматриваются к Scrum (есть такие?). Я расшифрую обязательные термины Scrum и объясню:

  1. Что происходит у разработчика после старта проекта.
  2. Что требуется от заказчика.
  3. Почему не всё окей, когда вроде всё окей.

Если вы каждый день говорите «нам пора на дейли» — вам будет скучно читать. Хотя кто знает.

Что такое Scrum и почему он

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

В отличие от Scrum, классический подход к разработке Waterfall (каскадная модель) основан на недоверии. Недоверие рождает бюрократию.

Десятки согласований, обоснований, килограммы бумаги и строгие письма в почте: «Просим придерживаться первоначального ТЗ, мы его полгода писали», «Бухгалтерия не одобрила ваше предложение по изменениям, требуется детально прописать, на что именно будет потрачен каждый час». Долго, нервно, некомфортно.

Часто заказчик не готов работать по Scrum. Тогда исполнитель идёт на хитрость: снаружи менеджеры строят декорации, похожие на Waterfall, а внутри команда работает по принципам Scrum. Зачем? Потому что сейчас бессмысленно делать большинство проектов по классике: слишком быстро всё меняется, слишком много неопределённости.

Получается странный и лицемерный гибрид. Работать по-прежнему некомфортно, на выходе легко получить не то, что нужно заказчику. Поэтому каждый Scrum-разработчик мечтает об образцовом проекте — когда клиент тоже готов соблюдать принципы, сочиненные Джеффом Сазерлендом. И у нас есть такой завершённый проект.

Запомнить: доверие в Scrum невозможно без открытости и предсказуемости. Заказчик и исполнитель вовремя говорят о проблемах и изменениях на проекте.

Кто клиент и какой проект

Клиент — производитель онлайн-касс «АТОЛ». Проект — бесплатный сервис быстрой регистрации касс. Мы были знакомы: за год до этого интегрировали своё «кассовое» приложение с кассами «АТОЛа».

«АТОЛ» был первой кассой, с которой мы интегрировали наше приложение для курьеров и торговых представителей

Главная ценность сервиса — одно окно. Предприниматель покупает кассу у партнёра «АТОЛа», партнёр тут же её регистрирует. Предпринимателю нужно знать только ИНН и захватить флешку с электронной подписью. Не надо связываться с ФНС, забивать массу букв и цифр, рискуя ошибиться и потерять фискальный накопитель стоимостью 7000 рублей.

В декабре 2017 года владелец продукта со стороны «АТОЛа» (product owner) представил список функций, которые должны быть в сервисе, с кратким описанием. На языке Scrum это называется бэклогом продукта. Потом мы вместе обсудили бизнес-цели и пришли к схеме решения.

В схему вовлечена налоговая, операторы фискальных данных (ОФД) и сервис Dadata.ru, предоставляющий безошибочные данные предпринимателя для регистрации кассы.

Сервис быстрой регистрации (СБР) для партнеров «АТОЛа». ОФД — обязательное звено: по закону 54-ФЗ все данные об операциях на кассе передаются через ОФД

Заказчик решил презентовать сервис с базовыми функциями 15 марта, на конференции партнеров «АТОЛа». К этому сроку нужно было сделать интеграцию с одним ОФД — Яндекс.ОФД. Первый спринт стартовал 10 января.

Запомнить: заказчик не обязан разбираться в тонкостях Scrum. Исполнитель помогает составить бэклог, уточняет критерии готовности продукта. Главное, что требуется от владельца продукта в начале, — расставить задачи в порядке приоритета.

Спринты и хотелки

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

Хотелки формулирует владелец продукта: «Как пользователь сервиса я хочу, чтобы адрес моего интернет-магазина при регистрации подтягивался автоматически». В Scrum эти хотелки называются user stories.

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

Состав спринта

Владелец продукта подтверждает состав спринта и обязательно определяет его цель. Это упрощает понимание, всё ли сделали на спринте. Бывает, что не все задачи решены, но цель достигнута. И наоборот: все задачи решили, а цели не достигли. Критерии приемки спринта обсуждаются всей командой с владельцем продукта.

Владелец продукта утверждает состав спринта и формулирует его цель в Telegram

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

Первые два спринта пристрелочные. Надо понять, какой объем задач реально делать за две недели и планировать так, чтобы команда не сидела без работы и не ночевала в офисе.

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

Диаграмма сгорания задач (burndown chart). Серая линия — запланированные задачи, красная — выполненные. В идеале линии сходятся на оси X

Сколько спринтов будет на проекте, сразу сказать нельзя. Могут появиться новые задачи, которые сделают продукт лучше. Или придется от чего-то отказаться, потому что выяснится, что это неактуально. Наш проект длился 12 спринтов, 120 рабочих дней. После презентации 15 марта мы продолжили улучшать продукт — например, интегрировали сервис с другими ОФД.

Если цель спринта достигнута, он считается успешным. Бывает, заказчик говорит: «Давайте этот спринт признаем успешным, там совсем немного осталось доделать, тем более причина не в вас, а в чужом API». Такие предложения принимать нельзя, а владельцу продукта их лучше не озвучивать.

Результативность спринтов. Второй спринт у нас редко успешный — берём слишком много задач. Всего на проекте было три неуспешных спринта из двенадцати

Идея не в том, чтобы получать хорошие оценки, как в школе, а в том, чтобы каждые две недели выдавать версию сервиса с новыми функциями. Не все запланированные функции работают? Окей, спринт неуспешный, и команда не получит пиццу. Не страшно, если 50% спринтов неуспешны. Страшно, когда мухлюют.

Запомнить: заказчику важно научиться формулировать user stories, поставив себя на место пользователя, и определять цель спринта.

Как оцениваются спринты

Оценка спринтов — самое сложное. В Scrum задачи рассчитываются не в часах, а в относительных единицах. Обычно их называют story points (для простоты — стори-поинты). Стори-поинты включают в себя риски, сложность и внешние факторы: потерю связи с сервером ФНС, проблемы с ОФД и так далее.

Некоторые команды вместо стори-поинтов используют разные размеры футболок (S, M, XL) или породы собак. Одна задача «весит» как такса, другая, посложнее, — доберман, третья — сенбернар. Это весело, когда делаешь внутренний продукт и сам себе заказчик. Когда заказчик внешний, его бухгалтерия вряд ли такое оценит.

Как наша команда определяет, сколько стори-поинтов «весит» каждая задача? Играет в покер планирования. После предложения оценить задачу каждый участник команды кладёт карту с цифрой рубашкой вверх. Потом карты переворачивают. Если оценки отличаются — обсуждают задачу, приводят аргументы в пользу того или иного количества стори-поинтов. Потом переигрывают. В итоге команда приходит к консенсусу.

Покер планирования. Участники команды «вскрылись» и не пришли к консенсусу — будут переигрывать

В каждом спринте у нас 35-40 стори-поинтов. Если задача «весом» пять стори-поинтов не доделана, заказчик экономит сразу на пять стори-поинтах — засчитывается только стопроцентная готовность.

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

Команда Scrum

В образцовом Scrum команда самодостаточна и универсальна. Все готовы друг друга подстраховать. Отпуск у фронтенда? Бэкенд с тестировщиком подменят. Девопс на больничный ушел? Не проблема, аналитик тоже так умеет. Коллеги «со стороны» привлекаются только в критических случаях. У нас такого на проекте не было.

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

Все общаются с заказчиком напрямую, без фильтров. Каждый видит, какую ценность хочет получить клиент и предлагает свои варианты. Наверное, это лучшее, что придумано для мотивации в ИТ-разработке.

Скрам-мастер — это вроде модератора, только круче. Он следит за выполнением правил Scrum, обеспечивает команду маркерами и пиццей, фиксирует, что команда наговорила на собраниях и разруливает сложные ситуации

Правда ли, что в Scrum много болтовни

Да. Грубо говоря, один из десяти спринтов уходит на общение, девять — на разработку.

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

Илья

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

Новички в Scrum удивляются: как можно четыре-пять часов тратить на разбор двухнедельного спринта. На самом деле такое собрание в конце каждого спринта (ретроспектива) очень важно. Ретроспектива помогает команде стать командой, здесь открыто говорят, что чья-то Metallica в наушниках мешает работать и что кому-то пора перестать опаздывать.

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

Желательно, чтобы на первых двух ретроспективах был владелец продукта (у нас — с помощью Zoom). Это помогает построить доверительные отношения и лучше понять, как работает команда.

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

Кроме ретроспективы есть ежедневные 15-минутные встречи (Scrum daily, они же дейли, они же митинги). Каждый говорит, что сделал вчера, что сделает сегодня и какие есть сложности.

— У меня не получается с передачей данных ФНС. Максим, помогай.

— Хорошо, в 16:00 займусь.

Здесь участие владельца продукта не требуется.

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

Владелец продукта всегда участвует в планировании спринта, груминге и обзоре

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

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

Почему мы недовольны результатом

Вот что написал клиент в ответ на просьбу оценить наш общий Scrum-опыт:

Scrum дал нам продукт ожидаемого качества в ожидаемые сроки. На текущий момент продукт готов к использованию.

Мы недовольны, потому что сервиса нет на рынке. Формально он готов, но доступа у клиентов «АТОЛа» к нему нет.

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

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

Главный вывод для заказчика: работайте по Scrum, это быстрее «классики» с техзаданиями, честнее и часто дешевле. Выпускайте продукт на рынок через пару месяцев, не ждите идеальную версию.

Главный вывод для разработчика: не забывайте напоминать клиенту о продвижении продукта и сборе отзывов уже через месяц-два. Иначе какой смысл в Scrum, если продуктом даже через год никто не пользуется.

0
94 комментария
Написать комментарий...
Алексей Шапошников

Памятка для Заказчика: если работать по скраму - не получится как обычно валить все на тупых разработчиков. ("мы же говорили"... "а вы нам обещали"... "это само собой разумеется, исходя из 12-58 стр. ТЗ версия от 11.02.2003"). Идеология общей команды подразумевает и общую ответственность.
Памятка для Исполнителей: собрать команду дилетантов-джунов и назначить им три проекта одновременно - не прокатит. Прозрачность там... транспэренси.. доступ Заказчика в кишочки проекта (таск-менеджеры).
Памятка для продавцов: доверие - штука обоюдоострая... Если продавать проект на доверии, то и самому над быть откровенным. Навешать лапши при продаже, а потом: "разберемся по ходу обследования/тз"... никак. Нет обследования - одни спайки..

Ответить
Развернуть ветку
Vlad Samusenko

вы случайно не управляете проектами?

Ответить
Развернуть ветку
1 комментарий
Анатолий Б.

А где Заказчик?

Ответить
Развернуть ветку
Unreal Person

закладки искал

Ответить
Развернуть ветку
Ekaterina Dmitrieva

Вот же оно! "Создать продукт на основе доверия" - это отличная формулировка!!! Ее очень не хватало, когда продавали проекты лет 10 назад. Тогда не говорили про waterfall и scrum, называли это "по ТЗ" и "по почасовке" (не совсем то же самое, но почти). И, конечно же, мы хотели работать "по почасовке", а клиент предпочитал "по ТЗ". И вот сейчас я поняла, что имело смысл заговорить с ним именно про доверие, и продавать было бы проще. Спасибо за статью!

Ответить
Развернуть ветку
Artem Magnitsky

А вот что выдает интернет: Скрам – это фреймворк для разработки и поддержки функционально сложных продуктов. Данное руководство содержит определение Скрама. Определение состоит из описания ролей, мероприятий, артефактов Скрама, а также правил, связывающих их. Кен Швабер и Джефф Сазерленд разработали Скрам; Скрам Гайд написан и представлен ими.

Черт ногу сломит

Ответить
Развернуть ветку
1 комментарий
Илья Владимиров

Екатерина, Вы правы, я после фразы "Создать продукт на основе доверия" понял что это что-то стоящее.

Ответить
Развернуть ветку
Дмитрий Даниелян

Информативная статья, но я бы еще чуть раскрыл тему стори-поинтов. Как правило это число из ряда Фибоначчи и оценка, которая существует только относительно других задач команды и не требует повышенной точности. Иногда для начала работы с подходом за 1 стори поинт берут задачу, которую вся команда сможет сделать за 1 день, а дальше уже оценки корректируются "в полете"

Ответить
Развернуть ветку
Алексей Шапошников

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

Ответить
Развернуть ветку
2 комментария
Vlad Samusenko

Дмитрий, на картах как раз числа из ряда Фибоначчи. Спасибо за дополнение

Ответить
Развернуть ветку
Вася Бездомный

Поправки в текст:
- В результате выполнения спринта имеем (или не имеем) - готовый инкремент продукта (а не закрытые таски).
- Цель спринта задаёт команда скрама (не только PO).
- В скрам не оговорено в чем оценивать таски - подойдет любой инструмент, в том, числа и оценка в чел/часах (да, это легально и часто используется на практике).

+ надо помнить что команды в скрам две: команда скрама (SM+PO+разработчики) и команда разработки (без PO и SM). В тексте эти 2 команды смешаны в кучу.

Ответить
Развернуть ветку
Vlad Samusenko

по поводу инкрементов еще: по факту заказчику демонстрировали чаще всего готовый (или не готовый) инкремент продукта. На доски с тасками редко опирались в конце спринта.

Ответить
Развернуть ветку
Денис Петров

Не подскажите, каким образом у вас аналитик подстраховывает девопса?)

Ответить
Развернуть ветку
Vlad Samusenko

с помощью знаний, умений, навыков

Ответить
Развернуть ветку
Выпил ли mojo?

Кто в начале расскажет заказчику, сколько он в итоге заплатит? Или сюрприз будет?

Ответить
Развернуть ветку
Максим Опилкин
Автор

Изначально проект разбиваем на стори, стори предварительно набираем в спринты. Стараемся с заказчиком сформулировать цели спринтов. Зная стоимость команды даём предварительный бюджет. С заказчиком согласовываем цели и то, что +- спринт может быть.
Если изначально планируется более 6 спринтов, то дельта менее 15%. Для заказчика это нормально :)

Ответить
Развернуть ветку
5 комментариев
Maxim Bugaev

да, насколько я понимаю все эти разговоры ложатся на бюджет проекта и в итоге на клиента. он согласен оплачивать "карточные игры"?

Ответить
Развернуть ветку
2 комментария
Vlad Samusenko

Продакт-оунер сразу видит, за сколько спринтов он получит необходимый продукт, с примерным количеством стори-поинтов (если учесть фиксированное количество за спринт). Плюс-минус 10-15%.

Ответить
Развернуть ветку
Pierre Riss

"в Scrum команда быстро реагирует на проблемы при решении задачи. Не надо ждать подтверждения на оплату дополнительных часов, чтобы их решить. Всё уже заложено в стори-поинтах." - не понятно, как это заложено. можно пояснить?

Ответить
Развернуть ветку
Vlad Samusenko

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

Ответить
Развернуть ветку
15 комментариев
Vlad Samusenko

В России в принципе не просто с доверием. 10 лет назад еще тяжелее было, наверное )

Ответить
Развернуть ветку
Vlad Samusenko

похож

Ответить
Развернуть ветку
Андрей X

Окей, Grotem

Ответить
Развернуть ветку
Maxim Bugaev

Какая мотивация у команды работать эффективно, если по сути ответственности за невыполнение спринта нет и бюджет резиновый?

Ответить
Развернуть ветку
Максим Опилкин
Автор

Успешный спринт, когда за 2 недели создали дополнительную ценность - это лучшая мотивация для разработчиков. Они понимаю, что профессиональны и успешны, они видят результат своей работы.
Заказчик напрямую взаимодействует с командой, видит их мотивацию, нацеленность на результат, поэтому вопросов по бюджету у него нет.

Но это работает только в случае полной открытости со стороны исполнителя. Мы начали так работал только тогда, когда стали уверенны в команде.
До этого было страшно.. :)

Ответить
Развернуть ветку
26 комментариев
Илья Меджидов

Интересует следующий вопрос: что за сервис используете? Буду премного благодарен)

Ответить
Развернуть ветку
Vlad Samusenko

Мы используем Jira, в связке с confluence. Если интересно, есть курс на Курсере "Agile with Atlassian Jira": https://www.coursera.org/learn/agile-atlassian-jira

Ответить
Развернуть ветку
Василий Зорин

"Скрам-мастер — это вроде модератора, только круче. Он следит за выполнением правил Scrum, обеспечивает команду маркерами и пиццей, фиксирует, что команда наговорила на собраниях и разруливает сложные ситуации" - нет, это не обязанности скрам мастера.

Ответить
Развернуть ветку
BaronKorf

А что обязанности?

Ответить
Развернуть ветку
5 комментариев
Saucedo Puetz

Если вам за скрум заплатили деньги то дальнейшие претензии не принимаются

Ответить
Развернуть ветку
Vlad Samusenko

у кого претензии? К кому?

Ответить
Развернуть ветку
2 комментария
Vlad Samusenko

Круто, спасибо. Только мы не стали глубоко погружаться в инкременты, возможно зря.
На этом проекте формулирования цели добивались от клиента, но, конечно, мы помогали формулировать.
Оценка в часах все же не ок, хотя и легальна.

Ответить
Развернуть ветку
Victor Glinka

Ребята, все круто! Вы молодцы! А что по поводу ревью? На нем же кроме заказчика должны присутствовать пользователи. Таким образом вы бы сразу обкатывали ваш продукт и уточняли беклог. То есть не надо специально напоминать заказчику о сборе фидбека как вы пишете в последнем выводе. Почитайте внимательно гайд по теме проведения ревью! Ну и практика есть уже :) если что пишите мне на фб, пообщаемся по этому вопросу!

Ответить
Развернуть ветку
Алексей Иванов

Это все хорошо, но что делать с поддержкой проекта, если уходит программист?
А программисты будут уходить часто, потому что "Костыльное программирование" рано или поздно надоедает.
Костыльнео программирование, это когда остается 1 день , тебе надо тесты написать, произвести рефакторинг прошлых задач из предыдущих спринтов, а тебе менеджер тычет фразой: "Нам главное результат, тесты-шместы твои не нужны, а рефакторинг вообще безсмысленен, ты лучше таску закрой давай до вечера"

Я вам могу около 5 банков перечислить которые работали по скраму, а теперь у них дикая текучка.
Потому что когда программист смотрит в проект, ему хочется плеваться)

Что с этим делать в скраме?

Ответить
Развернуть ветку
Anna Edvardsen

V chjem raznica mezjdu obzorom na finishe i retrospektivoj posle sprinta. Ne ponjala, objasnite pozjalujsta

Ответить
Развернуть ветку
91 комментарий
Раскрывать всегда