Agile: Оценка и планирование проектов - Майк Кон
Шрифт:
Интервал:
Команда продолжила обсуждение этой истории, провела раунд покера планирования и решила оценить ее в восемь пунктов.
— А потом, на мой взгляд, нам нужна история «Как игрок я могу играть против движка высокого уровня», — сказал Фрэнк.
— Она как минимум в два раза больше, чем история с движком среднего уровня, — заметил Аллан. — Предыдущую историю мы оценили в восемь. Но мне бы не хотелось давать этой истории оценку 16. Может быть, достаточно 13? Это самая скромная величина. Или все же остановимся на 16?
— Представьте, — сказал Карлос, — что карточки — это ведра. Если история равна 16, то она не войдет в ведро, которое вмещает 13. Введение новых величин нам ни к чему, поскольку это приводит к излишней точности. Мы не знаем, сколько здесь в точности: 13, 16 или 19. Важно помнить, что это всего лишь оценки, а не гарантии.
— Окей, я думаю, что эта история в два-три раза больше, чем движок среднего уровня, — сказал Аллан. — Это означает диапазон от 16 до 24. Поскольку 24 не войдет в ведро, вмещающее 20, значит, мне надо дать оценку 40? Это многовато. Наша история не тянет по размеру на пять историй с движком среднего уровня.
— Нет, я бы не стал делать этого, — ответил Карлос. — Это, конечно, ведра, но представьте, что их наполняют не водой, а песком. Значит, вы можете насыпать песок горкой.
— Перейдем к оценке, — сказал Аллан.
После этого обсуждения все единодушно согласились с Алланом и подняли оценку 20.
— Итак, мы оцениваем эту историю в 20, — сказал Карлос. — На данном этапе это нормально, но потом, вполне возможно, нам придется разбить такую работу как минимум на две части.
— Значит, нам не нужно разбивать эту историю на более мелкие, точно так же, как историю со слабым движком? — спросил Аллан.
— Нет, мы можем сделать это позже, когда подойдет очередь реализации этой истории, — ответил Карлос. — К тому времени мы будем знать больше, а разбивка прямо сейчас ничего полезного нам не принесет.
— Хорошо. Идем дальше, — предложила Делани. — На очереди история «Как игрок я хотел бы иметь возможность использовать систему для игры с другим человеком на моем компьютере». Имеется в виду, что два игрока могут сидеть за одним компьютером и делать ходы по очереди с помощью клавиатуры или мыши. Все, что нам здесь нужно, это получать от компьютера сообщение, когда кто-то выигрывает.
— Другие функции, которые мы идентифицировали, по-прежнему работают, так ведь? — спросил Прасад. — Два игрока могут захотеть использовать функцию отмены и повтора или получать подсказку.
— Конечно, — ответила Делани.
— Думаю, нам надо добавить историю «Как игрок я хочу, чтобы компьютер распознавал выигрышную фигуру», — заметил Аллан.
— А разве это не часть историй о генераторе ходов?
— Да, но если мы вытащим ее, то сможем реализовать отдельно, а это позволит нам быстро написать версию игры «человек против человека» при наличии работающего генератора ходов.
Возражений не последовало, и новую историю оценили в два пункта.
— Аллан, ведь тогда понизятся оценки историй для слабого движка, не так ли? — спросил Фрэнк.
— Не должны. Я бы не стал менять их оценки. Но, если тебе так хочется, можно понизить восьмипунктовые истории до семипунктовых.
— Нет, не нужно этого делать, — вмешался Карлос. — В результате наши оценки окажутся слишком точными. Если бы мы хотели понизить оценку до пяти, то это было бы нормально, а так оставим ее равной восьми.
— Пять — это слишком мало, — сказал Аллан.
— Итак, возвращаемся к оценке истории «Как игрок я хотел бы иметь возможность использовать систему для игры с другим человеком на моем компьютере».
После двух раундов покера планирования члены команды пришли к согласованной оценке: три пункта.
— Теперь очередь истории «Как игроку мне хотелось бы, чтобы оформление игры на экране было эстетически приятным», — прочитала Делани.
— Ну наконец-то моя история, — сказала Роуз, художник.
— Да, только мне хочется переформулировать ее, — сказала Саша. — В нынешней форме она расплывчата и очень большая. Я бы предпочла, чтобы она выглядела так: «Как игрок я хотел бы иметь возможность выбирать между деревянными доской и фишками и металлическими доской и фишками». Что еще мы подразумевали под словами «эстетически приятный»?
— Это имеет отношение к общему облику и впечатлению от игры, — ответил Фрэнк. — Скорее всего, нам не нужны многочисленные меню, но они должны выглядеть красиво. Опции меню должны иметь логичное расположение. Нам нужен привлекательный начальный экран при загрузке игры. Доска и фишки — это весь пользовательский интерфейс. Наверное, нужно сделать какой-нибудь фон вокруг игрового поля. Думаю, это должно быть что-то художественное. Роуз нужно время, чтобы сделать нечто оригинальное.
— Понятно. А нельзя ли разбить это на отдельные истории? — спросила Саша.
— Можно, — вставила слово Делани, — но все может оказаться не так просто. На мой взгляд, меню нужно разрабатывать в контексте тех функций, для которых требуются эти меню или их разделы. Роуз, тебя устроит, если будет одна история для начального экрана и еще одна история для художественного фона?
— Да, вполне. Мне в любом случае пришлось бы работать над ними по отдельности.
Команда быстро оценила следующий набор историй.
— А что нам делать с этой историей? — спросил Прасад, указывая на карточку, где значилось «Как игрок я хотел бы иметь возможность иногда пользоваться подсказками».
— Что ты имеешь в виду?
— Если мы сделаем генератор ходов, эта история будет несложной. Нужно лишь, чтобы генератор предложил новый ход, но не компьютеру, а игроку. Это проще простого. Но если у нас не будет готового генератора ходов, то история становится по размеру такой же, как и создание целого генератора ходов.
— Ну вот, мы получили взаимозависимость: подсказку можно сделать только после реализации генератора ходов, — сказал Аллан.
— Да, но я не думаю, что это будет проблемой, — заметила Саша. — Разработка генератора ходов до функции подсказки вполне естественна для реализации этих историй. Взаимозависимость не будет нам мешать, и на нее не нужно обращать внимания. А чтобы не забыть о существовании такой взаимозависимости, ее можно записать в карточку. Так или иначе, эту историю можно оценить, исходя из предположения, что генератор ходов существует.
Все согласились, и историю оценили в один пункт.
— А что бы мы сделали, если бы и впрямь захотели реализовать подсказку до разработки генератора ходов?
— Иногда невозможно избавиться от взаимозависимости и с этим нужно смириться, как вы это делали до использования agile-подхода, — пояснил Карлос. — Чаще всего, однако, от нее удается избавиться. В нашем случае можно написать код, который позволяет пользователю запрашивать подсказку, отображать ее на экране и делать ход за пользователя, если он согласен. Чтобы получить подсказку, в системе должно быть нечто, называемое генератором подсказок. В конечном итоге он должен будет обращаться к генератору ходов для получения рекомендации, однако сейчас можно ограничиться тем, чтобы он выдавал ближайшую свободную клетку или случайную свободную клетку. Таким образом можно реализовать историю подсказки даже до начала разработки генератора ходов.
Поделиться книгой в соц сетях:
Обратите внимание, что комментарий должен быть не короче 20 символов. Покажите уважение к себе и другим пользователям!