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

Код работает, тесты зелёные, вся система стабильна — это значит, что с качеством всё в порядке? Не совсем. Оказывается, существует третье измерение, которое никто не отслеживает: понимаемость для человека.
Когда код работает, но непонятен LLM пишет код так, как его понимает машина.
Переменные названы логично, синтаксис безупречен, алгоритм работает. Но прочитать этот код человеку — пытка. Логика скручена в узлы, комментарии есть, но они не помогают схватить суть. Модель генерирует документацию, которая может быть объёмной и содержать описание каждого параметра, каждой функции, каждого исключения. И одновременно она полностью бесполезна для ответа на главный вопрос: зачем это всё написано? Проблема не в том, что LLM плохо обучили. Проблема в том, что человек и модель буквально мыслят по-разным механизмам. И когда их знания сталкиваются, возникает именно это: код, который работает идеально, но остаётся чёрным ящиком для того, кто его читает.
Две архитектуры понимания Человек мыслит структурами: начало, развитие, конец.
Цель, путь к ней, результат. Сложность для человека — это стресс, это боль. Чем запутаннее логика, тем больше когнитивной нагрузки, тем сложнее код поддерживать. LLM работает совсем иначе. Модель предсказывает следующий токен на основе вероятностей. Это не структура — это просто последовательность вероятностных шагов. Для модели нет принципиальной разницы между простым алгоритмом и сложным: оба — это просто цепочка токенов. И самое главное: для модели не существует боли от сложности. Это просто данные.
- Человек ищет смысл и закономерности, модель предсказывает токены Человека запутывает излишняя детализация без контекста цели Модель не «понимает» в смысле человека — она предсказывает * Для человека простота — благодеяние, модель её просто не замечает ## Документация как ловушка Модель может написать объёмную документацию. Описать каждый параметр, каждый тип возвращаемого значения, каждое исключение. Код будет в полной мере задокументирован. И человек всё равно не поймёт, почему архитектура выбрана именно так. Потому что документация отвечает на вопрос «что это такое», но не на вопрос «почему». Человек может прочитать пятьдесят страниц описания и остаться в полной растерянности относительно замысла. Знание всех деталей не даёт понимания целого.
Никто не замечает потери контроля
Самый страшный момент в этой истории — никто не замечает, когда контроль теряется. Код работает. Тесты проходят. Система стабильна. И вдруг нужно что-то изменить, добавить новую функцию, исправить баг. И обнаруживается, что никто, даже автор кода, не может объяснить, как это на самом деле работает. В паре «человек + LLM» происходит вот что: человек кликает на кнопку «одобрить», модель считает свою работу завершённой (тесты же зелёные!), а между тем понимание медленно и незаметно утрачивается. Нет момента «стоп, сейчас начнётся беда». Потеря контроля случается незаметно, как сумерки.
«Код работает, тесты зелёные — значит, всё хорошо», — думает человек, кликая на одобрение.
И не замечает, как при этом уходит возможность что-либо изменить.
Что это значит для нас Нужны новые метрики качества кода.
Не просто «работает» и «тесты проходят». Нужны вопросы: может ли человек это понимать? может ли он это поддерживать? может ли он это расширять? Иначе каждая строка кода станет осколком, который функционирует, но его назначение утеряно. Это не упрёк разработчикам и не критика LLM. Это просто следствие того факта, что человек и модель говорят на разных языках понимания. Один видит дерево целиком, другой — отдельные ветви. И когда они работают вместе, между ними остаётся зазор, в котором исчезает смысл.
Хотите не читать про ИИ, а внедрить его?
«AI News» — это полезные новости из мира ИИ. Системно научиться работать с нейросетями и применять их в работе — в Hamidun Academy.