Agile - шипы и общая временная шкала

9

Команда начинает свой первый Agile-проект с большим капиталом, и кажется, что проект будет хорошо соответствовать методологии (то есть мы можем просто взять гибкую книгу и следовать ей как рецепт) с небольшим замешательством:

Проект включает три вещи, с которыми никто в команде не имеет никакого опыта: интегрироваться с системой Foo Payroll, иметь возможность обрабатывать тип файла XYZ89 (где «XYZ89» = некоторый тип файла, о котором вы никогда не слышали), и преобразовывать некоторые другие файлы, чтобы они могли быть обработаны Frobnobdicator.

Насколько я понимаю, стандартной практикой Agile было бы запланировать пики для каждого из них, после чего мы можем определить, сколько времени они собираются занять (я не уверен, что есть большая вероятность того, что клиент решит не делать этого). их, так как они в значительной степени твердые требования проекта)

Итак, мои вопросы:

  1. Делаем ли мы все спайки в первой итерации, чтобы получить более точную оценку времени, которое потребуется, чтобы их выполнить и / или запустить и запустить «ходячий скелет»?

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

Каков наилучший способ обработки нескольких всплесков, когда они в основном являются необоротными требованиями проекта?


источник

Ответы:

4

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

Вот почему многие Agile проекты обычно начинаются с того, что я люблю называть Sprint 0 .

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

maple_shaft
источник
1
Bandaids на щипцы абсолютно необходимо! И Спринт 0 для всех, кроме самых тривиальных проектов и проектов с минимальным риском!
Майкл
3

Вы должны делать вещи в порядке приоритета, установленного владельцем продукта (или клиентом). Нет смысла убивать себя из-за того, что было действительно приятно иметь. Идея состоит в том, что если у вас заканчивается время и что-то не получается, это должны быть предметы с самым низким приоритетом.

Если они не будут расставлять приоритеты, что они хотят, вы будете бороться.

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

Сложные предметы на самом деле не являются «шипами». Это просто вещи, которые требуют больше усилий, чтобы понять. Разбейте их на более простые задачи, насколько это возможно.

Мэтью Флинн
источник
1
Я думаю, что в этом случае они должны быть шипами, потому что никто в команде никогда раньше не работал с системой Foo Payroll, файлами XYZ89 или Frobnobdicator. Мы не знаем, сколько времени займет интеграция с этими системами.
@ Джордан - Я понимаю, но если вы основываете свои оценки на модели сложности, а не на почасовой модели, вы можете понять, что она собирается предпринять. Да, у вас есть кривая изучения форматов файлов и API - немного больше сложности. Да, вам нужно работать с людьми из Payroll - немного сложнее. Это может означать, что вы можете работать только над одним из этих элементов и ничего больше в итерации.
Мэтью Флинн
1
Я очень рекомендую взглянуть на примененные пользовательские истории Майка Кона ( amazon.com/User-Stories-Applied-Software-Development/dp/… )
Мэтью Флинн,
1
Да, конечно, я понимаю ценность оценки с точки зрения относительной сложности, а не часов. Часть, в которой я запутался, это то, что если бы этот подход был правильным для описанной мной ситуации, то казалось бы, что шипы никогда не будут использоваться ни в одном проекте (разработчики просто скажут: «Э, это похоже на 3, это похоже на 5 ", хотя никто ничего не знает об интеграции с системой Fizzbot)
Что ж, я надеюсь, что если никто не знает о Fizzbot, они скажут, что это больше похоже на 13 или 21, а затем разбьют задачи - 1. узнать что-нибудь о Fizzbot. 2. Создайте базовый доступ к Fizzbot. 3. Модельный кейс для реального использования Fizzbot. 4. Построить интеграционные тесты. 5. Создайте настоящую интеграцию в Fizzbot ... Вы знаете, разбейте кусочки на вещи, которые понятны и, надеюсь, имеют размер.
Мэтью Флинн
0

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

Вы по-прежнему приносите ценность и продукт в конце спринта, даже если это хакерское консольное приложение. Идея в том, что вы не снижаете продуктивность всей команды. Если у вас заканчивается время, вы добавляете еще одну похожую задачу к следующему спринту.

Боб Дворник
источник