
Разбор · Опубликовали 04.10.2026
Старый код можно отдать агентам: как разобрать технический долг без переписывания
Что из технического долга можно отдать ИИ-агентам, без чего не начинать и как не дать долгу вернуться. На кейсах Яндекса, Авито, Amazon, Airbnb и нашей машины агентов.
Текст написан инженером, который ведёт vibecoding.ru, вместе с машиной агентов · числа проверены 4 октября 2026
Продукту пять–десять лет, и команда просит: «дайте время, перепишем с нуля». Бизнес время не даёт, долг растёт, а простые правки тянутся неделями.
ИИ-агенты дают третий путь: гасить долг по одному правилу, пока продукт работает. Так мы гасим долг в коде этого сайта. Его пишет машина агентов, и в нём уже 391 тысяча строк.
1. Технический долг — это проценты, которые команда платит временем каждый месяц.
Что такое технический долг, если говорить языком денег? Метафору придумал программист Уорд Каннингем в 1992 году. Выпустить сырой код, по его словам, всё равно что взять в долг: немного долга ускоряет работу, если его быстро вернуть.
Опасен не сам долг, а неуплата. Каждая минута работы с «почти правильным» кодом, пишет Каннингем, считается процентами по этому долгу.
По опросу Stripe и Harris Poll 2018 года разработчики оценивают, что из 41 часа рабочей недели 13,5 часа уходят на технический долг. Это треть времени команды, которая идёт не на новое.
Руководители видят то же в бюджете. В опросе McKinsey 2020 года 50 ИТ-директоров крупных компаний сказали, что 10–20 % бюджета на новые продукты уходит на разбор последствий долга.
Как долг выглядит из кабинета руководителя
Сигналы и ответы собраны из кейсов этой статьи и журналов машины vibecoding.ru за июль–сентябрь 2026.
Почему такой долг не гасят годами? Глава Amazon Энди Джасси объяснил это так: обновление старого кода не даёт новых возможностей и не двигает продукт вперёд, поэтому такую работу «либо боятся, либо откладывают». А когда процентов набегает слишком много, команда приходит с предложением переписать всё с нуля.
2. Переписать с нуля — самый рискованный способ отдать долг, и агенты риск не снимают.
Почему бы не переписать, раз всё так плохо? Джоэл Спольски ответил на это ещё в 2000 году. Он назвал переписывание с нуля худшей стратегической ошибкой, которую может сделать компания, выпускающая программы.
Его пример — Netscape. Компания взялась переписывать браузер, и к апрелю 2000 года у неё почти три года не было крупного выпуска.
Главная потеря при этом не время. «Выбрасывая код, вы выбрасываете годы исправленных ошибок», — пишет Спольски. Многие странные строки в старом коде когда-то чинили чью-то жалобу.
Два способа отдать долг
Колонку «переписать» мы собрали по Джоэлу Спольски (6 апреля 2000) и Мартину Фаулеру (редакция 22 августа 2024), колонку «по кусочку» — по кейсам главы 3 и журналам нашей машины.
С агентами переписывание кажется дешёвым, ведь код теперь пишется за часы. Но дорого не набрать код, а повторить поведение старой системы. Агент перепишет быстро и так же быстро потеряет те же исправления.
Мартин Фаулер, автор книги «Рефакторинг», видел ту же ловушку много раз. План «построим то же самое заново» чаще всего сгорает: замена идёт долго, а пользователи не ждут. Его рецепт — растить новое по краям старого и переносить поведение по кусочку.
Мы так перевели страницы каталога на общий шаблон. Страница, которую агент собрал руками, потеряла 14 элементов из 46, что стояли на образцовой. Писать шаблон с нуля мы отказались: вынули его из образцовой страницы, а остальные переезжали, когда до них доходила задача.
Страниц каталога на общем шаблоне: переезд без остановки сайта
9
21 августа
33
1 сентября
74
15 сентября
83
4 октября
Счёт git по основной ветке vibecoding.ru на даты; шаблон вынут из образцовой страницы 20 августа 2026. Первая переехавшая страница похудела примерно с 700 до 350 строк кода.
3. Агентам отдают скучную часть долга — ту, которую люди годами откладывали.
Что тогда делать с долгом? Отдать агентам ту его часть, которую никто не хочет делать руками: обновления, переезды, однотипные правки по всему коду.
В Яндекс Браузере код переводили со старого языка на новый пять лет и к 2025 году переписали чуть больше половины. С моделью за два месяца убрали 97 500 строк старого кода. Ускорение авторы с учётом часов людей оценили в 2,5 раза.
Amazon, по своей оценке, сократил перевод одного приложения на новую версию Java с 50 человеко-дней до нескольких часов. Airbnb перевела 3,5 тысячи тестовых файлов за 6 недель вместо полутора лет по оценке.
Пять переездов старого кода с моделями
Блог Яндекса на Хабре, 5 мая 2026; блог Авито на Хабре, 22 сентября 2026; пост Энди Джасси в LinkedIn, 22 августа 2024, числа — оценки компании; блог инженеров Airbnb, 13 марта 2025; статья инженеров Google на arXiv, 12 января 2025.
У всех историй общее: работа механическая, а правильность проверяет машина. Яндекс прямо пишет, когда подход работает. Долг должен быть большим, монотонным и с понятными правилами замены.
Где проверки нет, агент выдаёт правдоподобное. В первой попытке Авито получил код, который собирался и проходил тесты, но не работал в реальных сценариях. Новое хранилище пришлось сверять со старым на живых запросах, байт в байт.
4. Сначала страховка — тесты, которые фиксируют, как система работает сейчас.
С чего начинать, если тестов нет? С тестов. Майкл Фезерс, автор главной книги о работе со старым кодом, ещё в 2002 году писал, что старый код отличается от нового не возрастом, а отсутствием тестов.
Такие тесты пишут на то, как код работает сейчас, а не как «должно быть». Странное поведение тоже фиксируют: оно может оказаться чьим-то исправлением. Первую неделю агент только пишет эти тесты, а человек их читает и принимает.
Файлов с тестами в коде vibecoding.ru
92
1 июля
190
1 августа
279
1 сентября
479
1 октября
497
4 октября
Файлы *.test.ts и *.test.tsx в основной ветке на первое число месяца и на 4 октября 2026, счёт git. На каждом пуше гоняются 2 685 тестов — сноска «Качество» на /open.
У нас тесты пишет агент вместе с кодом. За три месяца файлов с тестами стало 497 вместо 92, и только поэтому машине можно отдавать правки по всему сайту.
Тест защищает только то, что проверяет. 24 сентября функция после слияния стала отдавать поле, которого не знал её валидатор, а тесты были зелёными. Часть страниц новостей отдавала ошибку около 20 минут, проверку дописали в тот же день.
5. Долг гасят по одному правилу за раз, а храповик не даёт ему вернуться.
Как гасить, чтобы долг не вернулся через месяц? Мы берём одно правило, например «цвет ссылки задаёт только общий шаблон». Машина считает нарушения по всему коду и записывает число в проверку.
Дальше проверка работает как храповик — механизм, который крутится только в одну сторону. Нарушений стало больше, и сборка красная. Стало меньше, и она тоже красная, пока число в проверке не опустят.
Наш долг, погашенный волной за один день
История изменений vibecoding.ru и журналы решений; «сейчас» — проверки с нулевым допуском на 4 октября 2026.
Волна — не слепая замена по всему коду, её мы запретили. «Ты» на «вы» меняли шесть агентов, каждый в своей папке. В базе новостей агент переписал 579 историй, а 38 отказался трогать: там «ты» стояло в цитатах людей.
И первый счёт долга бывает занижен вдвое. Поиск по одному признаку нашёл в коде 430 мест с «ты», а настоящих оказалось 1 048.
Долг, где нужен вкус или решение, гасят по касанию. Его замораживают числом и чинят, когда задача и так заходит в этот файл.
Пунктуацию в текстах карточек мы сознательно не стали чинить валом: каждый текст требует решения, а не замены. С 22 августа по 26 сентября смесь тире там ушла с 88 мест до 62 — медленно, но только вниз.
Храповик в работе: ссылки, оформленные мимо общего шаблона
153
15 августа
150
16 августа
142
18 августа
135
24 августа
128
5 сентября
Порог проверки в истории git vibecoding.ru: шесть шагов вниз за три недели, ни одного вверх. С 5 сентября держится 128, на 4 октября столько же.
6. Агент делает новый долг быстрее человека, поэтому правку принимает не автор.
Есть ли у агентов обратная сторона? Есть, и её надо видеть до старта. Агент учится на соседнем коде: если вокруг старый стиль, он размножит именно его.
Поэтому наши правила записаны заранее, и их почти столько же, сколько кода: 387 тысяч строк документации против 391 тысячи строк кода.
Записать мало. 17 июля агент собрал экран по соседним старым экранам, а не по правилу. Вывод того дня: правило живёт там, где падает проверка, а не там, где записано.
На долге это важнее всего, потому что правка «по всему коду» задевает сотни файлов и глазами её не прочесть. Её читают тесты и храповики, рискованную — ещё и другая модель, а решение влить принимает инженер.
Как агенты ошибались на больших правках и какое правило из этого вышло
17.07
Агент собрал новый экран по соседним старым экранам, мимо записанного правила. В тот же день правило с машинной проверкой другая сессия исполнила без подсказки.
19.07
При переезде документации, около 770 перемещений, автоматика сопоставления старых и новых папок ошиблась, и 698 файлов получили неправильные пути. Содержимое откатили без потери переездов, правило сопоставления ужесточили.
31.07
Одно поле новости перечислялось руками в четырёх местах и терялось на двух путях из четырёх. Свели в одно место, тест не даёт вернуть ручное перечисление.
02.08
Агент переименовал раздел одной заменой по всему репозиторию и задел почти полсотни файлов вместо двадцати, в том числе модули других разделов. Теперь замена — только по списку проверенных файлов.
Журналы машины vibecoding.ru, записи 17.07, 19.07, 31.07 и 02.08.2026.
7. План на первый месяц: карта горячих мест, страховка, одно правило в неделю.
С чего начать в своей компании? С карты долга, а не с переписывания. Список пишется словами бизнеса: где правка идёт дольше недели, что страшно обновлять, где чинят одно и ломают другое.
Долг удобно считать в часах. Автор Инфостарта Нинель Щербакова предлагает сравнить типовую правку с долгом и без него. В её условном примере это 40 часов против 8 — 64 000 ₽ лишних на каждой задаче при ставке 2 000 ₽ в час.
Первый месяц разбора долга с агентами
Мерить успех стоит временем, а не строками. Запишите до старта, сколько дней идёт простая правка и сколько правок возвращается на доработку, и сравните через месяц.
Если вести такую работу некому, её можно отдать. Подписка на агентную разработку стоит от 250 тысяч в месяц за один проект: правки идут в вашу ветку в вашем репозитории, принимает их ваш разработчик. Первые недели уходят на настройку машины под ваш код, и в это время мы работаем рядом с вашей командой.
Что и как мы проверяли
| Факт | Что известно | Проверено |
|---|---|---|
| Amazon, апгрейд Java | Пост Энди Джасси в LinkedIn от 22 августа 2024. Обычно 50 человеко-дней на приложение против нескольких часов; больше половины боевых систем на Java меньше чем за полгода; 79 % автоматически подготовленных изменений приняты без доработок. Это оценки компании с косвенной методикой, а анонс AWS 28 ноября 2023 называл 2–3 дня на приложение | 2026-10-04 |
| Airbnb, переезд тестов | Блог инженеров Airbnb от 13 марта 2025. Почти 3 500 файлов, оценка руками 1,5 года, вся миграция заняла 6 недель. За первые 4 часа ушли 75 % файлов, после четырёх дней докрутки 97 %, последние 3 % доделали руками за неделю | 2026-10-04 |
| McKinsey, бюджет на долг | Статья «Tech debt: Reclaiming tech equity», октябрь 2020. Опрос июля 2020 года, 50 ИТ-директоров финансовых и технологических компаний с выручкой больше $1 млрд. Доля 10–20 % бюджета на новые продукты — их собственная оценка | 2026-10-04 |
| Google, миграции с моделями | Статья инженеров Google на arXiv от 12 января 2025. Переход с JUnit 3 на JUnit 4 занял 3 месяца, 5 359 файлов и больше 149 тысяч строк. Узким местом стала скорость ревью людьми | 2026-10-04 |
| Stripe, время на долг | Отчёт The Developer Coefficient, сентябрь 2018. Опрос Harris Poll, больше тысячи разработчиков и тысячи руководителей в пяти странах. 13,5 часа в неделю на технический долг — средняя оценка опрошенных, а долю 33 % мы посчитали сами от недели в 41,1 часа | 2026-10-04 |
| Наши числа | Код и проверки репозитория vibecoding.ru, счёт git 4 октября 2026. Файлы тестов считаются в основной ветке на первое число месяца, пороги храповиков берутся из файлов проверок, строки кода и документации взяты со страницы /open | 2026-10-04 |
8. Частые вопросы
Что такое технический долг простыми словами?+
Это цена быстрых решений, которую платят потом. Код написали «пока так», и каждая следующая правка рядом с ним идёт дольше. Пока долг не погашен, команда платит проценты своим временем.
Откуда берётся технический долг?+
Из сроков, «временных» решений, которые стали постоянными, ушедших людей, чьи правила жили только в их головах, тестов «на потом» и библиотек, которые давно не обновляли. Долг копится и без ошибок команды: требования меняются, а код остаётся прежним.
Рефакторинг — это что и чем он отличается от переписывания?+
Рефакторинг меняет устройство кода и не меняет того, что код делает для пользователя. Он идёт маленькими шагами, и каждый шаг проверяют тесты. Переписывание строит новую систему вместо старой, и польза от него появляется только в конце.
Сколько времени отдавать на технический долг?+
Мы не держим под долг отдельное время. Механические правила агент гасит волной за один день. Остальное гасится по касанию: задача, которая и так заходит в файл с долгом, заодно чистит его, и порог в проверке опускается.
Можно ли отдать агенту код без тестов?+
Можно, но первой задачей должны стать тесты на то, как код работает сейчас. Без них агент правит вслепую, а о поломке вы узнаёте от клиента.
Как правильно: «техдолг» или «технический долг»?+
Оба варианта правильные, «техдолг» разработчики говорят для краткости. В поиске чаще пишут полностью. «Технический долг» ищут 1 312 раз в месяц, «техдолг» — 173 (Wordstat, 4 октября 2026).
Всё ли из старого кода можно отдать агенту?+
Нет. В научной работе 2026 года агент переносил настоящую ERP-систему с Visual Basic 6 на C#. Простые функции совпали со старым поведением на 92 %, сложные — только на 47 %. Сложные места остаются за людьми, агент там готовит черновик.
А переписать с агентами всё-таки можно?+
Иногда, если старое поведение целиком описано тестами. В июле 2026 года Anthropic рассказала, как среду Bun перенесли на другой язык: миллион строк меньше чем за две недели, все старые тесты зелёные, 19 ошибок нашлись уже после слияния. Без такой страховки переписывание повторяет историю Netscape.
С чего начать прямо сейчас?+
Пройти тест для руководителя: десять вопросов, уровень отдела и три шага на неделю. Разобрать результат можно на звонке, 30 минут, бесплатно.
Источники
- Уорд Каннингем, «The WyCash Portfolio Management System», доклад OOPSLA 1992 · c2.com — первоисточник
- Джоэл Спольски, «Things You Should Never Do, Part I» · Joel on Software (6 апреля 2000) — авторский блог
- Мартин Фаулер, «Strangler Fig» · martinfowler.com (редакция 22 августа 2024) — авторский блог
- Майкл Фезерс, «Working Effectively with Legacy Code», статья · Object Mentor (9 апреля 2002) — первоисточник
- Майкл Фезерс, «Characterization Testing» · блог автора (8 августа 2016) — авторский блог
- Андрей Сикерин и Елизавета Мазулова: перевод Яндекс Браузера с Objective-C на Swift с LLM · блог Яндекса на Хабре (5 мая 2026) — инженерный блог
- Александр Моргунов: переезд хранилища мессенджера Авито с MongoDB на Cassandra с ИИ-агентами · блог AvitoTech на Хабре (22 сентября 2026) — инженерный блог
- Нинель Щербакова, «Технический долг в деньгах» · Инфостарт (1 октября 2026) — практики
- Миграция кода с ИИ: перенос Bun с Zig на Rust · блог Claude (16 июля 2026) — блог вендора
- Alves, Politowski, Montandon: агент переносит ERP-систему с Visual Basic 6 на C# · arXiv 2608.28972 (29 августа 2026) — научная статья
- Tech debt: Reclaiming tech equity · McKinsey (октябрь 2020) — опрос
- Энди Джасси о переводе приложений Amazon на Java 17 с Amazon Q Developer · LinkedIn (22 августа 2024) — заявление компании
- Accelerating Large-Scale Test Migration with LLMs · блог инженеров Airbnb (13 марта 2025) — инженерный блог
- How is Google using AI for internal code migrations? · arXiv 2501.06972 (12 января 2025) — научная статья
- The Developer Coefficient · Stripe и Harris Poll (сентябрь 2018) — опрос
- Частоты запросов «технический долг», «техдолг», «причины технического долга», «рефакторинг кода» · Wordstat, регион Россия (4 октября 2026) — замер спроса
- Журналы и проверки машины vibecoding.ru, записи июля–сентября 2026; открытые цифры машины на /open — наш замер
Запомнить
1. Не переписывайте с нуля: старый код хранит годы исправленных ошибок.
2. Агентам отдают механическую часть долга, где правильность проверяет машина.
3. Первая задача — тесты на то, как система работает сейчас.
4. Одно правило за раз. Механическое гасят волной, остальное по касанию, и каждое погашенное правило закрывает храповик.
5. Правку агента принимает не автор. Не знаете, с чего начать, пройдите тест для руководителя.