Шесть противоречий когнитивного долга в разработке с ИИ

Генеративный ИИ ускоряет написание кода, но накапливает когнитивный долг не потому, что команды «слишком быстро едут», а потому что машинная скорость генерации расходится с человеческой скоростью проверки смысла. материал на Dev.to разбирает шесть структурных конфликтов в AI-assisted development и предлагает снимать их через TRIZ — не тормозя ассистентов, а перестраивая процесс так, чтобы скорость и понимание перестали быть взаимоисключающими.
Почему «торможение» не закрывает долг
Привычные митигации в тексте названы braking (торможение): pair programming, code review, требование, чтобы человек понимал каждое изменение, позже — ретроспективы. Это осознанный компромисс: вы меняете скорость на comprehension, но не устраняете противоречие. Позиция статьи жёсткая: resolved contradiction в смысле TRIZ устраняет конфликт — «you don't choose between speed and understanding. You restructure the system so they don't conflict».
Для команд, которые уже живут с generative AI и несколькими агентами на одной кодовой базе, это сдвиг рамки: проблема не в том, чтобы реже нажимать «принять diff», а в том, что human-speed enforcement (ревью, память ревьюера) не выдерживает machine-speed codegen. ИИ не создал долг с нуля — он обнажил хрупкость старых практик при новой скорости.
Разрыв скорости и понимания
Противоречие 1 — Velocity–Comprehension Gap: модель пишет сложную логику за секунды, а процесс одновременно должен быть FAST и SLOW.
Разрешение (TRIZ): Separation in Space — понимание переносится с объёма кода на свойства: короткие формулировки инвариантов («never unauthenticated», порядок операций, границы retry). Код сверяется с этими свойствами автоматически; comprehension масштабируется с числом свойств, а не с тысячами строк, которые успевает сгенерировать ассистент.
При AI-augmented development «понять всё построчно» — нереалистичный KPI; осмысленная единица — проверяемая спецификация поведения.
Спецификация вместо борьбы с реализацией
Противоречие 2 — Bypass of the Mental Struggle: мгновенный ответ модели против необходимости construct the solution для internalization.
Разрешение: Principle 13 — The Other Way Around: человек формулирует что должно быть истинно (доменные инварианты, границы), машина — как реализовать. Борьба смещается с «how implement» на модель предметной области; спецификация становится mental model, а implementation — disposable в ритме итераций с ИИ.
«Зачем» до генерации, а не в комментариях после
Противоречие 3 — Loss of Intentionality and Rationale: чем больше автогенерации, тем меньше зафиксированного why (паттерны кода без стратегического intent).
Разрешение: Prior Action + Parameter Change: rationale до codegen — constraint с комментарием или metadata; нарушения ловит CI gate по constraint file, а не память ревьюера на пятничном PR.
В материале приводятся предикаты уровня домена: «No user should be able to escalate their own privileges» (RBAC как следствие spec), отказ от eventual consistency с regulatory read-after-write, требование mutual TLS вместо API keys при сетевых adversaries. Архитектурные решения (inter-service gRPC, deadline propagation, exponential backoff с jitter и cap попыток, классификация retryable vs terminal errors) отделяются от implementation details, которые могут оставаться неявными у ИИ и проверяться тестами.
Параллельные агенты и невидимая координация
Противоречие 4 — Distributed Cognitive Fragmentation: несколько AI-агентов по разным модулям vs единая теория системы.
Разрешение: Merging + Intermediary — единый shared specification repository (не «общая голова» у всех разработчиков): локальное понимание модуля + композиция constraints; аналогия с контрактами интерфейсов в крупных инженерных системах.
Противоречие 5 — Invisible Coordination Overhead: больше акторов (агентов) → больше неявных архитектурных решений, размазанных по коду.
Разрешение: Color Change + Prior Action — явные architectural constraints до codegen (gRPC, retry policy, классификация ошибок); implementation может оставаться неявным у модели и ловиться тестами. «Unknown unknowns» — это неявные архитектурные выборы, а не мелкие стилистические правки.
Метрики вывода вместо метрик понимания
Противоречие 6 — Misaligned Success Metrics: KPI на velocity/output не измеряют comprehension.
Разрешение: proxy-метрики specification completeness: constraint coverage, constraint staleness, violation rate в CI, unspecified change ratio (доля изменений в модулях без constraints). В посте есть иллюстративный пример: 200 behaviors при 20 constraints = 10% coverage — гипотетическая арифметика, не отчёт реальной команды.
Практический смысл для AI-assisted workflow: пока команда считает только merged PR и строки кода, generative AI будет «выигрывать» по цифрам и проигрывать по долгу — пока не появится механический учёт полноты ограничений.
Три слоя: что уже есть в кодовой базе и чего не хватает
Корневые причины сводятся к трём слоям:
| Слой | Роль |
|---|---|
| Layer 1 — границы Парнаса | Интерфейсы модулей, сигнатуры, API-контракты (REST/gRPC/GraphQL), схемы БД и конфигов — в зрелых репозиториях уже частично есть (отсылка к Parnas, 1972). |
| Layer 2 — механическое принуждение | CI и formal gates на скорости машины: прецеденты из других доменов (формальная верификация в chip design, interlocks, TCAS, drug-interaction checks; в софте — масштаб вроде Google monorepo с заявленными «2 billion lines of code», team ownership, LSC tooling). |
| Layer 3 — rationale | «Почему» у границ: ADR, constraint comments — часто optional, не связаны механически с интерфейсом. |
Таблица в источнике сопоставляет шесть root causes с отсутствующим Layer 2 и/или Layer 3, а не с отсутствием Layer 1. Вывод: не обязательно изобретать спецификации с нуля — нужно механически enforce уже существующие интерфейсы и прикрепить rationale как metadata к ним.
Для читателя, который строит процесс вокруг generative AI, CI gates, pair programming и automated testing (все перечислено в материале), это карта зрелости: ассистенты ускоряют Layer 1 «в ширину», а долг копится там, где Layer 2 и Layer 3 остаются добровольными.
Что не обещает первоисточник
В полном тексте не фигурируют конкретные IDE-ассистенты (Cursor, Copilot, Claude Code), MCP, vibe coding или skills/rules как продуктовые сущности — только generative AI, AI agents, CI workflow и перечисленные выше практики. Независимые исследования cognitive load и кейсы команд с измеренным «до/после» не приводятся; опора — TRIZ, Parnas и отраслевые аналогии. Ориентир объёма на Dev.to — около 13 минут чтения; публичная активность под постом скромная (единичный комментарий и несколько реакций), что не говорит о качестве аргумента, но и не даёт оснований говорить о «вирусности».
Источники
- Bala Paranj (@bala_paranj_059d338e44e7e), «Six Contradictions Behind Cognitive Debt in AI Assisted Development», Dev.to, 2026-05-28 — Dev.to (дата доступа при обогащении: 2026-05-28 UTC).