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

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

<a href="https://api.vc.ru/v2.8/redirect?to=http%3A%2F%2Fgrotem.com%2F&postId=51307" rel="nofollow noopener" target="_blank">Grotem</a> работает по Scrum с 2015 года
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-ФЗ все данные об операциях на кассе передаются через ОФД
Сервис быстрой регистрации (СБР) для партнеров «АТОЛа». ОФД — обязательное звено: по закону 54-ФЗ все данные об операциях на кассе передаются через ОФД

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

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

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

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

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

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

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

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

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

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

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

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

Диаграмма сгорания задач (burndown chart). Серая линия — запланированные задачи, красная — выполненные. В идеале линии сходятся на оси X
Диаграмма сгорания задач (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

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

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

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

Скрам-мастер записал всё, что обсудили на ретроспективе. Чтобы ретроспективы были бодрее и продуктивнее, мы используем <a href="https://api.vc.ru/v2.8/redirect?to=https%3A%2F%2Fru.wikipedia.org%2Fwiki%2F%25D0%25A8%25D0%25B5%25D1%2581%25D1%2582%25D1%258C_%25D1%2588%25D0%25BB%25D1%258F%25D0%25BF_%25D0%25BC%25D1%258B%25D1%2588%25D0%25BB%25D0%25B5%25D0%25BD%25D0%25B8%25D1%258F&postId=51307" rel="nofollow noopener" target="_blank">метод шести шляп</a>. Пицца на столе означает, что спринт был успешный
Скрам-мастер записал всё, что обсудили на ретроспективе. Чтобы ретроспективы были бодрее и продуктивнее, мы используем метод шести шляп. Пицца на столе означает, что спринт был успешный

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

4747
94 комментария

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

3

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

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

9

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

3

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

6

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

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

4

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

1