Agile: Оценка и планирование проектов - Майк Кон
Шрифт:
Интервал:
Саша выждала несколько секунд, чтобы понять, есть ли вопросы. Вопросов не было.
— Так с чего мы начнем разработку? — спросила Роуз.
— Я хочу начать с генератора ходов, — сказал Аллан. — Это наш самый большой источник риска.
— У меня возражений нет, — заметила Саша, другой программист команды. — Чем я могу помочь, Аллан? Обычно все, что касается искусственного интеллекта, твоя доля работы.
— Да, но кое-что можешь сделать ты. Спасибо, — ответил Аллан. — Твоя помощь очень кстати, поскольку меня беспокоит сложность разработки сильного движка.
— Так давайте начнем с истории «Как игрок я могу играть против слабого движка, распознающего только кольца». Ты ведь это хотел сделать в первую очередь, Аллан? — спросила Делани.
— Да. Первое, что нам нужно сделать, это закодировать классы, которые будут отслеживать состояние доски, следить за очередностью ходов и т. п. Саша, ты здесь определенно можешь помочь.
— Окей. Сколько времени, на твой взгляд, это займет? Пару дней?
— Пару полных дней. Лучше сказать, 16 часов, — ответил Аллан.
— Аллан, давай будем записывать каждую задачу на отдельной карточке. Напиши это на карточке и укажи 16 в углу, чтобы не забыть оценку, — сказал Карлос.
Аллан заполнил карточку задачи (23.1).
— Может быть, поставить на ней мои инициалы, чтобы не забыть, чья это карточка?
— Нет. Иначе будет казаться, что этим занимаешься ты один. Лучше, если мы на текущем этапе не будем распределять работу между исполнителями.
— Мне нужно будет протестировать это, — сказал Прасад. — Времени на такую задачу потребуется немного, но это первый код нынешнего проекта, и я хочу удостовериться, что все делаю правильно. Я хочу сказать, что тестирование займет 10 часов.
Он заполнил карточку задачи 23.2.
— Карлос, в прошлый раз ты говорил, что мне нужно разбить работу на небольшие части, — сказал Аллан. — Я ведь не могу сказать, что разработка генератора ходов для колец займет две недели, так ведь?
— Да, не можешь. При идентифицировании задач нам нужно держать их в пределах от одного до 16 часов. В идеале следует стремиться к тому, чтобы выполнять по одной задаче каждый день; иначе говоря, на них в среднем должно уходить пять-шесть часов, поскольку у нас всегда есть другие повседневные задачи.
— В таком случае, — произнес Аллан, — я сначала сделаю генератор ходов, который сможет разыгрывать шесть шестиугольников подряд, чтобы составить кольцо. Противника, пытающегося помешать генератору, не будет. Генератор начнет ходить со случайной клетки и пытаться построить кольцо за шесть ходов. Потом я доработаю его так, чтобы он мог строить кольца, даже если противник будет пытаться блокировать их. После этого я переключусь на защитную стратегию и попробую сделать генератор, который научится блокировать действия игрока, пытающегося построить кольцо. Думаю, для этой истории этого хватит.
— Тогда я пишу такую карточку задачи: «Создать генератор ходов, который может построить кольцо в отсутствие блокировок». Именно это ты собираешься делать в первую очередь, — сказала Саша.
— Пожалуй, на это у меня уйдет львиная доля дня. Поставь, пожалуйста, на карточке шесть часов, — попросил Аллан.
— Аллан, без обид, ты всегда чересчур оптимистичен перед началом разработки нового генератора ходов, — заметила Роуз, художник.
— Да, есть такое. Давайте лучше удвоим оценку, — согласился Аллан.
Саша зачеркнула «шесть» на карточке и поставила 12.
Карлос руководил обсуждением оценок остальных задач, идентифицированных Алланом. «Есть ли еще неидентифицированные задачи для этой истории?» — спросил он.
— Не забывайте, что нужно еще время на тестирование! — сказал Прасад. — Если Аллан будет давать мне код после выполнения каждой из идентифицированных им задач, то я смогу определять и автоматизировать тесты одновременно с ним. О выявленных ошибках он будет узнавать, пока информация о коде еще не выветрилась у него из головы. Я написал задачи на карточках, пока Аллан рассказывал, как он будет работать, но они еще не оценены. Может быть, сделаем это вместе?
Когда члены команды закончили обсуждение истории «Как игрок я могу играть против слабого движка, распознающего только кольца», они представили карточки задач с оценками (табл. 23.7).
— В этой итерации порядка 84 часов. Работа распределена между Алланом, Сашей и Прасадом, — сказал Карлос. — Исходя из того, что я видел здесь в течение двух дней, думаю, нам следует рассчитывать на шесть часов продуктивной работы в день на человека. Оставшаяся часть дня уходит на переписку, переговоры с другими проектными командами, ежедневные совещания и т. п. плюс полдня каждые две недели, затрачиваемые на планирование.
— Шесть, на мой взгляд, нормально.
— На мой тоже. Может быть, даже ближе к пяти, но я постараюсь, чтобы в этом проекте было шесть. Думаю, это реально, если отказаться от некоторых мелочей, которые каждый день съедают время, — сказала Саша.
— Теперь, когда вы разбили первую историю на задачи, — сказал Карлос, — вам нужно задаться вопросом, готовы ли вы взять обязательство реализовать эту историю.
— Историю или задачи? — спросил Фрэнк. — В отношении чего мы должны взять обязательство?
— Хороший вопрос, Фрэнк, — заметил Карлос. — Вы берете обязательство в отношении истории. Задачи идентифицировались как способ определить, какой объем работы предстоит сделать, и помочь взять обязательство. Поскольку обязательство берется в отношении истории, а не задач, важно, чтобы вы думали о нем как об обязательстве всей команды. Я не хочу, чтобы в конце итерации Саша сказала, что она сделала свою часть работы, связанной с классами управления состоянием, а Аллан нет. Это не приводит ни к чему хорошему. Вы можете думать о задачах, но обязательства принимаете в отношении историй.
— Любопытно, — сказал Фрэнк. — Мне нравится различие.
— Я могу взять обязательство в отношении этой истории, — заявил Прасад. — У меня задачи тестирования объемом 36 часов. При шести часах в день в течение 10 дней я располагаю 60 часами.
— А у нас с Алланом объем задач 48 часов. Это не будет проблемой, — сказала Саша.
— Отлично. Мы спланировали первую историю и взяли обязательство реализовать ее, — сказал Фрэнк. — На очереди вторая по важности история.
Поделиться книгой в соц сетях:
Обратите внимание, что комментарий должен быть не короче 20 символов. Покажите уважение к себе и другим пользователям!