Справочник курса
Глоссарий
Термины даются парой: русский + английский. Английский вариант используй в промптах ИИ-агенту – он понимает язык принципов. Номер рядом с термином – урок, где он разбирается.
Модуль 1Сложность – главный враг
- Сложностьcomplexityурок 1
- Всё в структуре системы, что мешает её понимать и изменять. Главный враг по Ousterhout. Накапливается мелкими порциями, а не приходит одним куском.
Агенту: «this adds complexity – simplify» / «это усложняет – упрости».
- Тактическое программированиеtactical programmingурок 1
- Режим «лишь бы заработало побыстрее». Каждый шаг чуть-чуть ухудшает структуру. Так по умолчанию работают джуны – и ИИ-агенты без надзора.
- Стратегическое программированиеstrategic programmingурок 1
- Режим «рабочий код – не цель, а побочный эффект хорошей структуры». Небольшие постоянные вложения в дизайн (~10–20% времени), которые окупаются скоростью всех будущих изменений.
- Технический долгtechnical debtурок 1
- Накопленные последствия тактических решений: каждое будущее изменение стоит дороже, как проценты по кредиту. Долг можно брать осознанно – плохо, когда он берётся незаметно.
- Изменение против шерстиchange amplificationурок 1
- Симптом сложности №1: одно маленькое изменение требует правок во многих местах.
- Когнитивная нагрузкаcognitive loadурок 1
- Симптом сложности №2: сколько всего нужно держать в голове, чтобы безопасно сделать изменение.
- Неизвестные неизвестныеunknown unknownsурок 1
- Симптом сложности №3, самый опасный: непонятно даже, ЧТО нужно знать или менять, чтобы задача была выполнена корректно.
- Модульmoduleурок 2
- Относительно самостоятельная часть системы с чёткой зоной ответственности: платежи, авторизация, отчёты. У модуля есть интерфейс (что он умеет) и реализация (как он это делает внутри).
- Интерфейсinterfaceурок 2
- «Кнопки снаружи» модуля: всё, что остальная система обязана знать, чтобы им пользоваться. Чем меньше и проще интерфейс – тем лучше.
- Глубокий модульdeep moduleурок 2
- Много пользы за простым интерфейсом (пример: «сохрани файл» прячет тысячи деталей работы с диском). Противоположность – мелкий (shallow) модуль: сложный интерфейс при малой пользе.
Агенту: «make this module deeper – simpler interface, more functionality inside».
- Сокрытие информацииinformation hidingурок 2
- Главный приём создания глубоких модулей: каждое знание системы живёт ровно в одном модуле и не видно снаружи. Тогда его можно менять, не трогая остальное.
- Утечка деталейinformation leakageурок 2
- Одно и то же знание расползлось по нескольким частям системы – менять придётся везде сразу.
- Связанностьcouplingурок 3
- Насколько части системы зависят друг от друга: поменял одну – придётся трогать другую. Чем ниже, тем лучше.
- Связностьcohesionурок 3
- Насколько содержимое одного модуля относится к одному делу. Правило сеньора: high cohesion, low coupling.
- Неявная договорённостьimplicit contractурок 3
- Части системы полагаются на нигде не зафиксированный формат или порядок – в одном месте поменял, в трёх сломалось.
- Общие данныеshared global stateурок 3
- Скрытая связь: несколько частей читают и пишут одну «общую тетрадь», любой может испортить данные любому.
Модуль 2Мышление требованиями
- XY-проблемаXY problemурок 4
- Ловушка, когда просят помочь с придуманным решением Y, не называя настоящую задачу X. ИИ-агент охотно строит любое Y.
- Пять почемуfive whysурок 4
- Техника докапывания до реальной проблемы повторным вопросом «почему это нужно?».
- Критерий успехаsuccess criteriaурок 4
- Заранее сформулированный признак того, что проблема действительно решена.
- YAGNIYou Aren't Gonna Need Itурок 5
- Принцип «не строй под предполагаемое будущее – только под известное настоящее».
- Стоимость ношенияcarrying costурок 5
- Постоянная цена существования фичи в системе: она усложняет все остальные изменения, даже если ей не пользуются.
- Расползание границscope creepурок 5
- Неконтролируемый рост списка фич по ходу проекта. На ревью работы агента – когда сделано заметно больше, чем просили.
- MVPminimum viable productурок 5
- Минимальный эксперимент для проверки главной гипотезы о пользователе, а не урезанный продукт.
- Счастливый сценарийhappy pathурок 6
- Единственный путь, где всё идёт как задумано. Витрина продукта, а не весь продукт.
- Краевой случайedge caseурок 6
- Ситуация на границе нормальной работы (пусто, обрыв, повтор). Это требование, а не баг.
- Правило «ноль – один – много»zero – one – manyурок 6
- Проверять поведение при нуле элементов, одном и очень многих – три случая ломаются по-разному.
Модуль 3Архитектура и данные
- Границаboundaryурок 7
- Линия, отделяющая часть системы. Хорошая граница переживает замену того, что за ней.
- Контрактcontract / APIурок 7
- Договорённость о том, что проходит через границу между частями системы.
- Граница доверияtrust boundaryурок 7
- Линия между тем, что ты контролируешь, и внешним миром. Всё входящее снаружи проверяется на ней.
- Модель данныхdata modelурок 8
- Описание сущностей (entities) системы и связей (relations) между ними. Проектируется до кода: код меняется легко, схема данных – тяжело.
- Миграция данныхdata migrationурок 8
- Преобразование накопленных данных под новую схему при живых пользователях. Одна из самых дорогих операций.
- Состояниеstateурок 9
- Всё, что система помнит: платежи, доступы, настройки.
- Единственный источник правдыsingle source of truth, SSOTурок 9
- Ровно одно место, где факт хранится по-настоящему. Всё остальное – производные копии. Вопрос сеньора: «кто владелец этого факта?»
- Производные данныеderived dataурок 9
- Данные, вычисленные из источника правды. Их можно стереть и пересчитать без потерь.
- Кэшcacheурок 9
- Производная копия ради скорости. Имеет право устаревать, но не имеет права быть источником.
Модуль 4Компромиссы и выбор технологий
- Компромиссtrade-offурок 10
- Инженерное решение как обмен: что-то получаешь, чем-то платишь. «Лучшего» варианта нет, есть подходящий под контекст.
Агенту: «дай 2 варианта с плюсами, минусами и ценой ошибки».
- Цена ошибкиcost of failureурок 10
- Что случится с продуктом и бизнесом, если решение откажет. Главный критерий выбора между вариантами.
- Жетоны инновацийinnovation tokensурок 11
- Ограниченный запас нового и рискованного, который проект может себе позволить (~3 штуки, по Маккинли). Тратить на уникальность продукта, а не на модный стек.
- Известные способы отказаknown failure modesурок 11
- Главная ценность зрелой «скучной» технологии: известно не только что она умеет, но и как ломается и чинится.
- Ядро против обвязкиcore vs commodityурок 12
- Своими руками строится только то, за что клиенты платят именно тебе. Авторизация, платежи, рассылки, хостинг – готовые сервисы.
- Односторонняя дверьone-way doorурок 12
- Необратимое решение (выбор БД, формат данных) – думай долго. Двусторонняя дверь (two-way door) – легко откатить, решай быстро.
- Стоимость владенияcost of ownershipурок 12
- Полная цена «своего» решения: не написание (агент сделал его дешёвым), а поддержка, безопасность и отказы – навсегда.
Модуль 5Надёжность и риски
- Режим отказаfailure modeурок 13
- Конкретный способ, которым часть системы перестаёт работать: сеть, внешний API, ресурсы, ключи.
Агенту: «что увидит пользователь, когда этот сервис упадёт?»
- Деградация с достоинствомgraceful degradationурок 13
- При отказе части система теряет возможности постепенно, а не молчит и не падает целиком.
- Радиус пораженияblast radiusурок 13
- Насколько далеко разлетаются последствия одного отказа. Сбой второстепенного не должен трогать критичное.
- Определить ошибки прочьdefine errors out of existenceурок 14
- Изменить дизайн операции так, чтобы целый класс ошибок стал невозможен (Ousterhout, глава 10).
- Падать громко и раноfail fastурок 14
- Если продолжать бессмысленно – остановиться сразу с внятным сообщением, а не ковылять дальше и портить данные.
- Проглоченная ошибкаswallowed errorурок 14
- Ошибка перехвачена и молча проигнорирована: ни пользователю, ни в лог. Любимый паттерн ИИ-агентов – проверяй.
- Аутентификацияauthenticationурок 15
- Проверка «кто ты». Сама по себе не защищает данные от других залогиненных пользователей.
- Авторизацияauthorizationурок 15
- Проверка «что тебе можно» на каждом действии. Её отсутствие – дыра номер один по OWASP.
- Минимальные праваleast privilegeурок 15
- Каждому ключу и сервису – ровно столько прав, сколько нужно для работы.
- Инъекцияinjectionурок 15
- Внедрение команды через внешний ввод. Любой ввод извне проверяется и не подставляется «как есть».
Модуль 6Качество и обратная связь
- Регрессияregressionурок 16
- Новое изменение ломает старое поведение, которое раньше работало. Проблема №1 при ИИ-разработке: агент правит смело и широко.
- Пирамида тестовtest pyramidурок 16
- Стратегия: много быстрых мелких тестов в основании, мало медленных сквозных наверху.
- Юнит-тестunit testурок 16
- Быстрая проверка отдельного кусочка логики с точным указанием, что сломалось.
- Сквозной тестend-to-end testурок 16
- Прогон целого пользовательского сценария через всю систему, от клика до результата.
- Ревью кодаcode reviewурок 17
- Проверка изменения перед приёмкой: в первую очередь дизайна и уместности, а не строк.
Агенту: «сделай ревью собственного кода как строгий сеньор».
- Магические значенияmagic numbersурок 17
- Голые числа и строки в коде без имени и объяснения, почему они такие. Сигнал тревоги на ревью.
- Наблюдаемостьobservabilityурок 18
- Способность системы сообщать о своём состоянии самостоятельно – раньше жалоб пользователей.
- Проверка здоровьяhealth checkурок 18
- Страница-«пульс» приложения, которую внешний сервис опрашивает и поднимает тревогу при молчании.
- Алертalertурок 18
- Правило «разбуди меня, если…»: автоматическое уведомление при выходе метрики за порог.
Модуль 7Senior + ИИ-агент
- Сверхуверенный напарникoverconfident pair programmerурок 19
- Ментальная модель ИИ-агента по Willison: быстрый и начитанный, но одинаково уверенно выдаёт верные и неверные решения.
- Контекст агентаcontext windowурок 19
- Оперативная память агента: весь разговор и прочитанные файлы. При переполнении агент забывает инструкции и ошибается – дели работу на сессии.
- Спецификацияspecурок 20
- Записанные до старта решения: проблема, границы, модель данных, краевые случаи, критерии приёмки.
- Критерии приёмкиacceptance criteriaурок 20
- Проверяемый список «фича готова, когда…» – планка для агента и чек-лист на приёмке.
- Память проектаproject memoryурок 20
- Файл правил проекта (CLAUDE.md и аналоги), который агент читает каждую сессию: стек, принципы, запреты.
- Цикл работы с агентомresearch → plan → execute → reviewурок 21
- Рабочий процесс сеньора: исследование, план, ревью плана, стройка малыми шагами с проверкой.
- Контрольная точкаcheckpointурок 21
- Зафиксированное работающее состояние (обычно коммит), к которому можно откатиться после неудачной итерации.