Что делать с «Failure Driven Development»?

28

В нашем магазине мы стремимся быть гибкими. И я бы сказал, что мы делаем большие успехи. Тем не менее, некоторые из нас заметили паттерн, который мы начали называть «Разработка, управляемая отказами».

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

В нашей команде есть отличный менеджер проектов, который стремится получить критерии приемлемости от клиентов, но это не всегда возможно. На моем кресле по разработке это происходит из-за того, что клиент либо не знает точно, чего он хочет, либо (и это главное) в двух разных «лагерях» в главном офисе клиента конфликтует с тем, как должна быть реализована история. Лагерь А будет свободно определять , что функция X работает как это , то лагерь B потерпит неудачу из - за его не функционирует , как , что . Отсюда и термин «FDD». Процесс обусловлен «неудачами».

Это приводит к моему вопросу: кто-нибудь еще сталкивался с этим, и если да, то какие-либо советы / предложения по решению этого вопроса?

Мы, конечно, пытались договориться о лагере А и В, но все знают, что это не всегда так.

Благодарность

DevSolo
источник

Ответы:

19

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

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

Лагерь A безуспешно будет диктовать, что функция X работает таким образом, а затем Лагерь B не справится с этим из-за того, что он не функционирует так.

Несоответствие между CampA и CampB - это политическая проблема, а не проблема программного обеспечения. Решение проблемы предполагает общение с людьми и получение одного явного победителя.

Tangurena
источник
5
Учитывая комментарий «несоответствие между CampA и CampB - политическая проблема ...», я отмечаю это как «правильный» ответ.
DevSolo
В scrum задача владельца продукта - привести CampA и CampB к единому общему решению. Для команды разработчиков владелец продукта должен предоставить только одну правду.
k3b
@ k3b это правда, но ОП не говорит, что они собираются делать Scrum. Звучит так, будто у них нет никого, подходящего для роли «владельца продукта».
bdsl
7

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

Это не провал. Многие клиенты просто не имеют представления о том, что им нужно, пока они не получат что-то в свои руки. Вот почему они впервые увидят, что система не должна быть после того, как все выполнено. Пусть они увидят это рано и часто.

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

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

Как это сделать, будет зависеть от того, кто такие Лагерь А и Б.

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

С другой стороны, если A и B являются группами пользователей, вы используете противоположный способ привлечения кого-то из руководства, чтобы установить закон.

Во всех случаях совершенство является врагом достаточно хорошего.

MIA
источник
5

То, что вы описываете, является типичной неправильной реализацией Agile. Вы не принимаете перемены, вы - их раб .

У вас есть владелец продукта? Можете ли вы поговорить с ними по мере необходимости? Вы делаете обзор спринта с пользователями? Участвуют ли пользователи в процессе (через владельца продукта) в планировании спринта? У вас есть тестеры в основной команде?

Я настоятельно рекомендую вам нанять Agile тренера и / или отправить свою команду на тренировку.

Другое решение - перестать заниматься Agile.

Phrancis
источник
У нас на самом деле Agile тренер. Я должен был упомянуть это. Именно он и я придумал термин FDD. Что касается владельца продукта, то это также и клиент. Кто оказывается достаточно большим, чтобы их предприятие способствовало такому поведению.
DevSolo
@DevSolo: он CSM, CSC или CST? Если он CSM, недостаточно тренировать.
@ Pierre303 Что вы подразумеваете под CSM, CSC или CST?
Сонго
Сертифицированный Scrum Master, Сертифицированный Scrum Coach, Сертифицированный Scrum Trainer
1
@gnat: да, это я
4

Если они играют в пинг-понг (А говорит «делай х», «Б» отвергает, говорит «у», «А» отвергает и возвращается к «х»), то твои лиды (ПО или все, что у тебя есть) должны их побить, чтобы принять решение ,

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

Майкл Кон
источник
3

Проблема здесь, кажется, не в том, что «я это узнаю, когда увижу». Каркасы могут помочь (до определенного момента) с этой конкретной проблемой.

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

Возможно, вы объясните им, сколько вы стоите в бою, и вы снова переделали то, что А попросил для Б (или наоборот).

Ведение подробных записей о ваших временных затратах поможет здесь. (В моей работе было написано легкое приложение для отслеживания времени: простое в использовании, простое для составления отчетов и сообщающее о времени за 15 минут. Это позволяет легко сказать: «Я потратил n часов на функцию X».)

Это означает, что вы рискуете расстроить клиента или выглядеть плохо, независимо от того, что вы делаете, поскольку то, что вы делаете для B, может расстроить A (или, наоборот, наоборот).

Надеюсь, вы сможете найти чемпиона у клиента, который позаботится о борьбе за вас.

Фрэнк Шиарар
источник
3

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

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

Согласно Scrum, у вас есть конкретная роль, владелец продукта, который отвечает за определение приоритетов пользовательских историй / ошибок / релизов и т. Д. В идеале это должен быть только один человек. Если есть много заинтересованных сторон с разными взглядами на одно и то же программное обеспечение, владелец продукта несет ответственность за то, чтобы продукт удовлетворял все заинтересованные стороны.

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

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

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

Но, учитывая тот факт, что вы уже начали сотрудничество, я считаю, что вам будет трудно реализовать эти изменения.

Пит
источник
Мне кажется, что PM - владелец продукта. В вопросе говорится, что премьер-министр «стремится получить критерии приемлемости от клиента (-ов), но это не всегда возможно». Для меня «владелец продукта» означает кого-то, кто сам устанавливает критерии приемлемости, а не спрашивает их у другой стороны. Основная проблема здесь заключается в том, что нет четкой политики в отношении того, кто именно имеет полномочия устанавливать критерии приемлемости.
bdsl
2

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

У вас есть набор пользовательских требований в форме историй и критериев приемлемости, но у части организации-клиента разные интерпретации пользовательских историй, что приводит к неоднозначности.

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

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

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

RSP
источник
1

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

Одна вещь, которая могла бы помочь - это выполнить форму QA для требований, предоставив пользователю подробные примеры с ожидаемым поведением системы. Например, вы можете сказать: «Вот пример случая. Если мы реализуем X, то Y будет результатом, а Z одним из последствий». Таким образом, вы можете перейти к «Подождите, это не сработает», прежде чем писать код, а не после.

Ларри Коулман
источник