Владельцу продукта Scrum дает уникальную возможность сосредоточиться на требованиях вместо того, чтобы заниматься диспетчеризацией задач или иной оперативной деятельностью, забывая о стратегии. В этой главе я хочу описать инструменты для эффективного управления продуктом.
Построение бизнес-модели
Наиболее подробно построение бизнес-моделей описано в работе Александра Остервальдера (Alexander Osterwalder) и Ива Пинье (Yves Pigneur) «Построение бизнес-моделей. Настольная книга стратега и новатора» (Business Model Generation: A Handbook for Visionaries, Game Changers, and Challengers). Бизнес-модели «Канвас» представляют собой способ визуализации бизнес-моделей, и их можно адаптировать к проектам по разработке ПО (табл. 3.1).
Такую визуализацию лучше всего проводить с помощью стикеров на доске с участием всей команды и заинтересованных лиц, например маркетологов и продавцов.
Персоны
Практика анализа персон пришла в управление продуктами из практик User Experience (опыт использования). Она заключается в описании пользователя создаваемого продукта как реального персонажа с конкретными ценностями и целями.
Таблица 3.1.
Бизнес-модель в виде Lean Canvas
Инструмент Story Mapping
После выявления персон нужно перейти к определению функционала, который необходимо реализовать для персон. Для этого используется Story Mapping (стори маппинг) – способ визуализации и планирования функционала.
Визуализация происходит на доске и начинается с высокоуровневых активностей выявленных персон. Активности разбиваются на задачи, которые, в свою очередь, декомпозируются на подзадачи.
Верхний слой подзадач представляет собой простейшую возможную реализацию функционала и обычно включается в первый релиз. Подзадачи, которые находятся ниже, представляют собой реализацию:
• дополнительных возможностей;
• безопасности;
• удобства использования;
• производительности.
Чем ниже мы опускаемся по подзадачам, тем меньше у них важность.
Визуализация журнала пожеланий продукта с помощью Story Mapping
Журнал пожеланий продукта
Как было сказано выше, журнал пожеланий продукта состоит из бизнес-требований, которые обычно оформляются в виде историй пользователей. Рассмотрим подробнее, что представляет собой отдельная история пользователя.
Уникальный числовой идентификатор истории – обычно совпадает с идентификатором истории пользователя из трекера, которым пользуется команда. Этот идентификатор позволяет точно сказать, о какой истории пользователя в данный момент идет речь.
Название истории пользователя – короткое (примерно до десяти слов) описание функционала с точки зрения пользователя, сформулированное в виде тройки «роль – действие – цель», например: «Пользователь вводит логин и пароль, чтобы авторизоваться на сайте».
Важность – уникальный числовой приоритет истории пользователя. Чем она выше, тем раньше данную историю необходимо сделать.
Оценка – числовая относительная оценка истории пользователя по специальной шкале.
Указанные поля удобно размещать на стикере, который прикрепляется на доску. Например, историю пользователя для авторизации на сайте с оценкой 10 очков (Story Points), важностью 200 и номером в трекере 1453 можно представить на стикере так.
История пользователя для авторизации на сайте
Эти четыре поля являются фактически обязательными, но часто используются и дополнительные поля, которые, например, заносятся в трекер.
Подробное описание – текстовое и графическое описание истории пользователя. Применяется прежде всего в распределенных командах для хранения знаний о функционале продукта.
Демонстрация – достаточно подробный сценарий, позволяющий провести демонстрацию истории пользователя. Например, для приведенной выше истории пользователя с авторизацией можно использовать следующие краткие сценарии для демонстрации:
♦ пользователь вводит логин root и пароль pass и переходит на страницу личного профиля на сайте;
♦ пользователь вводит логин root и пароль wrongpass и получает сообщение Введен неправильный логин или пароль.
Категория – используется для повышения управляемости с помощью категоризации задач. В качестве категорий могут выступать как продуктовые категории (темы и эпики в терминологии Scrum), так и категории типа «оптимизация производительности», «техническая история» и т. п.
Размер журнала пожеланий и стратегическое планирование
Для сохранения управляемости необходимо поддерживать минимальный размер журнала пожеланий, но для стратегического планирования, скажем на несколько кварталов вперед, необходимо иметь достаточно длинный журнал пожеланий. Используя нотацию «грозовых туч» Э. Голдратт, это противоречие можно изобразить следующим образом.
Противоречие между тактическим и стратегическим планированием
Какой бы размер журнала пожеланий мы ни выбрали, все равно не получится разрешить конфликт – нужно прорывное решение. Оно достаточно просто и лежит на поверхности: использовать метод набегающий волны. В рамках Scrum такой подход означает, что мы разбиваем очень подробно истории пользователей на несколько ближайших спринтов, а остальные истории пользователей храним в виде больших фрагментов функциональности, подробно не описывая их. Такие большие истории пользователей, которые в дальнейшем будут разбиты на маленькие, называются эпиками (epic).
Более важные элементы журнала пожеланий определены точнее
Как видите, чем позднее планируется реализация того или иного функционала, тем более крупные фрагменты функционала берутся. Отмечу, что это также согласуется полностью с принципами KISS (Keep it simple, stupid – «Не усложняй, тупица») и YAGNI (You аin’t gonna need it – «Вам это не понадобится»).
Технические истории. В любом проекте по разработке программного обеспечения есть задачи, напрямую не связанные с пользовательским функционалом. Они называются техническими историями или техническими задачами и могут носить разный характер:
• рефакторинг модуля;
• оптимизация производительности;
• исправления сложного дефекта;
• настройка инфраструктуры.
Технические истории крайне желательно вносить в журнал пожеланий, чтобы у владельца продукта была возможность определить их важность. Если у владельца продукта не хватает технической квалификации для этого, необходимо ввести ограничение на количество незакрытых технических историй: как только количество задач превысит этот порог, технические истории с самым высоким приоритетом автоматически берутся в спринт.
Определение приоритетов историй пользователя
Владелец продукта определяет порядок реализации функционала путем установки приоритетов, выбирая истории пользователей с наибольшей ценностью. Классическим представлением является мысль, что чем больше будет функционала в продукте, тем выше удовлетворенность конечного пользователя.
Рассмотрим более точную модель – модель удовлетворения потребностей Кано. Японский профессор Нориаки Кано (Noriaki Kano) предложил ее в работе «Привлекательное качество и необходимое качество» (Attractive Quality and Must-Be Quality) еще в 1984 году.
Разделим всю функциональность продукта на три категории в соответствии с удовлетворенностью пользователя и полнотой функциональности продукта.
Типы функций продукта
Таким образом, можно выделить три типа функций продукта.
1. Обязательные функции – пользователь ждет этих функций от продукта, без них ему продукт не нужен. Например, для сотового телефона это возможность совершать звонки.
2. Линейные функции – чем больше и качественней они реализованы, тем больше доволен пользователь. К примеру, это долгая работа сотового телефона без подзарядки.
3. Привлекательные функции – функции, которые придают вашему продукту wow-эффект. В качестве примера можно рассмотреть эргономику и удобство использования (юзабилити) Apple IPhone.
Владелец продукта может либо воспользоваться своей интуицией и опытом для отнесения функционала к той или иной категории, либо собрать небольшую группу потенциальных потребителей (20–30 человек) и провести в ней опрос. Для оценки мы будем рассматривать отдельные истории пользователей либо целые эпики и задавать по каждой истории пользователю два вопроса.
1. Как вы отнесетесь к наличию данной функциональности в продукте?
2. Как вы отнесетесь к отсутствию данной функциональности в продукте?
Кроме функциональных требований (историй пользователей), можно проводить и анализ по нефункциональным требованиям и отображать их соответствующим образом в журнале пожеланий продукта.
В качестве ответов опрашиваемому пользователю предлагаются следующие варианты ответов:
• нравится;
• ожидаю этого;
• все равно;
• могу смириться с этим;
• не нравится это.
После такого опроса можно проводить анализ результатов с помощью следующей таблицы (табл. 3.2).
Таблица 3.2.
Анализ результатов
В результате функции продукта разобьются на шесть категорий:
• A (attractive) – привлекательные;
• O (one-dimensional) – линейные;
• M (must-be) – обязательные;
• R (reverse) – обратные (ненужные);
• Q (questionable result) – сомнительный/противоречивый результат;
• I (indifferent) – безразлично.
Первые три категории для нашего анализа являются самыми интересными и дают более глубокое понимание требований по нашему продукту:
• реализовывать требования, которые относятся к обязательным, необходимо до определенного предела, так как дальнейшие инвестиции в них не увеличат удовлетворенность пользователей;
• вместо этого стоит сфокусироваться на линейных и привлекательных требованиях, так как они позволят значительно повысить удовлетворенность клиента.
По завершении опроса необходимо подвести итоги, просуммировав ответы пользователей (табл. 3.3).
Таблица 3.3.
Суммы ответов пользователей
Таким образом, можно сделать выводы, к каким типам относятся те или иные функции исследуемого продукта.
Умные цели для спринта
Очень хорошей практикой является постановка целей для конкретного спринта, чтобы команда могла сфокусироваться на этих целях и принимать решения, исходя из них. Цели спринта обычно формулируются владельцем продукта при активном участии команды, чтобы команда разделяла поставленную цель.
Владелец продукта должен ставить перед собой и командой четкие и понятные цели, для чего существует несколько критериев, которые собираются в английскую аббревиатуру SMART («умный») (табл. 3.4).
Таблица 3.4.
Расшифровка SMART
Specific – точные и конкретные цели
Есть замечательный закон Мерфи, который можно в нашем случае сформулировать так: «Если есть несколько способов понять задачу, то кто-то обязательно поймет ее неправильно». Поэтому при постановке целей необходимо делать их максимально точными и конкретными, чтобы исключить различные интерпретации у постановщика и исполнителя (табл. 3.5). Хорошей практикой также будет запись целей либо на бумагу, либо в электронном виде, благо сейчас имеется множество соответствующих программ и веб-сервисов.
Таблица 3.5.
Запись целей
Точность и конкретность отнюдь не значит, что необходимо постоянно подробно расписывать каждый термин. Просто необходимо договориться об их значениях. Важно, чтобы каждый элемент журнала пожеланий одинаково понимался и командой, и владельцем продукта.
Measurable – измеримые цели
Измеримость целей приносит сразу несколько бонусов. Во-первых, если имеется числовой показатель достижения цели, вы точно знаете, на каком этапе работы находитесь и сколько осталось. Во-вторых, вы знаете, сколько прошли; иногда бывает полезно посмотреть назад, чтобы поднять свою мотивацию. В-третьих, по завершении работ вы сможете посчитать, на сколько процентов ваша цель достигнута (табл. 3.6).
Таблица 3.6.
Измеримость целей
Присутствие метрик важно не только в формулировке элементов журнала пожеланий, но и в оценке размера самого элемента. Хотя последними тенденциями является отказ от числовых оценок, без них планирование не будет точным.
Achievable – достижимые цели
У каждого человека есть набор знаний и навыков, поэтому для различных людей необходимо подбирать соответствующие задания. В соответствии с навыками и знаниями человека задачи можно категоризировать следующим образом.
Недостижимые. При постановке таких задач заранее понятно, что исполнитель с ними заведомо не справится. Например, нельзя за день нарисовать 1000 качественных макетов для разных сайтов. Такие задачи перед подчиненными ставить нельзя.
Труднодостижимые. Для выполнения подобных задач исполнителю будет необходимо использовать все свои знания и умения. Например, нарисовать десять вариантов макета дизайна для сайта за день. Такие задачи команда должна решать, но не постоянно, иначе она просто перегорит. Поручать подобные задачи следует прежде всего опытным и амбициозным сотрудникам, для которых они будут своеобразным вызовом. Чем труднее выполнить поставленную задачу, тем значительнее чувство достигнутого.
Достижимые. Эти задачи точно соответствуют уровню знаний и навыков исполнителя. Например, нарисовать дизайн макета сайта по утвержденному наброску и брифу за один день. Такие задачи необходимы для передышки между более сложными и выработки уверенности в своих силах.
Легкодостижимые. Подобные задачи не соответствуют компетенции сотрудника, и ему будет не очень интересно их выполнять. Например, нарисовать кнопочку для формы в заданном стиле за день. Такие задачи желательно поручать только новым сотрудникам для интеграции в команду.
Общий вывод можно сделать следующий: необходимо чередовать достижимые и труднодостижимые задачи. При использовании гибких методологий, когда элементы журнала пожеланий оценивает команда, такое чередование получается естественным образом: команда иногда оценивает в большую сторону, иногда в меньшую.
Relevant – релевантные цели
Релевантность целей нужно рассматривать с двух сторон: релевантность для исполнителя и для компании. Релевантность (значимость) для исполнителя тесно связана с его мотивацией. Например, сотруднику, который любит изучать новые технологии, можно и нужно поручить исследовательский проект, а не рутинную работу. Когда команда понимает, что цель важна, усилия, которые она направит на ее достижение, будут заведомо больше усилий, направленных на «неважную» цель. Отмечу также, что букву R (и другие буквы аббревиатуры SMART) расшифровывают по-разному.
Time-bound – цели со сроком
При обсуждении сроков выполнения задач или достижения целей нельзя не вспомнить еще один эмпирический закон – закон Паркинсона: «Любая работа увеличивается в объеме, чтобы заполнить все отпущенное на нее время». Из личного опыта скажу, что, когда у задачи нет срока, она вытесняется срочными делами и шанс, что до нее когда-нибудь дойдут руки, падает, поэтому при постановке любой задачи необходимо устанавливать срок исполнения.
Срочность целей тесно связана с достижимостью: чем меньше срок исполнения задачи, тем более она труднодостижимая, что надо учитывать при постановке задач (табл. 3.7).
Таблица 3.7.
Срочность задач
Концепция ограничения по срокам встроена в Scrum: итерации всегда фиксированного размера и команда четко знает, когда будет проводиться демонстрация результатов спринта.
SMART
Лишняя функциональность
Может показаться, что большое количество функций является конкурентным преимуществом, но почти всегда это не так. Более того, таким продуктом обычно сложно пользоваться, сложно его разрабатывать, да еще его очень сложно поддерживать.
Насколько дорогой окажется поддержка, сильно зависит от длительности проекта. Проиллюстрирую это следующим графиком, на котором по горизонтальной оси отложена длительность проекта, а по вертикальной – стоимость. Если стоимость разработки новой «фишки» фактически не зависит от длительности проекта, то стоимость поддержки в длительных проектах вырастает. В некоторой точке эти графики пересекутся.
На практике понять, где находится эта точка (и соответствующая длительность проекта), очень сложно, так как ее расположение будет зависеть от многих факторов. С другой стороны, ясно, что для проектов, которые достаточно коротки, выгодной стратегией будет создание «фишек» без оглядки на стоимость поддержки в противовес проектам с длинным жизненным циклом.
Зависимость стоимости разработки и поддержки от длительности проекта
Если со стартапами все понятно, то для анализа проектов с жизненным циклом, длительность которых измеряется годами, можно рассмотреть следующую формулу стоимости разработки и поддержки «фишки»:
FC = StoryPoints × StoryPointCost + SupportCost
Она фактически иллюстрирует графики в аналитическом виде: первое слагаемое, которое представляет собой стоимость разработки, при увеличении длительности проекта не изменяется, второе же растет.
Зависимость стоимости разработки и поддержки от времени жизни проекта
Из этого можно сделать следующие выводы:
• в бесконечном проекте важна только стоимость поддержки;
• чем длительнее проект, тем важней стоимость поддержки;
• в долгосрочных проектах нужно оценивать стоимость поддержки, а не разработки;
• чем длительнее проект, тем выгодней вырезать ненужные «фишки».
Обратите особое внимание на четвертое следствие, которое практически обязательно для длительных проектов, тогда в определенный момент вам не придется переписывать продукт с нуля.