Что такое технический долг
easy

Что такое технический долг

Фраза из лексикона сильных профессионалов

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

Представьте стартап: например, приложение отслеживает ваш режим дня и расставляет задачи оптимальным образом. Разрабатывать такое приложение дорого, нужны деньги. Деньги не берутся из воздуха — их дают инвесторы. Инвесторы хотят, чтобы деньги вернулись как можно скорее, а для этого нужно как можно скорее запускать приложение. 

Из-за скорости команда разработчиков принимает такие решения:

  • Документацию на код напишут в самом простом виде, часть кода вообще не задокументирована.
  • API будет работать только с одним сервером и запросы будут содержать фиксированное число полей.
  • Часть автоматических тестов существенно упрощены, части нет вообще.
  • Фронтенд- и бэкенд-разработчики пишут код одновременно и  независимо друг от друга.

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

Что такое технический долг

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

Например, сегодня мы за пять минут «захардкодили» API и не предусмотрели его расширяемость. Через год API всё же придется расширить. Тогда разработчикам придется углубляться в старинный код, разбираться в старых кишках. А помните, что они ещё и не задокументированы? В общем, это надолго. 

Откуда ещё появляется технический долг

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

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

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

Что делать с техдолгом

Технический долг нужно возвращать с процентами. 

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

Получите ИТ-профессию
В «Яндекс Практикуме» можно стать разработчиком, тестировщиком, аналитиком и менеджером цифровых продуктов. Первая часть обучения всегда бесплатная, чтобы попробовать и найти то, что вам по душе. Дальше — программы трудоустройства.
Начать карьеру в ИТ
Получите ИТ-профессию Получите ИТ-профессию Получите ИТ-профессию Получите ИТ-профессию
Еще по теме
Кодирование и шифрование — в чём разница?
Кодирование и шифрование — в чём разница?

Одно делается для удобства, а другое — для защиты.

easy
Что такое куча в программировании
Что такое куча

Это зависит от содержимого.

medium
Использовать чужой код стыдно?

Стыдно — когда видно

easy
Что такое демоны и службы в программировании
Что такое демоны и службы в программировании

Это маленькие программы, которые работают в фоновом режиме

easy
Откуда на сайтах появляется реклама, которой там не было
Откуда на сайтах появляется реклама, которой там не было

Всё дело в незащищённом HTTP-трафике

easy
Что такое плавающая ошибка
Что такое плавающая ошибка

И почему она бесит каждого тестировщика

easy
Как хранить что-то в браузере, только пока открыта вкладка
Как хранить что-то в браузере, только пока открыта вкладка

Короткий рассказ про sessionStorage

easy
Что такое геттеры и сеттеры в программировании
Что такое геттеры и сеттеры в программировании

Управление объектом или переменной через посредника

easy
Чем отличается авторизация от аутентификации
Чем отличается авторизация от аутентификации

Как усложнить жизнь злоумышленникам.

medium
easy