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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Текст:

Миха­ил Полянин

Редак­тор:

Мак­сим Ильяхов

Худож­ник:

Даня Бер­ков­ский

Кор­рек­тор:

Ири­на Михеева

Вёрст­ка:

Ники­та Кучеров

Соц­се­ти:

Олег Веш­кур­цев