Самый большой недостаток гибкой разработки, которую я испытал, заключается в том, что люди, не участвующие в разработке, фокусируются на мантре о том, что пользовательская история (3-10 идеальных человеко-дней) не должна содержать более 1-3 предложений, таких как:
Как клиент, я могу использовать свободный текстовый поиск, чтобы найти нужные мне товары.
Давая это предложение, руководители проектов ожидают, что я, как разработчик, возьму на себя оценку и разработаю историю. Они предполагают, что гибкая разработка означает, что подобные предложения - это все, что они должны предоставить разработчикам.
Я не буду винить их, потому что известная литература о гибкой разработке создает впечатление, что это действительно сработает. Я прочитал что-то вроде 2 страниц на естественном языке за рассказ в «Planning XP», но это все. Поскольку «рабочее программное обеспечение» предпочтительнее «всеобъемлющей документации», эта тема, как правило, избегается.
Конечно, реальность такова, что, если разработчику предоставляется такая возможность, интервью с клиентом поднимает длинный список требований, которые клиент предъявляет к истории:
- Нам нужны логические операторы, такие как AND и OR.
- Нам нужен нечеткий поиск по всем терминам.
- Нам нужно искать по отдельным словам, а также по фразе.
- Мы не хотим находить продукты, которые соответствуют критериям X, Y и Z.
- Мы хотим отсортировать результат. Да, и, кстати, пользователь может выбрать критерии сортировки в комбинированном окне с параметрами a, b и c.
Итак, вы видите, что я не говорю о технических деталях, дизайне программного обеспечения или даже деталях реализации. Это чистые требования. Чем дольше мы говорим, тем больше клиент понимает, что на самом деле очень много можно сказать о том, что он хочет.
Но достаточно часто я нахожусь в ситуации, когда такая информация не предоставляется или очень дрянной. Не возможно, что я даю интервью, и человек, который был бы в состоянии дать интервью, не дает мне результата.
Иногда менеджеры даже придумывают технические детали, такие как «мы хотим, чтобы Lucene search», но они не хотят думать о том, хотят ли они найти только названия продуктов или описания продуктов. Иногда я думаю, что они просто ленивы;)
Для меня это главная проблема в проектах, в которых я работаю (веб-приложение для электронного бизнеса, 500-2000 человеко-дней на проект). Я достаточно часто решаю эту проблему, и руководители знают, что у большинства разработчиков есть проблемы с ситуацией. Но они считают, что разработчики слишком много «перфекционистов». Кажется, они раздражены тем, что разработчики «всегда хотят, чтобы все было указано».
Из-за отсутствия общепризнанных цифр трудно спорить. Все знают, какой длины должна быть итерация. Но никто не может сказать, сколько требуется требований, чтобы оценить и разработать историю.
У вас есть какая-то ссылка?
источник
Ответы:
Вы немного упускаете ловкий момент. То , что вы вызываете в историю пользователя, я вижу , как по меньшей мере шесть: один поиск скелетных, и один для каждого из пунктов маркированных. Во что бы то ни стало, составьте достаточно планов, чтобы не загнать себя в угол, из которого будет дорого выходить, но вся идея в том, что вы предоставляете минимум, необходимый для предоставления некоторой ценности, и делаете это достаточно быстро, чтобы получить быструю обратную связь.
Когда вы делите историю таким образом, это не только облегчает оценку, но и позволяет владельцу продукта расставлять приоритеты более детально. Конечно, им нравится возможность сортировать результаты поиска, но, возможно, это не так важно, как другой элемент в бэклоге, который совершенно не связан с поиском.
Также, по замыслу программистов, нуждающихся во всем, попробуйте взглянуть на это с точки зрения заказчика. Много раз, как будто вы собираетесь купить автомобиль, а продавец спрашивает, какого цвета вы хотите для ручки стеклоочистителя. Многие детали, которые мы могли бы найти важными, совершенно не имеют значения с точки зрения клиента. Я работал там, где требования сильно завышены, и, поверьте мне, это не очень весело. Вид широты, на который вы жалуетесь, многие программисты хотели бы иметь.
источник
Похоже, первая проблема заключается в том, что вы не должны применять оценки времени для пользовательских историй. Вы должны взять историю и применить «баллы истории», которые являются общей оценкой сложности от 1 до бесконечности. Сюжетные пункты часто запускаются примерно как 1,2,3,5,8,13,20 ... (У каждой организации свои правила.) Они обычно применяют что-то вроде:
1 - Вы можете делать это во сне, и это вряд ли стоит реализовывать. 2 - Вы понимаете это и можете сделать это быстро с небольшим риском переполнения. 3 - Вы понимаете это, но может быть сюрприз или два. 5 - Это будет небольшое исследование, с небольшим риском. 8 - Это большая задача, требует много исследований и может не вписаться в спринт. 13 - Это огромно, и определенно не будет вписываться в спринт. Там огромный риск. и т.п.
Как правило, любая пользовательская история, которая составляет 8 или выше, должна быть разбита на более мелкие истории.
Если у вас нет информации, чтобы сделать это, вам определенно следует отправить ее обратно менеджеру проекта и сказать, что вам нужно больше информации.
Вы действительно должны оценивать время только после того, как вы приняли историю в спринт, но даже тогда на это обращают меньше внимания. Идея состоит в том, что, как только ваша команда привыкнет к процессу наведения, вы можете измерить ее приблизительный результат на спринт в сюжетных пунктах и планировать таким образом. Вы не хотите планировать более короткие сроки, чем спринт. Идея состоит в том, что если вы правильно разбиваете задачи так, чтобы несколько историй помещались в спринте, и находились в диапазоне от 1 до 5 баллов, это означает, что они достаточно хорошо определены.
Кроме того, похоже, что руководители вашей компании не понимают, что такое «история». Критическая часть «пользовательской истории» - это критерии выхода. Критерии выхода - это одно или два коротких предложения, которые однозначно описывают, как можно показать, что это хранилище заполнено. В идеале, это должно быть что-то, что ваши ребята из QA сказали «да, мы можем проверить это». Важным моментом является то, что руководители должны понимать, что история пользователя завершена, когда программное обеспечение соответствует «критериям выхода». «Но мы не хотели этого», не сокращает это. Если они не хотели, чтобы то, что было доставлено, но соответствовало критериям выхода, они должны ввести новую историю.
Здесь, безусловно, есть элемент «обучения ПМ». Они должны понять, что расплывчатые истории приводят к большим историческим моментам, и что, если они определят историю неоднозначно, чтобы получить то, что они хотят, они должны сделать это снова.
Очевидно, что если заинтересованные стороны не собирают достаточно информации, то вам нужно, а если нужно, то это намного больше работы, не так ли? Задолго до моих гибких дней я добился успеха, дав очень большие оценки и недвусмысленно заявив, что оценки были настолько велики, чтобы учесть риск, вызванный отсутствием информации. Я должен был принять наихудший случай для всех вопросов, и оценивать на основе этого худшего случая. Я обнаружил, что менеджеры охотнее сообщают подробности, когда видят, что оценки снижаются.
Это не игровая система ... это совершенно правильно. Если вы не знаете, является ли это «A» или «B», вы оцениваете, исходя из которых дает наибольшую оценку, чтобы покрыть вашу задницу.
источник
По моему опыту, многие изменения или проекты, над которыми я работаю, имеют дело именно с этим. Custom X хочет чего-то, и у них есть представление о том, чего они хотят, но они дают вам лишь небольшую электронную почту требований. Это в основном потому, что клиент «точно» не знает, чего хочет. Вот почему большая часть работы нашего отдела обслуживания клиентов учитывает эти требования клиентов и фильтрует необходимую информацию, а также предсказывает, чего клиент действительно хочет или что ему действительно нужно.
Скажем, клиент (для меня) хочет, чтобы раздел нашего веб-приложения возвратил им список всех телефонных номеров. Они никогда не указывают, имеют ли они в виду физические, логические, которые назначены человеку или месту, и т. Д. Они просто хотят все номера телефонов. Как разработчик, я могу сидеть и думать о дюжине или более вопросов, которые мне нужно будет задать клиенту, так же, как у вас. Но, как вы говорите, это невозможно. Вот почему наличие хорошего отдела обслуживания клиентов, который знает продукт и клиент, неоценим.
Когда такого рода звонки поступают к нашим представителям клиента, они могут уточнить это с клиентом, зная, что им нужно, чтобы спросить их, чтобы получить правильные ответы на вопросы. У них также есть предвидение, чтобы знать, о чем просил клиент в прошлом, и они достаточно знают о системах, которые мы разрабатываем, чтобы они могли сказать «да» или «нет» чему-то, даже не спросив клиента.
Конечно, у вас будет много случаев, когда клиенту все еще потребуется что-то еще, что и вы, и клиентские сервисы пропустили, но это всегда будет происходить. Ваша цель и цель обслуживания клиентов должны заключаться в том, чтобы свести к минимуму разницу между тем, что вы разрабатываете, и тем, что вы получаете от клиента, с изменениями, которые необходимо внести. И все это сводится к общению и обучению ваших клиентов.
Может быть, это не так выполнимо для вас, как там, где я нахожусь, но наличие хорошей линии связи и доверия к вашим представителям клиента почти всегда поможет вам постепенно, и это уменьшит ваше разочарование и увеличит удовлетворенность клиента. Кроме того, вы можете с большей легкостью установить временные рамки для своих проектов, чем пожать плечами и сказать: «Я не знаю всего объема проекта, поэтому не знаю, сколько времени это займет». У нас здесь та же проблема, и лучшее общение и обучение помогают нам устанавливать разумные сроки и последовательно их соблюдать.
источник
Покупатель
Я хочу искать продукты
Менеджер по продукту Я проанализировал историю клиента и сформулировал следующие требования. Каждое требование было записано как отдельная история пользователя.
Разработчик Я получил пользовательские истории от менеджера по продукту. Я проанализировал каждую пользовательскую историю и составил список задач для каждой пользовательской истории.
Заказчик, менеджер по продукту и разработчик являются заинтересованными сторонами в этом процессе. Все они должны внести свой вклад в процесс анализа до начала работы. Обратите внимание, что это очень упрощенный пример.
Наши пользовательские истории анализируются и уточняются в следующем порядке (с некоторыми вариациями, конечно):
Служба поддержки -> Владелец продукта -> Менеджер по продукту -> Руководители отделов (старшие разработчики, руководители и т. Д.) -> Разработчики
После того, как все заинтересованные стороны внесли свой вклад в процесс анализа, мы можем оценить, сколько времени нам потребуется, чтобы донести историю. Процесс оценки, которому мы следуем, основан на скорости и опыте отдельных разработчиков.
Я не говорю, что это правильный способ ведения дел, но он действительно хорошо работает в нашей организации.
источник