Любой обходной путь, который предпринимает технологическая компания, часто оформляется в виде займа. Это суть концепции «технического долга», которую программист Уорд Каннингем ввел более тридцати лет назад, и это один из самых умных финансовых терминов, заимствованных из мира программного обеспечения.
Природа технического долга
Автор отмечает, что в предыдущей колонке он утверждал, что компании продают продукты до того, как успевают их создать. Эти «обходные пути» остаются в системе после заключения сделки, продолжая начислять проценты до тех пор, пока невозможно будет произвести выплаты. Это вторая из трех колонок о ловушке краткосрочности: как одна привычка — выбор быстрого решения вместо долгосрочного — проникает в бизнес и достигает клиентов, которых нельзя потерять.
Технический долг представляет собой стоимость выбора быстрого исправления вместо правильного: это код, написанный ради соблюдения сроков демонстрации, архитектура, которую никто не пересматривал после того, как она «заработала», система, которая так и не была обновлена из-за ухода специалистов, понимавших ее, или интеграция, прикрученная вместо того, чтобы быть спроектированной изначально, а также культура, поощряющая «просто сделать что-нибудь быстро».
Последствия накопления долга
Каждый такой обходной путь экономит время сегодня, но накладывает налоговое бремя на каждую работу, которая с ним связана завтра. Этот налог реален, даже когда его не видно, поскольку он редко отражается в статьях расходов. Он проявляется как постепенное усложнение всего. Это единственный долг, который можно не фиксировать годами, пока он не начнет влиять на все остальные аспекты.
Система, ставшая запутанной, сама себя подпитывает: следующее изменение также выполняется быстро и небрежно, потому что корректное исправление требует сначала распутывания предыдущего беспорядка. Сложность порождает еще большую сложность, и каждая новая функция требует добавления очередного «хака» поверх старого.
Инженеры, способные устранить проблемы, слишком заняты поддержанием работоспособности хрупкой системы, и у них почти не остается времени на развитие бизнеса. Именно это и является кумулятивным эффектом: долг не просто растет, он снижает способность компании его погасить.
Как распознать технический долг
Симптомы технического долга можно заметить задолго до того, как кто-либо назовет его этим словом. Например, расходы, которые должны уменьшаться с ростом масштаба, начинают расти. Простые функции требуют неправдоподобно много времени. Выпуск новых продуктов превращается из рутинного процесса в нечто, которого люди боятся. Кроме того, уходят хорошие инженеры, поскольку никто не любит тратить дни на исправление чужих обходных путей, унося с собой единственное знание о том, почему система устроена именно так, что усугубляет долг.
Примеры из Южной Африки
В Южной Африке существует богатый набор примеров этой проблемы: банки используют одни из самых продвинутых цифровых сервисов, построенных поверх основных систем, созданных на языке Cobol десятилетия назад, что демонстрирует возможность обслуживать долг в течение очень долгого времени, но ценой огромных и постоянных затрат. Государственный сектор также является музеем этой болезни: системы не могут взаимодействовать друг с другом, бюджеты выделяются на создание, но не на обслуживание, и каждый раз повторяется один и тот же урок — самая дешевая заявка влечет за собой самый дорогой долг.
Ситуация с биллингом телекоммуникационных компаний считается одним из самых «долговых» программных обеспечений в мире, поскольку новые способы выставления счетов постоянно «прикручивались» к системе, которая изначально не была предназначена для продажи таких услуг.
Проблема руководства, а не инженерии
Технический долг — это проблема руководства, маскирующаяся под инженерную задачу. Он накапливается из-за стимулов, которые существуют выше инженеров, решающих проблему. Поскольку долг невидим в финансовой отчетности, его легко отложить. Руководитель, который откладывает решение, часто получает повышение до того, как приходит счет. А тот, кто настаивает на его погашении, вынужден защищать тихий квартал, не имея ничего блестящего для демонстрации.
В результате, принятие на себя долга вознаграждается, тогда как его погашение приводит к обвинениям в чрезмерной медлительности. Эта асимметрия, а не нехватка квалифицированных инженеров, является причиной такого большого объема этого долга. Тем не менее, некоторые виды долга являются разумными: сознательный обходной путь для проверки интереса рынка — это хороший бизнес, поскольку идеальное построение с самого начала было бы пустой тратой. Не весь долг следует погашать, подобно тому, как не весь финансовый долг нуждается в закрытии. Важно уметь различать.
Проблема заключается не в самом долге, а в неуправляемом долге — том, который берется без принятия решения, за которым никто не следит, и который обслуживается случайно. Разумный долг — это осознанный выбор, который можно увидеть в списке с планом погашения. Большинство технического долга — это остатки сотен мелких панических решений, которые никто не записал.
Способы устранения проблемы
Решением не является героическое полное переписывание кода, так как это часто лишь рефинансирует долг на худших условиях. Вместо этого требуется кропотливая дисциплина, заключающаяся в том, чтобы рассматривать качество как постоянное обязательство, а не как временный этап. Это включает в себя выделение реальных ресурсов на рефакторинг и обновления в каждом цикле, обеспечение видимости стоимости долга для лиц, управляющих бюджетами, и отказ от обходных путей на этапе продаж, где, как отмечалось ранее, рождается большая часть этого долга.
Защита долгосрочных интересов перед лицом квартальных целей — это задача руководства, поскольку никто другой в компании не обязан этим заниматься. Иногда дисциплина заключается в отказе. Когда становится очевидно, что клиент хочет только быстрого исправления и обвинит компанию в беспорядке, оставленном этими «хаками», правильный ответ — вежливый отказ. Бизнес — это партнерство. Если одна сторона стремится получить преимущество над другой, сделка не стоит того.
И вот в чем загвоздка: окончательный счет за технический долг редко оплачивает только компания. Его оплачивает клиент — продукт, который медленно улучшается, легко ломается и вызывает недоверие. Клиенты не присылают напоминаний, как кредиторы; они просто тихо уходят. И именно об этом пойдет речь в следующей части серии.


