Рассмотрим точку зрения руководителя проекта
Запрашивая сложность, они хотят получить число, которое они могут сравнить с вашим следующим спринтом, чтобы найти вашу скорость в команде. Возможно, они также пытаются использовать его, чтобы сложить ваш результат с оценками других команд, чтобы получить общую оценку того, когда все истории будут выполнены.
Менеджер проекта ищет оценку того, когда проект будет завершен, или, если они гибки на других сторонах треугольника время-функция-стоимость, какие другие участники могут быть извлечены, чтобы соответствовать его оставшемуся времени. Это не лишено смысла. Деловые решения должны быть приняты на основе этой оценки. Проблема в том, что это действительно трудно оценить для программного обеспечения. Планирование покера является одним из способов решения этой проблемы. Вместо того, чтобы рассматривать это как простое суммирование количества сюжетных моментов, скорее думайте о нем как о более сложной функции оценки, насколько это возможно, выполнения работы, измерения, сколько времени это заняло, итерации, а затем экстраполяции.
Обсуждение важнее, чем число
Я считаю, что самая важная часть встреч, нацеленных на сюжет, - это обсуждения. Если кто-то в команде не уверен, предложив цифру, он, вероятно, не до конца понимает историю, и нужно больше обсуждать. Из Agile Manifesto «Сотрудничество с клиентами по договорам». Вместо того, чтобы просто указывать контракт, написанный как пользовательскую историю, и говорить, что команда потерпела неудачу, если они не выполняют именно то, что вы хотите, всегда лучше говорить о том, что клиент действительно хочет, пока вы его не поймете.
Сложность против усилий
Чтобы ответить на ваш конкретный вопрос о сложности против усилий, у каждого, похоже, есть другое мнение по этому поводу. Горные козлы, которые делают карты для покера с надписями на козлах и чей владелец Майк Кон в мире Agile / Scrum, говорят, что это должно быть усилие, а не сложность.
Обычно это не показатель времени (см. Пример ниже для контрпримеров), так как люди плохо оценивают время, при этом другие факторы влияют на то, какое число они дают: например, давление, чтобы число оставалось низким, чтобы вы могли использовать больше функций в, давление, чтобы дать большее число, чтобы дать себе место, если вы столкнетесь с проблемой. Создать программное обеспечение сложно. Когда вы строите свой 100-й дом, вы можете оценить, сколько времени вам понадобится, поскольку вы построили 99 домов до этого. Если программное обеспечение, которое вы создаете, такое же, как и предыдущие программы, которые вы создали, то вы можете копировать и вставлять любой ценой, когда проект программного обеспечения отличается, и поэтому возникнут проблемы, которые вы не предвидели в начале.
Как и в случае с оценками времени, содержащими скрытые нагрузки, у измерения усилий также есть проблемы. Если младший разработчик оценивает высокую сложность, он может почувствовать, что оставляет себя открытым для атаки, поскольку он недостаточно хорош для других, которые дали бы ему более низкую оценку. Это наносит ущерб не только вашим оценкам, но и людям в команде.
Номера покера для планирования - это не «количество дней» или не какой-то другой показатель времени, а относительный показатель, позволяющий сравнить две истории пользователей. Первое, что вам нужно сделать в новой команде, это установить базовый уровень. Выберите одну пользовательскую историю, которая находится в середине диапазона сложности, и согласуйте в качестве группы число в середине диапазона, который вы хотите назначить. Теперь все другие пользовательские истории могут быть пронумерованы относительно этой. Я обнаружил, что это делает это намного проще.
Причины, по которым вы не можете дать оценку
Когда руководители проектов спрашивают вас, когда проект будет завершен, им нужно понять сложность вопроса, который они задают. Программисты не фабричные рабочие, где их производительность можно измерить, умножив скорость печати и продолжительность работы. Они выясняют ответы на проблемы, и это сложно. Играя в покер-планировщик, вы сначала определяете, кто в команде чувствует, что не может ответить на вопрос о том, какой номер назначить, а затем выясняете, почему они не могут ответить на этот вопрос. Я думаю, что есть как минимум четыре причины:
- История слишком большая. Разбейте его на более мелкие, более конкретные пользовательские истории. Помните, что каждая пользовательская история должна предоставлять пользователю одну ценность; вход - процесс - выход = значение.
- Они недостаточно хорошо разбираются в проблемной области, чтобы сказать, сколько времени им потребуется, или даже правильно задать все вопросы. Поговорите с людьми, которые знают больше о предметной области / программировании заинтересованных сторон, такого рода приложения, чего бы вы не видели раньше. Если это невозможно или не поможет вам, вы можете использовать всплеск дизайна. Пойдите и прототипируйте решение, но только в течение ограниченного и определенного промежутка времени. Определите, как долго будет продолжаться фаза прототипирования, не слишком долго, а затем снова встретитесь, чтобы поделиться своим новым пониманием.
- Ваши заинтересованные стороны недостаточно конкретны. «Построй мне облако» - неприемлемая пользовательская история. «Создайте мне систему, в которой я могу раскручивать виртуальные машины по требованию» лучше, поскольку она разбита дальше, но все еще не на том уровне, на котором вы можете дать точную оценку того, сколько времени вам понадобится, поскольку будет сотня скрытых Предположения в этом заявлении, которые есть у вашей заинтересованной стороны, вы не узнаете, пока не покажете им что-нибудь.
- Наконец, даже если вы можете дать оценку, это может быть неправильно с первого раза. Оценка - сложная проблема, и лучший способ решить сложные проблемы - это использовать научный метод. Соберите данные о том, какие числа оценивает каждый член команды, затем соберите данные о том, сколько времени они действительно потребовали, или насколько «сложными» они были на самом деле, хотя это сложнее, и затем сравните их с течением времени. В конце концов вы почувствуете, кто переоценивает, а кто недооценивает, и тогда вы должны поделиться этим с командой. Люди могут помочь друг другу стать лучше в оценке. Эти цифры также могут быть возвращены в ваш инструмент отслеживания, чтобы помочь лучше предсказать, сколько времени займет история.
Вывод
Я полагаю, что смыслом действительно должна быть дискуссия, но если вам действительно нужно дать кому-то номер, просто постарайтесь сделать так, чтобы он был независимым от того, над каким членом команды работает над ним и в каком порядке работают над историями. Суть в том, чтобы получить задний журнал, который имеет как приоритетные значения, так что вы работаете с ними в правильном порядке и размерах, так что руководитель проекта может примерно увидеть, сколько еще вы можете вписать до истечения срока. Вы должны иметь возможность остановиться в конце любой итерации и отправить все завершенные функции, которые были запущены.
Предупреждение
Вы можете рассчитывать время для выполнения задач в вашей команде столько, сколько хотите, пока вы храните цифры при себе. Как только вы позволите любому количеству сбежать из команды и быть замеченным другими людьми, они будут делать то, что вы не собирались делать. Они попытаются использовать его в качестве количества дней для выполнения задач. Они попытаются удержать вас в рейтинге относительной сложности и спросят, почему вам потребовалось больше времени, чтобы завершить одну пользовательскую историю, чем другую с таким же количеством баллов. Они сложат ваши номера вместе, сравнят их с номерами другой команды и спросят вас, почему другая команда «делает больше работы», когда они набирают больше сюжетных пунктов в течение определенного периода времени. Вы можете'
В сторону
Набор чисел в покере для планирования обычно распределяется таким образом, что промежутки между числами продолжают увеличиваться. Я считаю, что это должно отговорить людей от споров о том, является ли пользовательская история 16 или 17, если она больше 13, тогда просто сделайте ее 20.
пример
Я знаю по крайней мере одну команду, которая использует только цифры 1, 2, 3 и 4 для планирования покера. Они, вопреки соглашению и вопреки обсуждению выше, определяют их как дни программирования (фактически пара дней программирования, то есть, сколько дней потребуется двум программистам, работающим вместе на одной машине, чтобы завершить пользовательскую историю). Если команда считает, что для создания пользовательской истории потребуется более 4 дней, то она не указывается, а владельца продукта просят работать с командой, чтобы подробнее рассказать историю или указать ее более точно, чтобы она могла быть приведенным в этот диапазон для будущего совещания по планированию. Но это продвинутая гибкость и, вероятно, должны использоваться только людьми, которые уже имеют опыт использования других методов.