— Окей.
Фрэнку очень нравился этот процесс. Раньше команда нередко отдавала все вопросы определения функциональности продукта ему как менеджеру по продукту и Делани как аналитику. А теперь он наслаждался тем, что вся команда участвовала в обсуждении и внимательно относилась к тому, о чем шла речь. Это не могло не пойти на пользу новому продукту.
— Еще одна история, которую я включила в категорию обязательных и которую стоит обсудить, это «Как игрок я хотел бы иметь возможность использовать систему для игры с другим человеком на моем компьютере». Я считаю ее обязательной, поскольку мы уже говорили, что она является хорошей контрольной точкой. Следующая группа историй, — сказала Делани, выкладывая очередную стопку карточек, — относится к категории линейных. Иначе говоря, чем их больше, тем лучше, но ни одна из них не является обязательной.
Делани разложила истории на столе так, как показано в табл. 23.15.
— Художественное оформление нельзя считать чем-то опциональным, — сказала Роуз. — Нам обязательно нужны красивый начальный экран и приятные для глаза доски и фон.
— Я не говорила, что эти функции опциональны, Роуз, — возразила Делани. — Ты совершенно права — они обязательно нужны. Существует определенный базовый уровень, ниже которого опускаться нельзя, и игра должна быть эстетически приятной, именно так и звучал вопрос в анкете. Но такие функции линейны, поскольку чем их больше, тем лучше. Два варианта игровой доски лучше, чем один, а три — еще лучше.
— Это понятно, — сказал Фрэнк. — Но у тебя есть еще какие-то карточки. Что за истории на них?
— Эти карточки — привлекательные истории. Потенциальные покупатели не ожидают увидеть ни одну из них, но мы должны включить парочку таких функций в продукт по той причине, что они реально повышают удовольствие от игры. И, как я уже говорила, наличие подобных функций позволяет запрашивать более высокую цену (см. табл. 23.16).
— После привлекательных функций, — продолжила Делани, — у нас остаются две истории, к которым потенциальные игроки безразличны. Я не думаю, что нам нужно включать их в релиз. — Она выложила на стол карточки (табл. 23.17). — Нам вряд ли удастся продать больше или продавать по более высокой цене в результате добавления функций, к которым игроки безразличны.
— Здорово! — сказал Фрэнк. — Это больше информации, чем у нас обычно бывает на данном этапе. Отличная работа, Делани. Все это получено в результате опроса?
— Да. Анкета специально была сделана несложной, в ней пользователей просто спрашивали о том, как они относятся к наличию той или иной функции и к ее отсутствию. Из-за того, что я объединила некоторые наши пользовательские истории в темы, в анкету вошли всего лишь 24 вопроса. При разговоре по телефону с учетом вступительной болтовни на нее уходило минут 15. Наш веб-сайт отслеживал время, затрачиваемое на заполнение формы. В среднем оно занимало семь минут. Одному посетителю потребовалось 40 минут, но я подозреваю, что он просто уходил или разговаривал с кем-то по телефону.
— Итак, Фрэнк, как ты расставишь приоритеты? — спросила Саша.
— Нам нужно реализовать все функции, которые Делани отнесла к обязательным или которые попали в категорию обязательных в результате опроса.
— По нашим оценкам, их суммарный размер составляет 88 пунктов, — сказала Саша.
— В отношении функций, которые Делани определила как линейные, я согласен с Роуз: нам необходимо хорошее художественное оформление, — продолжил Фрэнк. — Все эти истории должны войти в релиз. Кроме того, я слабо представляют себе игру без музыкального фона. Возможно, у пользователя не будет выбора, но эта история тянет всего на один пункт, поэтому, на мой взгляд, она нужна. Ну и, конечно, онлайновая помощь. Не все покупатели этой игры будут знакомы с правилами.
— Таким образом, ты хочешь получить все линейные функции. Это еще 32 пункта, — сказала Саша.
— Я знаю. Я, как и любой другой менеджер по продукту, хочу видеть в релизе все эти функции.
— Я не возражаю, а просто хочу понять, какой продукт ты желаешь получить через четыре месяца. Суммарный размер историй на данный момент составляет 120 пунктов.
— Ты думаешь, на их реализацию может потребоваться больше четырех месяцев? — спросил Фрэнк с беспокойством.
— Пока что не знаю. Давайте определимся с тем, чего мы хотим, а потом посмотрим, сколько времени на это потребуется, — ответила Саша.
— Резонно, — заметил Фрэнк. — Что до привлекательных функций, то, я думаю, здесь нам нужны подсказки, ну и, возможно, самоучитель. Не исключено, что нам придется отказаться от онлайновой помощи, но мне хотелось бы включить в план и то и другое. Еще мне нравится идея предупреждения о неудачном ходе.
— Не забывайте, что эта история оценивается в восемь пунктов, — напомнил Аллан. — Я должен сделать так, чтобы движок мог определять хорошие ходы. Можно, конечно, расширить его возможности до идентификации неудачных ходов, но это не так просто.
— Именно это меня и беспокоит. Давайте пока обойдемся без этой функции, но все же включим историю, связанную с предупреждением игрока об угрозе проигрыша, если он не закроет определенную клетку и не заблокирует ход компьютера.
— Это 12 пунктов из списка привлекательных функций. Будем ли включать что-то из категории безразличных функций? — спросила Саша.
— Не думаю, — ответил Фрэнк. — Что у нас получается в сумме?
— Ты выбрал 88 пунктов из категории обязательных функций, 32 пункта из категории линейных и 12 из категории привлекательных. Всего получилось 132 пункта, — сказала Саша.
— И вы реализуете это за две итерации, так? — спросил Фрэнк с улыбкой.
— Если сможем, то да.
— А если серьезно, то как определить, сколько времени на это потребуется?
— Лучше всего было бы выполнить три итерации и посмотреть, — объяснил Карлос. — После каждой итерации можно суммировать количество пунктов для реализованных историй. Мы называем это скоростью. Скорость варьирует от итерации к итерации, но в среднем остается довольно стабильной.
— Да, — оживился Аллан, — наши оценки могут быть ошибочными. К тому же история может оказаться удачной или неудачной.
— После трех итераций мы должны получить надежный показатель темпов прогресса команды. Тогда суммарный объем оставшейся работы можно разделить на скорость и получить ожидаемое время завершения, — сказал Карлос.