Upload
vitebsk-miniq
View
102
Download
0
Embed Size (px)
Citation preview
3
1. влияет на время, стоимость и качество проекта
2. практически неизбежен для любого проекта
3. каждый участник проекта должен знать, что это такое
Почему именно технический долг?
4
Впервые использовал
метафору «технический
долг» в 1992 году, чтобы
объяснить финансистам,
почему нужно внести
изменения в архитектуру
приложения.
Уорд Каннингем
By Carrigg Photography for the Wikimedia Foundation –
Own work, CC BY-SA 3.0,
https://commons.wikimedia.org/w/index.php?curid=17697618
5
Источники технического долга
Код, над которым вы работаете, должен отображать
ваше текущее понимание того, как должна работать
ваша программа.
Главная идея метафоры
6
это ресурсы, которые вам необходимы для того, чтобы
привести код в состояние, соответствующее вашему
текущему пониманию.
Технический долг –
7
• необходимость подстраивать архитектуру приложения
под текущее понимание
Источники технического долга
8
• более детальное изучайте предметную область
• содержите код в чистоте
• пишите техническую документация
• просматривайте чужой код
• практикуйте техники, позволяющие как можно скорее выявить
проблемы и повысить качество кода (парное программирование)
Как минимизировать такой долг?
9
Иногда вам может
понадобиться такое
решение, которое не
является устойчивым в
долгосрочной перспективе,
но приносит
краткосрочную выгоду.
Дядя Боб (Роберт Мартин)
By Tim-bezhashvyly - Own work, CC BY-SA 4.0,
https://commons.wikimedia.org/w/index.php?curid=38703621
11
• необходимость подстраивать архитектуру приложения
под текущее понимание
• временные решения, приносящие краткосрочные выгоды
Источники технического долга
12
• не берите долг, если это возможно
• полученная выгода должна превышать расходы на устранение
долга
• возвращайте долги как можно скорее
• не устраивайте в коде беспорядок
Как решать такие проблемы?
15
Технический долг – это
метафора, поэтому
реальный вопрос
заключается в том, полезна
ли метафора долга для
размышления о том, как
решать проблемы с
дизайном кода, и как
донести эти размышления
до других.
Мартин Фаулер
By Webysther Nunes - Own work, CC BY-SA 4.0,
https://commons.wikimedia.org/w/index.php?curid=39594469
16
Квадрант технического долга
Необдуманный
(reckless)
Обдуманный
(prudent)
У нас нет времени на дизайн
Умышленный (deliberate)
Неумышленный (inadvertent)
Нам нужно срочно выпустить релиз,
затраты на исправление долга
окупятся с лихвой
Многоуровневая архитектура?
Не, не слышали
Теперь мы знаем,
как мы это должны были делать
17
• дублирование кода
• низкое покрытие тестами
• отсутствие или низкое качество комментариев и документации к
коду
• чрезмерная сложность кода
• нарушение стандартов, несоблюдение стиля кода
• код с запашком
• код с долгом достался вам по наследству
Другие источники технического долга
18
• необходимость подстраивать архитектуру приложения
под текущее понимание
• временные решения, приносящие краткосрочные выгоды
• проблемы с качеством кода
Источники технического долга
19
Работа с техническим долгом
• закладывайте время на работу с техническим долгом
• анализируйте ваш технический долг
• устанавливайте рабочие соглашения в команде
• выделяйте время на образование
На уровне релиза (долгосрочная перспектива)
20
Работа с техническим долгом
• поддерживайте высокий уровень покрытия тестами
• контролируйте накладные
расходы, вызванные техническим долгом
• насколько вы удовлетворены от работы с вашим кодом?
• учитывайте зависимости между разными составляющими
технического долга
• проводите ретроспективы
• создавайте истории по работе с техническим долгом
• используйте непрерывную интеграцию
На уровне итерации (среднесрочная перспектива)
21
Работа с техническим долгом
• просматривайте чужой код
• практикуйте парное программирование
• придерживайтесь стандартов кода
• сделайте технический долг видимым
На уровне истории пользователя (короткосрочная перспектива)
22
Какие еще могут быть долги?
• по качеству (quality debt)
• по функциональности (feature debt)
• пользовательского взаимодействия (user experience debt)
• навыков(skills debt)
Помимо технического долга выделяют также долги:
23
• технический долг может быть нашим союзником, если нам нужно
выиграть время
• лучший вариант - избегать долгов, однако вам это вряд ли удастся
• технический долг снижает продуктивность, поэтому старайтесь
избавиться от него как можно быстрее
• анализируйте технический долг и выстраивайте работу с ним на
разных уровнях
• объясните клиенту, почему важно выделять время на работу с
техническим долгом
• не путайте технический долг с другими видами долгов
Подведем итоги
24
Информация по теме
• http://wiki.c2.com/?WardExplainsDebtMetaphor
• https://martinfowler.com/bliki/TechnicalDebt.html
• https://martinfowler.com/bliki/TechnicalDebtQuadrant.html
• https://sites.google.com/site/unclebobconsultingllc/a-mess-is-not-a-technical-debt
• https://www.agilealliance.org/introduction-to-the-technical-debt-concept/
• https://www.agilealliance.org/project-management-and-technical-debt/