Почему же при таком очевидном ходе вещей руководители ничего не предпринимают? Почему они позволяют себе тратить деньги не на создание новых функций, а на оплату технических долгов снова и снова?
Для ответа на эти вопросы давайте представим себе точки зрения на эту проблему разработчиков и руководителей.
Сами создатели системы знают, что им мешает двигаться вперёд. Они каждый день видят магические числа в коде, дублирование кода, неконсистентность в макетах, отсутствие тестов, низкий уровень автоматизации и другие проблемы. Но по разным причинам стараются это игнорировать. Кто-то в силу своей некомпетентности считает такое положение вещей нормой, кто-то не хочет эскалации проблем наверх, кто-то просто хочет пилить задачи и не желает брать ответственность; причины могут быть самыми разными.
Крайне сложно объяснить человеку, который не разбирается в программировании и дизайне, почему мы в данный момент не можем позволить себе расширить нашу систему. Или почему вдруг стоимость поддержки системы стала расти. Почему нам требуется всё больше и больше времени на добавление функций, которые раньше довольно быстро добавлялись.
Попробуйте объяснить это в технических терминах, и вас попросят вернуться к работе и впредь не допускать подобных ситуаций. Если вы хотите открыть глаза на существование этой проблемы вашему руководителю, вам придётся говорить с ним с позиций его прибыли[99].
До тех, кто управляет деньгами, необходимо донести мысль, что технические долги = финансовые долги. Технические долги придётся выплачивать с процентами, причём реальными деньгами. Чем дольше мы будем тянуть с оплатой, тем выше будет выплата по долгу.