1.9Kпросмотров
11 января 2026 г.
statsScore: 2.1K
Техдолг. Часть 2. Откуда пошел термин и почему метафора устарела Продолжу размышления про техдолг.
Что-то затянул я с этой серией — виной тому длинное путешествие по Китаю (СУАР, Тибет, центр), о котором можно почитать в другом моём канале — @apazidi_go. Этот пост — про то, откуда вообще пошёл термин “техдолг” и какой смысл в него вкладывали авторы. Легенды древних гласят, что впервые этот термин употребил Уорд Каннингем в 1992 году во время работы над финансовым софтом.
(Один из подписантов Agile Manifesto и разработчик первого wiki-движка) Раз софт был финансовым, то логично использовать и финансовую метафору, чтобы объяснить боссу необходимость рефакторинга: ▫️если начать разработку с текущего понимания требований и ситуации, это сильно ускоряет старт — примерно так же, как заёмные средства позволяют ускорить бизнес;
▫️но со временем наше понимание мира и требований уточняется, и часть решений приходится переделывать — это и есть “проценты” по кредиту;
▫️если в обычной жизни бесконечно брать кредиты и не выплачивать тело долга, то довольно быстро весь доход начнёт уходить на проценты — и никакого движения вперёд уже не будет. Чуть позже Мартин Фаулер развил эту идею и предложил свою знаменитую матрицу 2×2
(у любого уважающего себя консультанта и мыслителя есть таких матриц с десяток): ▫️ось Deliberate <> Inadvertent (осознанный <> случайный)
▫️ось Prudent <>Reckless (разумный <> безрассудный) В итоге получаются четыре квадранта:
1⃣ Deliberate / Prudent — осознанное решение: инвестируем в скорость сейчас, позже планируем работы по качеству;
2⃣ Deliberate / Reckless — знаем, что делаем неправильно, но под давлением соглашаемся, плана исправлений нет;
3⃣ Inadvertent / Prudent — случайно понимаем, что можно сделать лучше (учимся по ходу);
4⃣ Inadvertent / Reckless — хаос от незнания того, как правильно. Типичный messy code. И вот здесь, на мой взгляд, начинается самое интересное. В реальной жизни тот самый техдолг, о котором говорил Каннингем
(Deliberate / Prudent), встречается не так уж часто — я бы оценил его в 10%.
Гораздо чаще мы имеем дело с Inadvertent / Reckless — думаю, где-то в районе 50%,
оставляя по 20% на остальные квадранты. А это означает, что если продолжать метафору с кредитами,
то чаще всего мы имеем не разумное использование заёмных средств для ускорения,
а бездумный шопоголизм с десятка кредиток во время сезона распродаж. Нужно ли тогда удивляться, что в большинстве случаев возникают сложности при попытке объяснить боссу необходимость рефакторинга? Кстати, забавный момент:
у Каннингема эта метафора родилась не как инженерная практика,
а именно как лайфхак объяснения сложных вещей нетехническим людям.
(Сами инженерные практики рефакторинга существовали и без этого — например, в экстремальном программировании и TDD с его red / green / refactor) Если взглянуть на картину целиком, то получается довольно парадоксально:
пытаясь обосновать технический рефакторинг через метафору долга и кредита,
мы выглядим не как разумные менеджеры-финансисты,
а скорее как транжиры, которым нужно ещё 20–30% бюджета
на вещи, ценность которых пока не очень понятна. И именно поэтому, на мой взгляд, метафора “долга” со временем стала токсичной
и перестроила наше мышление о качестве в этом токсичном ключе. Об этом, кстати, сам Каннингем говорит в своих поздних интервью. В следующей части (надеюсь, сделаю её быстрее 🙂) —
про то, как эту проблему решают в других индустриях
и что на этот счёт говорят стандарты разработки ПО.