Что значит быть проворным?

17

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

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

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

QA обычно включались несколько месяцев спустя, и к тому времени мы обнаружили недостающие требования, которые еще больше увеличили объем работы, которую мы должны были выполнить. Очевидно, что обратной связи не было.

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

JD01
источник
4
Похоже, дубликат programmers.stackexchange.com/questions/15928/… Похоже, что вы, ребята, действительно не знали, что делать, и у них не было реального руководства для обеспечения процесса
sylvanaar
1
Да, я согласен с вами на 100%. Мой менеджер прочитал книгу о гибкой и просто ладил с ней (хотя и очень плохо). Я использовал TDD на стороне сервера проекта, но другие не хотели изучать его или видеть его преимущества. У нас была основа (на стороне клиента), которая работала вечно, и разработчик продолжал спорить, что ему просто нужно продолжать (без помех).
JD01
3
Хотя название кажется дублирующим, я думаю, что этот вопрос сам по себе полезен, потому что многие команды читают «общие» объяснения того, что такое Agile (и даже проходят обучение и нанимают консультантов), а затем сталкиваются с теми же проблемами, что и JD01. команда в любом случае. Таким образом, рассмотрение вопроса в контексте этой конкретной команды может пролить свет на конкретные проблемы и пути их решения, которые не будут решаться другими вопросами общего характера.
ДХМ

Ответы:

27

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

Agile - это быстрые сбои благодаря постоянному общению с владельцем продукта / клиентами. Лучше потерпеть неудачу раньше, чем позже, меньше работы будет сделано, и меньше будет «потеряно». И вы не застряли с аргументом, что «у нас нет времени, чтобы сделать это правильно, так как мы потратили так много времени, делая это неправильно, нам просто нужно продолжать идти по этому же пути, даже если это приводит к провалу» ».

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

В SCRUM ежедневная поддержка - это не предоставление статуса руководству, а форсирование взаимодействия с разработчиками, чтобы вы знали, что делают ваши коллеги по команде, и могли помогать друг другу, а не дублировать работу. Если на человека уходит более 45 секунд, вы делаете это неправильно. Речь идет о прозрачности для команды: если один человек дает один и тот же статус несколько дней на что-то, что должно стоить одного дня, команда может решить проблему с людьми раньше, чем позже.

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

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


источник
1
Спасибо, Джаррод, за ваш ответ. Должен ли TDD быть в стороне от Agile? Было трудно заставить разработчиков думать таким образом. В конце, как я уже говорил, в конце они провели несколько тестов (если они помнили) и сказали, что это TDD. Я согласен со всем, что вы сказали. Цикл обратной связи практически не существовал, потому что мой менеджер чувствовал, что он вмешивается в «структуру», на которую уходили месяцы и месяцы. К тому времени мы застряли в реализации функциональности, которая не отвечала требованиям клиентов.
JD01
3
TDD - красная сельдь, я не согласен с ней как с религией лично, что хорошего в тестах на код, который не отвечает потребностям клиентов. А поскольку тестирование должно быть встроено и ничего не поставлено и не продемонстрировано, что не протестировано, TDD как мантра довольно бесполезна. Если это не сработает, не показывайте это. Если вы этого не сделаете, владелец продукта / клиент не сможет принять его.
2
Я начал делать много TDD, но теперь перешел на BDD, который больше соответствует потребностям клиентов в качестве приемочных тестов. Хотя я чувствую, что TDD помогал создавать проекты, я не увидел бы иного в дополнение к предоставлению тестов.
JD01
1
Основной причиной TDD является возможность непрерывного рефакторинга, снижая темпы накопления технического долга. Если есть код, который вы боитесь изменить, потому что повторное тестирование будет слишком дорогим, проект будет преждевременным.
Кевин Клайн
Я слышал, что многие люди проповедуют TDD, я просто никогда не видел это на практике. Лично мой мозг не работает таким образом. У меня есть общее представление о том, что я пишу, но когда я пишу, я перебираю и перемещаю вещи. Написание тестов сначала просто невозможно для меня. Я пишу модульные тесты, обычно как часть написания кода, но они пишутся так, как я пишу код, а не заранее.
DaveG
9

Джаррод дал хороший ответ (+1 к этому), и я хотел бы немного остановиться на этом.

Agile - это не только быстрые сбои и обратная связь между владельцем продукта (клиентом) и командой; речь идет о быстрой обратной связи между всеми заинтересованными сторонами. Быть по-настоящему гибким (и это прямо из манифеста ) - значит признать, что процесс существует только для того, чтобы помочь разработчикам в создании лучшего продукта. Люди над процессом означают, что как только команда узнает, что ваш существующий процесс не работает, вы меняете его и заставляете его работать.

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

Другой вариант - вместо того, чтобы навязывать команде другой процесс и заставлять всех следовать тому, что вам скажет Скрам, попробовать гибкий подход : общаться с командой и посмотреть, сможете ли вы вместе определить проблемные области и решения для каждой из них. Затем постепенно вносите изменения в работу, чтобы решать проблемы.

Это может занять некоторое время, но ...

  1. Сначала вы исправите самые большие проблемы, которые окажут наибольшее влияние на способность вашей команды предоставлять продукт.
  2. Выявляя насущные проблемы и участвуя в поиске решений, члены вашей команды поймут, почему определенные практики важны, и не будут просто выполнять их, потому что им предписано их выполнять.

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

Ключ к пониманию заключается в том, что Agile - это не создание нового процесса для действий; речь идет о постоянных изменениях и постоянной адаптации к существующим процессам / практикам.

DXM
источник
1
к downvoter: забота, чтобы разработать? Разве я не растрепал несколько перьев, потому что сказал, что не принимай Scrum вслепую, или это было что-то еще?
ДХМ
2
да глупо Я +1 для вашей подробной информации.
Майкл Даррант
1
+1 за « Ключ , чтобы понять, что не проворным о придумывают новый способ делать вещи, речь идет о непрерывном изменении и постоянной корректировки существующих процессов / практики. »
Дэвид «лысый имбирь»
-2

если команда (и ее руководство) действительно хотят «быть гибкими», они должны начать с чтения и обсуждения в команде Agile Manifesto и его принципов. Затем выберите одну из созданных гибких методологий ( например, Scrum ), изучите ее и начните с нее. Я бы порекомендовал внимательно следить за ним, прежде чем изменять его, но это только я.

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

StevenV
источник
2
Я понизил голосование, потому что я не думаю, что это отвечает на оригинальный вопрос.
Брайан Оукли
1
достаточно справедливо, я полагаю. Я обращался к первоначальной предпосылке ОП: «У нас есть проект, который, как все говорят, мы будем делать гибким образом, но я сомневаюсь, что мы четко поняли, что такое гибкие». Многие люди говорят, что они или что они хотят «делать гибкие» или «быть гибкими», не понимая, что такое Agile Philosophy или методологии, которые ее поддерживают.
StevenV
3
Я не согласен со слепым следованием определенной методологии полностью. Быть «по-настоящему» гибким означает, что вы не привязываетесь к какой-либо конкретной тенденции или методологии, если это не подходит вашей компании и команде. Лучше использовать методологию в качестве отправной точки, а затем, как только вы немного потренируетесь и еще лучше приобретете некоторый опыт, настройтесь под свои конкретные потребности. Еще важнее то, что если следующий проект и заказчик требуют чего-то немного другого, настройте методологию на комплект. не то, что действительно Agile.
С.Робинс
1
Повторно посещая мой ответ, я согласен с S.Robins выше и изменил свой ответ, чтобы отразить это.
StevenV