Уплата технического долга в Agile

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

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

  • Как разработчик, у меня есть 50% -ное покрытие тестирования по модулю бизнес-логики, поэтому я уверен в доставке
  • В качестве разработчика приложение поддерживает инъекцию зависимостей, поэтому мы можем менять конкреции и быть более гибкими в будущем.

или есть другая лучшая практика для очистки этого кода. Технический долг

Ответ 1

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

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

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

И вы не запрашиваете технических подробностей о том, как тестировать ваш проект, но эта книга очень полезна, когда вы начинаете на самом деле делать это: Эффективная работа с устаревшим кодом

Ответ 2

Должно существовать различие между инженерной практикой и техническим долгом. Я рассматриваю тестовую разработку и автоматическое тестирование как практику.

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

Как только мы начнем использовать практику, мы начнем выявлять технический долг. Поскольку технический долг был идентифицирован, карты технической истории были написаны и помещены на товарный запас владельцем продукта. Разработчики и тестировщики оценили всю работу с использованием технических решений XP (TDD, автоматическое тестирование, парное программирование и т.д.). Эти методы выявили хрупкость в коде через TDD, автоматические функции и тесты производительности. В частности, была выявлена ​​значительная проблема производительности с помощью автоматизированного тестирования производительности и профилирования. Долг был настолько большим, что мы оценили, что исправление займет 6 итераций. мы сообщили владельцу продукта, что если новые функции будут разработаны, они не смогут использоваться пользовательской базой, учитывая низкую производительность приложения. Учитывая, что мы должны были масштабировать приложение от нескольких сотен пользователей до 10 тысяч пользователей, владелец продукта приостанавливал технический долг по производительности очень высоко, и мы завершили технические карты в оцененных итерациях.

Примечание. Технический долг, который может быть исправлен путем рефакторинга в рамках оценки сюжетной карты, не требует технической истории. Больший технический долг будет. Для технической задолженности, которая потребует технической карты, определить влияние бизнеса и попросить владельца продукта определить приоритетность технической карты. Затем заработайте карточку. Не создавайте технический долг для инженерных практик. Оцените все, зная, что инженерная практика будет частью оценки. Не создавайте карту, чтобы модифицировать приложение с помощью автоматизированного устройства, функционального и эксплуатационного теста. Вместо этого включите работу только в карты, которые вы оцениваете, и добавьте автоматизированный тест к коду, который вы касаетесь, через карты, которые будут обработаны. Это позволит улучшить со временем приложение без остановки. Остановка добавления всех визитных карточек должна быть сохранена только для наиболее радикальной ситуации, такой как неспособность приложения выполнять или масштабировать.

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

Ответ 3

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

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

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

Конечно, YMMV, зависящий от клиента или других факторов, но имеющий статистику, которая представляет эффект технического долга в будущем, очень полезен.

Ответ 4

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

Когда вы редактируете код, вы немного убираете, как скауты, прежде чем покинуть кемпинг.

Таким образом, код, который изменяется часто, будет в лучшей форме, что хорошо для бизнеса.

Код, который никогда не изменится, не улучшится, но потом зачем ему это делать, если оно работает?

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

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

/Roger

Ответ 5

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

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

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