Подтвердить что ты не робот

Как вы применяете Scrum для улучшения обслуживания и устаревшего кода?

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

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

В принципе, как мне преодолеть незапланированные задачи и задачи, которые очень сложно оценить с помощью процесса схватки? или я просто применяю неправильный процесс для этой среды?

4b9b3361

Ответ 1

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

Я бы попробовал одну неделю итераций с ежедневными ожиданиями, приоритизацией отставания и "сделано, сделано". Затем переоцените через 5 или 6 недель, чтобы узнать, что можно улучшить. Не бойтесь попробовать процесс, как есть, и не бойтесь настраивать его в своей среде, как только вы его пробовали.

Был также PDF файл под названием Agile для поддержки и операций за 5 минут, который был недавно отправлен в Список развития Scrum на Yahoo!

Ответ 2

В принципе, как мне преодолеть незапланированные задачи и задачи, которые очень сложно оценить с помощью процесса схватки? или я просто применяю неправильный процесс для этой среды?

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

Причина этого проста и двойна:

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

  • Довольно часто при работе с задачи обслуживания, к тому времени, когда вы закончили оценку, у вас есть также закончил решение проблемы. Это делает процесс оценки избыточным как инструмент планирования. Те, кто настаивает на делении оценки на решение проблемы для задач обслуживания просто добавляя ненужные служебные данные.

Проще говоря, вам нужна система массового обслуживания. Он будет иметь следующие компоненты:

  • "Пул" задач, которые были которые требуют внимания. Недавно поднятые предметы всегда должны идти в пул, никогда не очередь.
  • Процесс перемещения этих задач из пул и очередь. Обычно требуется сочетание деловых/технических знаний.
  • Очередь задач, которые четко упорядочены так что разработчики, ответственные за обслуживание очереди может просто выбрать с передней стороны.
  • Метод перемещения элементов в очереди (Перераспределение приоритетов). Чтобы позволить "прыгать в очередь" для критических/аварийных элементов.
  • Способ доставки завершенных элементов, который не прерывает обслуживание очереди. Это важно, потому что накладные расходы на доставку элементов обслуживания обычно значительно ниже, чем затраты на разработку. Вы не хотите, чтобы ваша команда поддержки сидела в течение дня, ожидая, когда команды сборки и тестирования будут давать им одобрение каждый раз, когда они доставляют исправление.

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

Ответ 3

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

С Waterfall существует неявное понимание того, что ошибки отвечают за разработчиков. Так или иначе, они находятся на крючке, чтобы исправить их, не влияя на разработку нового кода и функций. Таким образом, они "свободны" для пользователей, но представляют собой огромные неудобства для разработчиков.

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

Ответ 4

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

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

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

Если вы намекаете на тип борьбы с огнем, сохраните часть квоты на работу итераций для таких действий. На основе исторических тенденций/действий вы должны иметь возможность сказать, например. мы имеем скорость 10 сюжетных точек за итерацию (4 человека-команда 5day-итерация). Каждый из нас проводит день в неделю, реагируя на чрезвычайные ситуации. Поэтому мы должны выбрать только 8 пунктов отставания, чтобы следующая итерация была реалистичной. Если у нас нет чрезвычайных проблем, мы подберем следующий верхний элемент из приоритетного отставания.
CoryFoy упоминает более динамичный/реальный подход с канбанской пост-им в своем ответе.

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

AFAIR Scrum не предоставляет технику оценки. Используйте тот, который лучше всего подходит для команды. man days/story points/и т.д. Единственный способ улучшить оценку - это практика и опыт, которые я считаю. Чем те же самые люди сидят вместе, чтобы оценивать новые задачи, тем лучше их оценки. В условиях обслуживания, я бы предположил, что это легче оценить, потому что система более или менее хорошо известна группе. Если нет, назначьте/используйте всплески, чтобы получить большую ясность.

Я чувствую, что вы пытаетесь съесть слона здесь. Я бы предложил следующие укусы.

Ответ 5

Рассматривайте все исправления и улучшения как отдельные истории и оценивайте их соответствующим образом. Мое личное мнение состоит в том, что вещи, которые занимают менее 10-15 минут, чтобы исправить, должны быть немедленно выполнены. Для тех, кто занимает больше времени, они становятся частью текущего цикла "исправления и улучшения". Как и при оценке регулярных требований, вы берете лучшее предположение как команда. По мере того, как выясняется больше информации, а оценки не корректируют итерацию и предстоящие спринты.

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

Ответ 6

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

Взгляните на Эффективную работу с устаревшим кодом Майкла Перса. Вот ссылка на выдержку. http://www.objectmentor.com/resources/articles/WorkingEffectivelyWithLegacyCode.pdf

Джейсон

Ответ 7

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

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

Ответ 8

Это зависит от жизненного цикла приложения. Если это приложение "Закат", которое скоро будет проведено, конечно, основное внимание будет уделяться исправлению ошибок верхнего приоритета.

Если продукт "Зрелый" и имеет дорожную карту и продолжает развиваться, у вас появятся исправления и улучшения. Там много стимулов, чтобы дизайн был чистым и развивался путем рефакторинга. Это может означать периодические незначительные и основные выпуски [кроме eFixes - исправления/исправления для исправления ошибок]. Вы можете искусить свою радость от радости, так как усовершенствование и исправления могут стать сюжетом и стать частью вашего портфеля Sprint. Весь список сделает ваш продукт Backlog.

Нижняя строка. Если вы хотите реорганизовать и сохранить дизайн приложения чистым [программисты имеют тенденцию принимать ярлыки, если фокус - исключительно исправление ошибок], это может произойти только с "живым" приложением. Тот, который развивается и обновляется. И подвижный - естественный.

Даже если у вас есть только исправления (это приложение Turing Complete;) или приложение Sunset), это помогает, если все они могут быть свернуты в спринт и перевернуты в конце производства каждого спринта. Если исправления необходимо вставить в производство по мере их фиксации, гораздо сложнее применить Scrum.

Ответ 9

Мы применили схватку в этом контексте.

Некоторые из ключей успеха.
1. Все на предприятии покупают идею схватки (это важно для )

2. Спринт около 2 недель (наши 2-3 первых спринта, где 1 неделя, чтобы понять процесс)
3. Ни при каких обстоятельствах в текущий спринт не может быть добавлен пункт 4. Если возникает реальная чрезвычайная ситуация, остановите спринт, сделайте ретроспективу и начните новый спринт.
5. Найдите время для ретроспекции (время, чтобы поделиться хотя бы последним спринтом и проанализировать его)
6. В спринте вставьте хотя бы одну задачу для улучшения процесса (часто добавляемого к отставанию в ретроспективе); это хорошо для морального состояния войск, и в конце дня вы окажетесь на вашем пути, чтобы иметь меньше чрезвычайной ситуации.
7. TIME BOXED ежедневно поднимается на встречу

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

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

Наконец, из того, что я понял, Scrum больше связан с "инструментами", чтобы улучшить ваш процесс. Вы начинаете с чего-то простого. Вы делаете небольшую итерацию. На каждой итерации у вас есть FIX TARGET, а не бесконечный список ошибок. Поскольку вы выбираете свои задачи из списка в планировании (не соглашаетесь на их назначение), вы становитесь более привлекательными для его доставки. Когда вы встретите встречу, вы встретите свою пару каждый день с вашим списком TODO... вы хотите уважать свое участие, которое вы делали накануне. С итерацией вы тратите время, чтобы поговорить друг с другом и определить, что будет хорошо, и что должно улучшиться. Вы также принимаете меры для его улучшения и продолжения работы. Не бойтесь что-либо изменить, даже то, что я сказал;)/даже любое основное из Scrum... Настоящий ключ - адаптировать Scrum к тому, что ваша команда должна быть счастливой и продуктивной. Вы не увидите его после одной итерации, но многие из них....

Ответ 10

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

В этом случае я настоятельно рекомендую объединить три подхода:

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

Фактически это верно для любого проекта Agile/Scrum, поскольку они находятся в режиме обслуживания - добавление к существующей рабочей системе - из итерации 2.

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

Ответ 11

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

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

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

Как мы можем объединить это с нашим Sprint? Чтобы наши члены нашей команды сосредоточились на спринте, мы решили "отказаться от участия" в нашем сборнике. Это означает, что один или несколько человек не будут частью команды для определенного Спринта и могут сосредоточиться на других заданиях, таких как настоящие срочные исправления. Следующий Sprint этот человек снова будет частью команды, а кто-то другой будет отвечать за экстренные вызовы.

Другой вариант может заключаться в том, что мы ожидаем, что 20% времени в Sprint для "незапланированных задач", но это даст неверные указания о работе, которую мы можем сделать в Sprint (у нас не будет такого же количества срочные исправления во время каждого спринта). Мы также хотим, чтобы наши члены команды были сосредоточены на Sprint, и выполнение этих срочных исправлений в Sprint отвлечет наших членов команды. "контекстное переключение" также будет означать потерю времени, и мы стараемся избегать этого.

Все зависит от вашей "среды" и от того, как быстро срочные проблемы должны быть исправлены.

Ответ 12

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

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

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

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