Планирование релиза

We use cookies. Read the Privacy and Cookie Policy

Когда все вернулись и расселись за столом, Фрэнк начал совещание:

— Делани, расскажи нам об исследовании продукта и о его результатах.

— Вот что я сделала, — сказала Делани. — Я разослала порядка 500 предложений заполнить веб-анкету. Кроме того, опросила по телефону 35 вероятных покупателей игры, подобной нашей. В итоге мы получили ответы от 75 потенциальных покупателей. Цель опроса заключалась в выяснении, какие из идентифицированных нами функций являются обязательными, т. е. такими, которые обязательно должны присутствовать в игре. Мы также хотели узнать, какие функции являются привлекательными. Они необязательно должны иметься в игре, но их включение делает игру более привлекательной и позволяет повысить ее цену. Наконец, существуют такие функции, которые мы называем линейными. Чем больше линейных функций присутствует в продукте, тем больше люди платят за него. Примером линейных функций является мощность двигателя автомобиля, количество каналов спутникового телевидения и количество уровней сложности в игре. Не буду подробно рассказывать о том, как я проводила исследование. Но если вам интересно, могу назвать нужную главу в книге (см. главу 11 «Приоритизация желательности»). Результаты исследования я обобщила здесь. — Делани раздала присутствовавшим распечатку табл. 23.12.

— Делани, пунктов здесь намного меньше, чем наших историй, — сказал Прасад. — Почему?

— Чем длиннее анкета, тем реже ее заполняют, — ответила Делани. — Поэтому я объединила истории по своему усмотрению. Например, «Эстетически приятная» в этой таблице охватывает три наши истории: о красивой графике, о начальном экране и о возможности переключаться между деревянной и металлической доской и фишками. В то же время, если объединить слишком много историй в одном вопросе, полученные ответы могут оказаться не слишком полезными.

— Я могу связать первые три колонки с твоим описанием трех типов функций, Делани. Но что означают категории «Безразличная», «Обратная» и «Сомнительная»? — спросила Роуз.

— Хороший вопрос. Безразличная означает, что у человека нет никаких заметных предпочтений в отношении функции, — объяснила Делани. — Форма представления вопросов позволяет нам не учитывать случайное мнение. Это, например, может произойти, когда кто-то говорит, что ему не нравится фоновая музыка, но ему также не по вкусу ее отсутствие. Такое случается. Люди, бывает, путают или неправильно понимают вопросы в спешке. Обратите внимание, что доля обратных и сомнительных функций довольно невелика.

— Делани, я правильно это понимаю? — не успокоилась Роуз. — Здесь написано, что слабый и средний противник обязательны. А в строке «Сильный противник» стоят сразу две категории — безразличная и обязательная. Что это означает? Почему ты не выбрала вариант, на который приходится наибольший процент ответов?

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

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

— Это действительно так. Но небольшое число привлекательных функций не означает, что сам продукт не будет привлекательным, — ответила Делани. — Не забывайте, что привлекательными считаются функции, которых не ожидают. Если я забираюсь в новенький Porsche, то вряд ли найду там много действительно неожиданного. Однако сам автомобиль все равно хорош. Но мне кажется, я понимаю, что тебя беспокоит. Мы еще не идентифицировали все функции, которые необходимы этому продукту. В каждом продукте должна быть как минимум пара привлекательных функций — нечто такое, что заставляет пользователя сказать: «Вау!» Опрос, похоже, говорит, что мы пока не нашли ничего такого. Именно поэтому я прошу выделить мне время в первой итерации для продолжения исследования. Я хочу провести ряд открытых обсуждений с некоторыми участниками опроса. Надеюсь, это поможет найти одну-две привлекательные функции.

— Правильно, это было бы очень полезно, — сказал Фрэнк. — У кого-нибудь есть еще вопросы к Делани? — Фрэнк выдержал паузу, прежде чем продолжить: — Если нет, то давайте перейдем к обсуждению того, что нужно включить в релиз Havannah.

Вопросов больше не было. Команда начала заниматься планированием релиза с приоритизации функций.

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

— Ни одна из этих историй не должна быть неожиданной, — продолжила Делани. — Мы видим эти функции в каждой разыгрываемой партии. Их поддержка — это стоимость входа.

Делани взяла еще одну группу карточек.

— На этой части стола я разложу истории, которые наши клиенты считают обязательными. — Эту группу карточек она разместила так, как показано в табл. 23.14.

— Делани, а почему ты включаешь сильный движок сюда? — спросил Аллан. — Мне это нравится, но в соответствии с тем, что ты нам показывала несколько минут назад, эта функция считается одновременно и обязательной, и безразличной.

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

— Окей.

Фрэнку очень нравился этот процесс. Раньше команда нередко отдавала все вопросы определения функциональности продукта ему как менеджеру по продукту и Делани как аналитику. А теперь он наслаждался тем, что вся команда участвовала в обсуждении и внимательно относилась к тому, о чем шла речь. Это не могло не пойти на пользу новому продукту.

— Еще одна история, которую я включила в категорию обязательных и которую стоит обсудить, это «Как игрок я хотел бы иметь возможность использовать систему для игры с другим человеком на моем компьютере». Я считаю ее обязательной, поскольку мы уже говорили, что она является хорошей контрольной точкой. Следующая группа историй, — сказала Делани, выкладывая очередную стопку карточек, — относится к категории линейных. Иначе говоря, чем их больше, тем лучше, но ни одна из них не является обязательной.

Делани разложила истории на столе так, как показано в табл. 23.15.

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

— Я не говорила, что эти функции опциональны, Роуз, — возразила Делани. — Ты совершенно права — они обязательно нужны. Существует определенный базовый уровень, ниже которого опускаться нельзя, и игра должна быть эстетически приятной, именно так и звучал вопрос в анкете. Но такие функции линейны, поскольку чем их больше, тем лучше. Два варианта игровой доски лучше, чем один, а три — еще лучше.

— Это понятно, — сказал Фрэнк. — Но у тебя есть еще какие-то карточки. Что за истории на них?

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

— После привлекательных функций, — продолжила Делани, — у нас остаются две истории, к которым потенциальные игроки безразличны. Я не думаю, что нам нужно включать их в релиз. — Она выложила на стол карточки (табл. 23.17). — Нам вряд ли удастся продать больше или продавать по более высокой цене в результате добавления функций, к которым игроки безразличны.

— Здорово! — сказал Фрэнк. — Это больше информации, чем у нас обычно бывает на данном этапе. Отличная работа, Делани. Все это получено в результате опроса?

— Да. Анкета специально была сделана несложной, в ней пользователей просто спрашивали о том, как они относятся к наличию той или иной функции и к ее отсутствию. Из-за того, что я объединила некоторые наши пользовательские истории в темы, в анкету вошли всего лишь 24 вопроса. При разговоре по телефону с учетом вступительной болтовни на нее уходило минут 15. Наш веб-сайт отслеживал время, затрачиваемое на заполнение формы. В среднем оно занимало семь минут. Одному посетителю потребовалось 40 минут, но я подозреваю, что он просто уходил или разговаривал с кем-то по телефону.

— Итак, Фрэнк, как ты расставишь приоритеты? — спросила Саша.

— Нам нужно реализовать все функции, которые Делани отнесла к обязательным или которые попали в категорию обязательных в результате опроса.

— По нашим оценкам, их суммарный размер составляет 88 пунктов, — сказала Саша.

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

— Таким образом, ты хочешь получить все линейные функции. Это еще 32 пункта, — сказала Саша.

— Я знаю. Я, как и любой другой менеджер по продукту, хочу видеть в релизе все эти функции.

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

— Ты думаешь, на их реализацию может потребоваться больше четырех месяцев? — спросил Фрэнк с беспокойством.

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

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

— Не забывайте, что эта история оценивается в восемь пунктов, — напомнил Аллан. — Я должен сделать так, чтобы движок мог определять хорошие ходы. Можно, конечно, расширить его возможности до идентификации неудачных ходов, но это не так просто.

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

— Это 12 пунктов из списка привлекательных функций. Будем ли включать что-то из категории безразличных функций? — спросила Саша.

— Не думаю, — ответил Фрэнк. — Что у нас получается в сумме?

— Ты выбрал 88 пунктов из категории обязательных функций, 32 пункта из категории линейных и 12 из категории привлекательных. Всего получилось 132 пункта, — сказала Саша.

— И вы реализуете это за две итерации, так? — спросил Фрэнк с улыбкой.

— Если сможем, то да.

— А если серьезно, то как определить, сколько времени на это потребуется?

— Лучше всего было бы выполнить три итерации и посмотреть, — объяснил Карлос. — После каждой итерации можно суммировать количество пунктов для реализованных историй. Мы называем это скоростью. Скорость варьирует от итерации к итерации, но в среднем остается довольно стабильной.

— Да, — оживился Аллан, — наши оценки могут быть ошибочными. К тому же история может оказаться удачной или неудачной.

— После трех итераций мы должны получить надежный показатель темпов прогресса команды. Тогда суммарный объем оставшейся работы можно разделить на скорость и получить ожидаемое время завершения, — сказал Карлос.

— И такая оценка будет довольно точной? — спросил Фрэнк.

— Должна быть. После трех итераций у вас будет хорошее представление о том, сколько пунктов вы можете реализовать за двухнедельную итерацию, — ответил Карлос.

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

— Но можно хоть как-то оценить сроки прямо сейчас?

— Конечно, Фрэнк, — сказал Карлос. — Вы планировали реализовать четыре истории в первой итерации. Мы можем сложить пункты, связанные с каждой из них, и назвать это плановой скоростью. Никто не знает, насколько она реальна, но это наше первоначальное предположение.

— Я уже сделал это, — сказал Прасад. — Сумма равна 18. Восемь пунктов приходится на историю «Как игрок я могу играть против слабого движка, распознающего только кольца», пять пунктов — на историю «Как игрок я могу играть против слабого движка, распознающего только мосты», два пункта — на историю «Как игрок я хочу, чтобы компьютер распознавал выигрышную фигуру» и три пункта — на историю «Как игрок я хотел бы иметь возможность использовать систему для игры с другим человеком на моем компьютере».

— Сколько итераций потребует реализация проекта при скорости 18?

— Чуть больше семи итераций. У нас 132 пункта. Семь на 18 — это 126. Итого шесть пунктов сверх семи итераций, — сказал Прасад.

— Можем ли мы сказать, что нам нужно семь итераций? — спросил Фрэнк.

— Можем, но делать этого не стоит, — ответил Карлос. — Я предпочитаю давать оценки в виде диапазона. Если посмотреть на объем работы, которая приходится на восьмую итерацию, то лучше всего сказать, что проект займет от шести до 10 итераций.

— Мне как-то не хочется, чтобы этот проект растягивался на 20 недель. Но ты говоришь, что он может занять и 12 недель, так ведь? — спросил Фрэнк.

— Может, но с равным успехом может растянуться до 20, — настаивал Карлос. — Чтобы этого не случилось, ты можешь удалить наименее приоритетные функции, если скорость покажет, что мы ближе к 10 итерациям. Не забывайте также, что Делани активно занимается поиском новых функций. Если она обнаружит что-то, нам придется отодвинуть срок или отказаться от каких-нибудь текущих функций.

— Ну хорошо, я смогу объяснить руководству разброс от 12 до 20 недель, — сказал Фрэнк. — Давайте теперь займемся нашим начальным планом.

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

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

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

— Так нам нужен план того, над чем мы будем работать в каждой итерации? — спросил Фрэнк.

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

— Я понимаю, зачем нужно знать главные приоритеты, но зачем нам функции из нижней части списка? — заметил Фрэнк.

— Это не так важно для первого совещания, но ситуация меняется по мере приближения к завершению релиза. Например, вряд ли мы захотим, чтобы маркетинговая служба разработала упаковку с надписью «Теперь с музыкальным фоном», если эта функция может быть выброшена в последнюю минуту.

— Хорошо, но почему бы не потратить сегодня немного времени на планирование того, что мы будем делать в каждой итерации?

— Нет смысла, — ответил Карлос. — Через две недели мы будем знать намного больше, чем сегодня. Зачем планировать то, что мы будем делать в итерации, до того, как возникнет необходимость? Этого не нужно делать. В крупном проекте, особенно с участием нескольких команд, работу которых необходимо координировать, можно забегать вперед на две-три итерации. Но в нашем проекте это ни к чему.

— Так мы закончили с планированием релиза? — спросил Фрэнк.

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

— Не пойми меня неправильно, — сказал Фрэнк, — но я не уверен, что справлюсь с этим сегодня.

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

— Абсолютно. Будет чудесно увидеть все это через две недели.