Блок 1 · Урок 1 из 4 · ≈ 8 минут · цель: увидеть две главные формы сложности

Сложность - главный враг

Complexity is the enemy

Главная мысль: сложность (complexity) опасна не сама по себе, а потому что перегружает голову и делает последствия изменений непредсказуемыми.

Правило: маленькая правка не должна требовать большого расследования.

Проверка: где изменение расползается по системе, там копится сложность.

Зачем это вам

Когда вы работаете с AI-агентом, он может быстро написать много кода. Но скорость не спасает, если каждое следующее изменение требует разбираться в десятке далеких деталей. Вам важно замечать, где код уже просит слишком много внимания и где маленькая правка начинает тянуть за собой чужие части системы.

Хороший дизайн не делает систему «красивой ради красоты». Он уменьшает количество лишнего знания, которое нужно держать в голове, чтобы безопасно менять программу.

Суть

Есть две формы сложности, которые особенно часто мешают работе: когнитивная нагрузка (cognitive load) и усиление изменений (change amplification).

Когнитивная нагрузка - это объем информации, который нужно помнить, чтобы сделать шаг без ошибки. Если для маленькой правки нужно знать формат базы, порядок вызовов, скрытые флаги, особенности UI и исключения старого API, сложность уже управляет вами.

Усиление изменений - это ситуация, когда маленькая по смыслу правка требует менять много мест. Например, вы добавляете одно поле в профиль пользователя, а правите форму, валидатор, сериализацию, тесты, письмо, таблицу и еще три ручных преобразования.

Представьте кладовку, где все вещи лежат вперемешку. Чтобы достать отвертку, вы сначала проводите расследование: что на чем стоит, что упадет, что уже сломано, где коробка с проводами. Дизайн - это организация кладовки так, чтобы обычные действия не требовали расследования.

Запомните одно

Сложность видно не по размеру кода, а по цене понимания и цене изменения. Тревожный сигнал: маленькая правка требует понимать много далеких деталей.

Фраза агента → что он имеет в виду

«Тут много связности»
Изменение в одном месте может задеть другие места, потому что части системы слишком зависят друг от друга.
«Нужно упростить интерфейс»
Пользователь модуля должен знать слишком много деталей, чтобы вызвать его правильно.
«Это технический долг»
Быстрое решение сейчас увеличивает стоимость будущих изменений.

Мини-словарь

Complexity
Сложность: все, что делает систему труднее понять, изменить или проверить.
Cognitive load
Когнитивная нагрузка: сколько деталей нужно держать в голове, чтобы безопасно работать с кодом.
Change amplification
Усиление изменений: насколько сильно маленькое изменение разрастается по файлам, слоям и тестам.

Проверьте себя

Что является тревожным сигналом сложности?

Связанные материалы

Основной источник