Есть понятие технического долга — это когда мы когда-то давно приняли компромиссные решения в разработке, а теперь у нас из-за этого проблемы.
Представьте стартап: например, приложение отслеживает ваш режим дня и расставляет задачи оптимальным образом. Разрабатывать такое приложение дорого, нужны деньги. Деньги не берутся из воздуха — их дают инвесторы. Инвесторы хотят, чтобы деньги вернулись как можно скорее, а для этого нужно как можно скорее запускать приложение.
Из-за скорости команда разработчиков принимает такие решения:
- Документацию на код напишут в самом простом виде, часть кода вообще не задокументирована.
- API будет работать только с одним сервером и запросы будут содержать фиксированное число полей.
- Часть автоматических тестов существенно упрощены, части нет вообще.
- Фронтенд- и бэкенд-разработчики пишут код одновременно и независимо друг от друга.
Эти решения — предвестники технического долга. Сегодня благодаря им приложение выйдет быстро, а через год разработка будет существенно буксовать, если этот технический долг не вернуть.
Что такое технический долг
Технический долг — это общее название для тех задач, которые отложили ради скорости. Слово «долг» означает, что разработчикам придётся в будущем что-то делать с нынешним кодом и исправлять то, что сделано на скорую руку.
Например, сегодня мы за пять минут «захардкодили» API и не предусмотрели его расширяемость. Через год API всё же придется расширить. Тогда разработчикам придется углубляться в старинный код, разбираться в старых кишках. А помните, что они ещё и не задокументированы? В общем, это надолго.
Откуда ещё появляется технический долг
В нашем примере весь технический долг появился из-за спешки. Это самая частая причина появления долга. Сделать софт из хардкода и палок всегда быстрее, чем заложить нормальный фундамент.
Ещё технический долг появляется, когда в команде не делают код-ревью и не проверяют качество и стиль программирования. Это может привести к ошибкам, на которое придётся тратить время в будущем.
Также долг может появиться просто из-за отсутствия квалификации и опыта у программистов. Например, вместо того чтобы взять готовое решение и использовать стандартную библиотеку, разработчик пишет свою систему аутентификации. Но из-за незнания нюансов в такой системе могут появиться ошибки, из-за которых придётся всё переписывать.
Что делать с техдолгом
Технический долг нужно возвращать с процентами.
Самый рабочий и продуктивный подход — закладывать время в разработке на исправление и доработку того, что было брошено. Чем больше технического долга есть в коде, тем дольше и сложнее выходит каждая новая версия программы. Иногда такого долга становится так много, что приходится создавать новую версию практически с нуля, учитывая все прошлые ошибки.