Технический долг как избыточный вес

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

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


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

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

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

Идеальным рецептом для предотвращения описанных эффектов является постоянная работа над незначительными улучшениями. В случае с избыточным весом это регулярные тренировки, кардио-нагрузки, сбалансированное питание, избегание продолжительных вредных влияний на организм алкоголя (запои по несколько дней) и нездорового питания (неделю питаться на работе печеньками). В случае с техническим долгом это включение критически важных практик в критерий готовности, постоянное точечное улучшение/рефакторинг кода, избегание продолжительных “ускорений” в разработке за счет послабления некоторых практик, анализ и проведение работ по улучшениям в процессе разработки. И да, это нелегко! Да, это требует дисциплины и самоорганизации. Но позволяет жить лучше и безопаснее.

Обсуждение (0)

Leave a Reply

Your email address will not be published. Required fields are marked *