Демистификация технического долга: обзор 4 типов с действенными исправлениями

Демистификация технического долга: обзор 4 типов с действенными исправлениями

24 марта 2023 г.

«Технический долг» — это компромисс между быстрой доставкой новых функций и надежной системой.

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

В этой статье я расскажу…

* Четыре типа технического долга * Четыре типа кода долга * Как исправить технический долг и кодовый долг * Примеры технического долга

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

Первый тип технического долга: кодовый долг (большой)

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

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

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

Четыре типа долга по коду

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

Martin Fowler's Technical Debt quadrant

* Безрассудный & Умышленно:

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

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

* Безрассудный & Неумышленный долг:

Этот «Безрассудный & Подход «Непреднамеренный долг» к техническому долгу относится к «вещам, которые вы должны были знать как разработчик, но не знали». Понятно, что отдельный разработчик не знает всего в своей области. Тем не менее, команда разработчиков должна хорошо понимать свою предметную область, ее стандарты кодирования и лучшие практики. Команда, постоянно совершенствующая свои знания в отрасли, может избежать накопления таких долгов.

Пример. Команда разработчиков JavaScript не применяет свои знания о хороших шаблонах проектирования кода. Приложение кишит ошибками.

* Prudent & Неумышленный долг:

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

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

* Prudent & Умышленный долг:

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

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

Как исправить технический долг в кодовой базе

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

* Отслеживайте проблемы высокого качества и приоритизируйте их

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

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

Use Stepsize to fix and reduce technical debt

* Выделяйте 15–20 % каждого спринта на технический долг

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

Detect tech debt and code debt and reduce it with tools

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

Технический долг может замедлить процессы разработки, затруднив выпуск новых функций. Чтобы поддерживать скорость разработки новых функций по мере роста вашей кодовой базы, вы должны выделять 15–20 % ресурсов на устранение технического долга в каждом спринте.

* Автоматизировать мониторинг технического долга

Квадрант технического долга показал, что компания Prudent & Непреднамеренная задолженность» все еще может произойти. Однако мы можем обнаружить три других типа долга по коду, внедрив метрики для их измерения.

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

Второй тип технического долга: документация

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

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

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

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

Третий тип технического долга: безопасность

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

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

Четвертый тип технического долга: инженерные инструменты

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

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

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

Подведение итогов

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

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


Также опубликовано здесь


Оригинал
PREVIOUS ARTICLE
NEXT ARTICLE