В нашем магазине мы стремимся быть гибкими. И я бы сказал, что мы делаем большие успехи. Тем не менее, некоторые из нас заметили паттерн, который мы начали называть «Разработка, управляемая отказами».
Разработка, основанная на сбоях, в основном может быть описана как гибкий цикл выпуска / итерации, где ошибки / функции руководствуются не задачами и историями с критериями приемлемости, а с дефектами, введенными в программное обеспечение для отслеживания дефектов.
В нашей команде есть отличный менеджер проектов, который стремится получить критерии приемлемости от клиентов, но это не всегда возможно. На моем кресле по разработке это происходит из-за того, что клиент либо не знает точно, чего он хочет, либо (и это главное) в двух разных «лагерях» в главном офисе клиента конфликтует с тем, как должна быть реализована история. Лагерь А будет свободно определять , что функция X работает как это , то лагерь B потерпит неудачу из - за его не функционирует , как , что . Отсюда и термин «FDD». Процесс обусловлен «неудачами».
Это приводит к моему вопросу: кто-нибудь еще сталкивался с этим, и если да, то какие-либо советы / предложения по решению этого вопроса?
Мы, конечно, пытались договориться о лагере А и В, но все знают, что это не всегда так.
Благодарность
источник
Одна из основных причин использования итеративной разработки заключается в том, что у вас есть группа клиентов, которая не имеет четкого представления о том, чего она хочет.
Это не провал. Многие клиенты просто не имеют представления о том, что им нужно, пока они не получат что-то в свои руки. Вот почему они впервые увидят, что система не должна быть после того, как все выполнено. Пусть они увидят это рано и часто.
Другими словами, если это была единственная проблема, нет необходимости паниковать, если вы не окажетесь в ситуации, когда у вас просто бесконечные попытки.
Проблема разногласий среди клиентов - это проблема менеджера по продукту, которая не должна просочиться к вам. Самое большее, что вы должны увидеть, это отставание / задачи / что угодно. Конечно, премьер-министр часто выходит из диапазона развития, потому что это единственное место, которое они могут, но это не должно влиять на вас.
Как это сделать, будет зависеть от того, кто такие Лагерь А и Б.
Если Лагерь A и Лагерь B представляют собой два высших подъема, привлеките кого-нибудь, кто на самом деле будет использовать систему, чтобы сказать вам, что вам нужно. Иногда вы получаете разреженный воздух в земле управления, вызывая разрыв с реальностью. Кто-то, у кого есть руки, часто может прорваться сквозь идеализм и указать, что действительно нужно.
С другой стороны, если A и B являются группами пользователей, вы используете противоположный способ привлечения кого-то из руководства, чтобы установить закон.
Во всех случаях совершенство является врагом достаточно хорошего.
источник
То, что вы описываете, является типичной неправильной реализацией Agile. Вы не принимаете перемены, вы - их раб .
У вас есть владелец продукта? Можете ли вы поговорить с ними по мере необходимости? Вы делаете обзор спринта с пользователями? Участвуют ли пользователи в процессе (через владельца продукта) в планировании спринта? У вас есть тестеры в основной команде?
Я настоятельно рекомендую вам нанять Agile тренера и / или отправить свою команду на тренировку.
Другое решение - перестать заниматься Agile.
источник
Если они играют в пинг-понг (А говорит «делай х», «Б» отвергает, говорит «у», «А» отвергает и возвращается к «х»), то твои лиды (ПО или все, что у тебя есть) должны их побить, чтобы принять решение ,
Это нормально, если первый шаг заканчивается тем, что не отвечает их потребностям (суть в том, чтобы дать им что-то на что посмотреть), но если они сидят там и качаются взад-вперед на последующих итерациях, вы никогда не закончите.
источник
Проблема здесь, кажется, не в том, что «я это узнаю, когда увижу». Каркасы могут помочь (до определенного момента) с этой конкретной проблемой.
Проблема в том, что, как мне кажется, две конкурирующие фракции в вашем клиенте. В идеале лагеря А и В должны были придумать какое-то согласованное общее видение, которое они могли бы представить вам.
Возможно, вы объясните им, сколько вы стоите в бою, и вы снова переделали то, что А попросил для Б (или наоборот).
Ведение подробных записей о ваших временных затратах поможет здесь. (В моей работе было написано легкое приложение для отслеживания времени: простое в использовании, простое для составления отчетов и сообщающее о времени за 15 минут. Это позволяет легко сказать: «Я потратил n часов на функцию X».)
Это означает, что вы рискуете расстроить клиента или выглядеть плохо, независимо от того, что вы делаете, поскольку то, что вы делаете для B, может расстроить A (или, наоборот, наоборот).
Надеюсь, вы сможете найти чемпиона у клиента, который позаботится о борьбе за вас.
источник
На мой взгляд, проблема может быть эффективно решена только в одном месте, у клиента, что будет сложно.
Вы упоминаете, что вы стремитесь к гибкости, поэтому я возьму это с точки зрения схватки, которая является гибким процессом, который я знаю лучше всего.
Согласно Scrum, у вас есть конкретная роль, владелец продукта, который отвечает за определение приоритетов пользовательских историй / ошибок / релизов и т. Д. В идеале это должен быть только один человек. Если есть много заинтересованных сторон с разными взглядами на одно и то же программное обеспечение, владелец продукта несет ответственность за то, чтобы продукт удовлетворял все заинтересованные стороны.
Мне кажется, что ваш менеджер проекта играет эту роль. Но так как его называют менеджером проекта, а не владельцем продукта, я склонен полагать, что он обременен и другими задачами (традиционными, нестабильными, управленческими задачами?) И не имеет достаточно времени, чтобы заниматься роль владельца продукта.
Поэтому я считаю, что вам нужен один человек, отвечающий за координацию потребностей между различными командами заказчика, чтобы гарантировать, что требования / пользовательские истории, представленные разработчикам, проверены обеими командами заказчика. Выполнение этой роли легко может быть работой на полный рабочий день, особенно с вашим клиентом.
Что действительно было бы идеально, так это передать эту ответственность клиенту, чтобы один из сотрудников вашего клиента имел роль владельца продукта. Пока у клиента нет этой роли, он не стремится решать свои внутренние разногласия, и они оставляют вам решать то, что вы, скорее всего, не сможете. И именно поэтому я считаю, что единственным эффективным решением является возложить на клиента ответственность.
Но, учитывая тот факт, что вы уже начали сотрудничество, я считаю, что вам будет трудно реализовать эти изменения.
источник
Чтобы ваше программное обеспечение было принято вашим клиентом, оно должно полностью выполнить требования, установленные клиентом, в соответствии с критериями приемлемости.
У вас есть набор пользовательских требований в форме историй и критериев приемлемости, но у части организации-клиента разные интерпретации пользовательских историй, что приводит к неоднозначности.
Вы можете выйти из этой ситуации, описав функциональный дизайн и внедренные бизнес-правила и подписав их с клиентом. Это будет то, что проверяется во время принятия. Это должно быть заранее согласовано с клиентом, чтобы впоследствии не обсуждать значение всей документации.
Пока ваша группа не может описать программное обеспечение, которое вы разрабатываете таким образом, что обе группы согласны с ним, вы все еще находитесь на этапе анализа требований проекта.
Ваш менеджер проекта может / должен предложить платную консультацию в рамках проекта, чтобы устранить неоднозначность в функциональных требованиях.
источник
Я думаю, что мы все видели случай, когда мы получаем подробные требования от пользователя, реализуем их, а затем слышим от пользователя «Подождите, это не сработает для меня», как только он будет реализован.
Одна вещь, которая могла бы помочь - это выполнить форму QA для требований, предоставив пользователю подробные примеры с ожидаемым поведением системы. Например, вы можете сказать: «Вот пример случая. Если мы реализуем X, то Y будет результатом, а Z одним из последствий». Таким образом, вы можете перейти к «Подождите, это не сработает», прежде чем писать код, а не после.
источник