От технического долга к когнитивному долгу и долгу намерения
Москвоский август упорно притворяется октябрем, мы замерзаем, но сегодня, в субботней рубрике #сережазаваспочитал изучаем саммари прекрасной, на наш вкус
статьи, которая смотрит на ИИ—PDLC истерию в корпорациях под достаточно свежим угло.
Генеративный ИИ резко ускоряет разработку, но вместе с этим меняет профиль рисков.
Привычный технический долг - плохая структура кода, архитектурные компромиссы, сложность изменений - остаётся важным, но ИИ всё лучше помогает с рефакторингом, тестами и ревью. На первый план могут выходить два менее заметных вида долга:
когнитивный долг и
долг замысла.
Автор предлагает смотреть на программную систему как на три слоя:
1. Цели и намерение: требования, ограничения и причины решений.
2. Код и структура: архитектура, зависимости и реализация.
3. Общее понимание: ментальные модели команды о том, как система устроена и как её безопасно менять.
Технический долг живёт в коде и ограничивает способность системы меняться. Когнитивный долг живёт в людях и возникает, когда общее понимание размывается быстрее, чем восстанавливается. Долг замысла живёт в артефактах и появляется, когда цели, ограничения и обоснования решений не зафиксированы, устарели или существуют только в головах отдельных людей.
ИИ способен ускорять накопление двух последних видов долга. Когда разработчик пишет код сам, он по дороге строит хотя бы частичную модель системы. Когда код генерирует ИИ, можно принять работающий результат, не сформировав такого же понимания. Возникает «накопление незнания»: код работает, а команда всё хуже понимает, почему и что произойдёт после следующего изменения. Автор связывает это с «когнитивной капитуляцией» - принятием результатов ИИ при минимальной проверке. В отличие от обычной когнитивной разгрузки здесь человек перестаёт полноценно рассуждать о системе.
Признаки когнитивного долга: люди боятся менять систему, изменения дают неожиданные эффекты, онбординг остаётся медленным даже при документации, команда теряет понимание того, кто что знает, а критическое знание концентрируется у одного-двух человек. Снижать его помогают code review, парное программирование, walkthrough систем, ретроспективы, постмортемы и передача знаний. Общий принцип - делать неявное знание явным в процессе работы.
Долг замысла особенно опасен в мире агентов. И людям, и ИИ мало знать, что система делает сейчас; им нужно понимать, для чего она существует, какие ограничения важны и почему решения были приняты именно так. Без этого агенты могут выдавать технически корректные изменения, которые промахиваются мимо цели. Поэтому нужны «живые» артефакты намерения: спецификации, тесты, ADR, планы, доменные модели, критерии приёмки, инструкции и контекст для агентов, а также фиксация того, для кого создаётся система и как выглядит успех для пользователя.
Все три вида долга связаны. Плохо зафиксированное намерение мешает строить правильные ментальные модели; слабое понимание ведёт к плохим техническим решениям; технический хаос ещё сильнее разрушает понимание. Поэтому здоровье системы нельзя оценивать только по качеству кода.
Главный практический вывод: понимание должно стать отдельным результатом разработки, а intent-first подход — нормой при работе с ИИ. Не стоит автоматизировать само понимание, подменяя его сгенерированной документацией. В будущем ключевым навыком разработчика может стать не столько написание кода, сколько способность сохранять правильное понимание того, что система делает, зачем и как должна развиваться.
Открытыми остаются вопросы: всегда ли стоит документировать намерение, может ли ИИ делать неявное знание явным без потери человеческого понимания и какой уровень когнитивного долга допустим ради скорости. Главный тезис: в эпоху ИИ команды должны инвестировать в понимание и намерение так же системно, как раньше инвестировали в качество кода.
P.S. Настойчиво рекомендуем почитать оригинал статьи, прям стоит того.
И всем хороших выходных 🤗