Как учиться Интервальное повторение: забывание как инструмент
0%

Интервальное повторение: забывание как инструмент

Интервальное повторение: забывание как инструмент

В предыдущей главе — Извлечение из памяти — разобран приём: доставать знание из головы, а не заливать его туда повторным чтением. Остался вопрос расписания. Достать один раз сразу после чтения — не то же самое, что достать через три дня. Разница между этими двумя вариантами больше, чем разница между хорошим и плохим учебником.

Эта глава про то, когда повторять, и её главный тезис звучит неуютно: забывание — не поломка, которую надо предотвратить, а условие, при котором повторение вообще что-то даёт. Повторение материала, который вы ещё прекрасно помните, стоит времени и почти не меняет состояние памяти. Повторение материала, который уже начал уплывать, стоит столько же и меняет много.

Отсюда практический вывод, который выглядит контринтуитивно: правильный момент повторения — не «пока помню», а «пока ещё чуть-чуть помню».

Дальше — что про это известно из исследований, где границы этого знания, как устроены планировщики, сколько всё это стоит в часах и какому знанию инженера оно вообще подходит. Про то, почему трудность полезна сама по себе, — следующая глава, Желательные трудности; здесь мы остаёмся в рамках расписания.

Часть 1. Что забывается и с какой скоростью

Кривая Эббингауза: что в ней правда

Герман Эббингауз в 1885 году поставил эксперимент на себе: заучивал списки бессмысленных слогов, а потом измерял, сколько времени нужно на повторное заучивание через разные промежутки. Разница между первым и повторным заучиванием — это и есть «сколько осталось». Получилась кривая: быстрое падение в первые часы, потом всё более пологое.

Результат старый, но, в отличие от многих находок ранней психологии, воспроизводится. Мюрре и Дрос повторили оригинальный протокол в 2015 году и получили близкие показатели (PLOS ONE, DOI: 10.1371/journal.pone.0120644). На портале эта работа уже упоминалась в статье про захват и инбокс — там она про то, почему мысль надо записать сразу.

Чего в ней нет. Популярная подача добавляет к кривой конкретные проценты: «через сутки остаётся 33%», «через неделю — 25%». Эти числа получены на бессмысленных слогах, на одном испытуемом, в условиях, максимально далёких от чтения документации. Скорость забывания сильно зависит от материала: осмысленный, связанный с уже известным, встроенный в практику материал держится дольше на порядки. Кривая говорит «забывание быстрое и предсказуемое по форме», а не «через сутки у вас останется треть».

Если вы видите статью с точной цифрой процентов забытого за 24 часа применительно к изучению языка программирования — это не результат исследования, это перенос числа из чужого эксперимента.

Забывание — не стирание

Ключевая модель, объясняющая, почему интервалы работают, — «новая теория неиспользования» Роберта и Элизабет Бьорк (Bjork & Bjork, 1992). Она разделяет два свойства элемента памяти:

  • Сила хранения (storage strength) — насколько прочно элемент встроен в память. По этой теории она практически не убывает.
  • Сила извлечения (retrieval strength) — насколько элемент доступен прямо сейчас. Она падает со временем и растёт при обращении.

«Забыл» в бытовом смысле — это упавшая сила извлечения при сохранившейся силе хранения. Отсюда эффект, который вы наблюдали: язык, на котором не писали пять лет, восстанавливается за неделю, а не за год. Хранение осталось, извлечение просело.

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

Честная оговорка: это теоретическая рамка, которая хорошо описывает данные, а не измеренный механизм. Силу хранения нельзя померить прибором — она вводится как конструкт, объясняющий наблюдаемое. Пользуйтесь ею как рабочей моделью, а не как физическим законом.

Забывание и повторение: интервал растёт при постоянной целевой вероятности припоминания

Часть 2. Эффект распределения: что показали исследования

Основной результат

Эффект распределения (spacing effect) формулируется просто: при одинаковом суммарном времени занятий разнесённые во времени повторения дают лучшее долгосрочное удержание, чем сгруппированные подряд.

Опорная работа — метаанализ Cepeda, Pashler, Vul, Wixted, Rohrer (2006), Distributed practice in verbal recall tasks: A review and quantitative synthesis, Psychological Bulletin 132(3), 354–380. Это сводка сотен экспериментов, накопленных за век. Эффект стабильный, направление всегда одно, размер зависит от условий.

Второй столп — Dunlosky, Rawson, Marsh, Nathan, Willingham (2013), Improving Students’ Learning With Effective Learning Techniques, Psychological Science in the Public Interest 14(1), 4–58 (DOI: 10.1177/1529100612453266). Авторы оценили десять учебных приёмов по силе доказательной базы и широте применимости. Высшую оценку получили ровно два: практическое тестирование (это глава 04) и распределённая практика (это текущая глава). Подчёркивание, перечитывание и составление конспектов-резюме попали в низшую категорию — см. Иллюзию понимания.

Обзор Dunlosky и соавторов лежит в открытом доступе, и его стоит прочитать целиком: это редкий случай, когда научная сводка написана так, что её можно применить в понедельник.

Насколько разносить: гребень оптимума

Практический вопрос — не «разносить ли», а «на сколько». Прямой ответ дала работа Cepeda, Vul, Rohrer, Wixted, Pashler (2008), Spacing effects in learning: A temporal ridgeline of optimal retention, Psychological Science 19(11), 1095–1102. Больше тысячи участников, промежутки между двумя занятиями от нуля до 105 дней, сроки итоговой проверки от 7 до 350 дней.

Результат: оптимальный промежуток зависит от того, до какого срока нужно помнить, и составляет порядка 10–30% от этого срока, причём доля падает по мере роста срока. Для проверки через неделю лучшим был промежуток около суток; для проверки через 35 дней — около 11 дней; для проверки через год — около трёх недель.

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

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

Инженерное следствие: если вы не знаете точный оптимум — ошибайтесь в большую сторону. Слишком длинный интервал стоит немного удержания. Слишком короткий стоит того же времени и не даёт почти ничего.

Долгие горизонты

Самая длинная серия — Bahrick, Bahrick, Bahrick & Bahrick (1993), Maintenance of foreign language vocabulary and the spacing effect, Psychological Science 4(5), 316–321. Четыре человека (семья автора) учили иностранные слова 13 сессиями с промежутками 14, 28 или 56 дней, а проверялись до пяти лет спустя. Более длинные промежутки дали заметно лучшее удержание на дистанции.

Это же исследовательская линия Bahrick (1984) про «permastore» — след школьного испанского, сохраняющийся десятилетиями у людей, которые языком не пользовались.

Оговорка честная и существенная: четыре испытуемых. Это не рандомизированное исследование на выборке, это тщательный многолетний кейс. Он согласуется с массивом коротких экспериментов, и поэтому ему верят, но сам по себе он ничего бы не доказал.

Где это проверяли и переносится ли на инженерию

Здесь надо быть аккуратным, потому что от честности этого абзаца зависит, не наврём ли мы читателю.

На чём проверяли в основном: пары слов, иностранная лексика, определения терминов, фактические утверждения, картинки и категории. То есть на декларативном знании — «что верно».

Что известно за пределами словаря:

  • Rohrer & Taylor (2006), The effects of overlearning and distributed practice on the retention of mathematics knowledge, Applied Cognitive Psychology 20, 1209–1224. Распределение задач по времени улучшило удержание математической процедуры; дополнительная зубрёжка в рамках одного занятия (overlearning) — практически нет. Это уже не словарь, а процедура.
  • Медицинское образование: серия рандомизированных исследований «spaced education» (Kerfoot и соавторы, середина 2000-х — начало 2010-х, на резидентах и студентах-медиках) показала лучшее удержание клинического знания при рассылке вопросов с интервалами по сравнению с обычным форматом. Конкретную работу стоит найти самому — их несколько, дизайн и метрики разнятся.
  • Моторные и хирургические навыки: есть рандомизированные работы, показавшие преимущество распределённого обучения микрохирургическим техникам над массированным. Если будете ссылаться, найдите оригинал и проверьте, что именно измеряли; я не берусь воспроизвести детали по памяти.

Чего нет. Мне не известны контролируемые исследования, показывающие, что интервальное повторение улучшает производительность инженера-программиста — способность спроектировать систему, найти баг, прочитать чужой код. Всё, на что можно опереться, — перенос с декларативного знания: если API, семантика, инварианты и терминология домена лежат в голове, а не в поиске, то рабочая память освобождается под собственно задачу. Это правдоподобное рассуждение, а не измеренный результат. Так его и подавайте, если будете кому-то пересказывать.

Часть 3. Почему это работает: четыре объяснения и ни одного окончательного

Эффект надёжный, механизм — нет. В литературе сосуществуют несколько объяснений, и они не исключают друг друга.

  1. Недостаточная обработка (deficient processing). Второе повторение подряд получает меньше внимания: материал ещё в голове, мозг экономит. Разнесение возвращает новизну и вместе с ней обработку.
  2. Вариативность кодирования (encoding variability). Разные дни — разный контекст: место, настроение, что вы делали до. След обрастает большим числом зацепок, значит, извлечь его потом можно из большего числа состояний.
  3. Извлечение на этапе повторного изучения (study-phase retrieval). Встретив материал спустя время, вы сначала непроизвольно вспоминаете предыдущую встречу — и это само по себе акт извлечения, тем более ценный, чем труднее он дался. Это объяснение прямо смыкается с главой про извлечение.
  4. Консолидация. Между занятиями идут процессы закрепления, в том числе во сне. Промежуток даёт им произойти.

Практического выбора между объяснениями делать не нужно: все четыре предсказывают одно и то же поведение — разносить. Но знать про них полезно, чтобы не купиться на объяснение в духе «мозг записывает в долговременную память во время фазы такой-то»: это упрощение, которого данные не поддерживают в той степени, в какой его подают.

Часть 4. От коробок к планировщикам

Система Лейтнера

Себастьян Лейтнер описал в 1972 году бумажную схему: несколько коробок, карточка при верном ответе переезжает в следующую, при ошибке — в первую. Коробки просматриваются с разной частотой: первая — каждый день, вторая — раз в три дня, третья — раз в неделю и так далее.

Это интервальное повторение без единого вычисления. Работает, требует нуля инфраструктуры, годится для сорока карточек и разваливается на четырёхстах — вручную не обслужить.

SM-2: алгоритм, который до сих пор в основе всего

Пётр Вожняк формализовал расписание в алгоритме SM-2 (SuperMemo, конец 1980-х). Его вариант десятилетиями был планировщиком по умолчанию в Anki. Логика: у карточки есть интервал, счётчик успешных повторений и «фактор лёгкости», который подстраивается по вашей оценке ответа.

from dataclasses import dataclass


@dataclass
class Card:
    interval: int = 0      # текущий интервал в днях
    repetition: int = 0    # сколько раз подряд ответили успешно
    ease: float = 2.5      # фактор лёгкости, минимум 1.3


def sm2(card: Card, quality: int) -> Card:
    """SM-2. quality — самооценка ответа от 0 (провал) до 5 (мгновенно и точно).

    Успехом считается quality >= 3. При провале карточка возвращается
    в начало по интервалу, но накопленный фактор лёгкости сохраняется.
    """
    if quality >= 3:
        if card.repetition == 0:
            card.interval = 1
        elif card.repetition == 1:
            card.interval = 6
        else:
            card.interval = round(card.interval * card.ease)
        card.repetition += 1
    else:
        card.repetition = 0
        card.interval = 1

    # Подстройка лёгкости: чем хуже ответ, тем сильнее падает фактор.
    card.ease += 0.1 - (5 - quality) * (0.08 + (5 - quality) * 0.02)
    card.ease = max(1.3, card.ease)
    return card

Сложность: обновление одной карточки — O(1) по времени и памяти. Выбор карточек, подошедших к сроку, — O(n) при линейном проходе по колоде или O(log n) на выборку, если держать карточки в куче или в индексе БД по полю «дата следующего показа». Для колоды в тысячи карточек это неважно; для мобильного клиента с десятками тысяч — уже да.

Полезно заметить, что именно делает SM-2: он не моделирует память. Он умножает интервал на коэффициент и подкручивает коэффициент по вашей самооценке. Это эвристика, подобранная руками и хорошо работавшая три десятилетия. Её слабое место — зависимость от честности самооценки и отсутствие понятия «вероятность вспомнить».

FSRS: планировщик как задача подгонки модели

FSRS (Free Spaced Repetition Scheduler) появился в начале 2020-х и с версии 23.10 доступен в Anki как штатный планировщик. Идея другая: для каждой карточки поддерживается тройка

  • сложность (difficulty) — насколько тяжело даётся именно этот материал;
  • стабильность (stability) — за сколько дней вероятность припоминания упадёт до заданного порога;
  • извлекаемость (retrievability) — текущая вероятность вспомнить, функция от стабильности и прошедшего времени.

Пользователь задаёт целевую вероятность вспоминания (desired retention), например 0,9. Планировщик назначает показ на день, когда извлекаемость по модели опустится до этого значения. Параметры модели подгоняются на истории ваших собственных повторений, а базовые веса обучены на очень больших наборах обезличенных логов Anki.

Честно про статус этих доказательств. FSRS доказанно лучше SM-2 в одном конкретном смысле: он точнее предсказывает, вспомните ли вы карточку. Это измерено на логах и воспроизводимо. Из этого не следует автоматически, что вы больше выучите: контролируемого сравнения «люди на FSRS усвоили больше, чем люди на SM-2» с рандомизацией и независимой проверкой знаний я не знаю. Правдоподобно, что более точное расписание экономит повторения при том же удержании — это и есть основной заявляемый эффект, и он про эффективность, а не про потолок.

Расширяющиеся интервалы: миф о необходимости

Ландауэр и Бьорк (1978) предложили расширяющееся расписание: 1 день, 3, 7, 16… Идея красивая и стала фольклором: «интервалы обязаны расти».

Данные скромнее. Karpicke & Roediger (2007) сравнили расширяющееся и равномерное расписания извлечения: расширяющееся давало преимущество на коротком сроке, а на длинном равномерное было не хуже, а местами лучше. Karpicke & Bauernschmidt (2011) показали, что решающим фактором является абсолютная величина промежутков, а не то, растут они или нет.

Практический вывод: рост интервалов — удобный способ уложить обслуживание большой колоды в разумное время, а не отдельный источник эффекта. Если вам удобнее равномерная схема «раз в две недели» — она не хуже.

Жизненный цикл карточки

Порог «21 день» — соглашение Anki для статистики зрелости, а не научная величина. Полезно оно тем, что даёт естественный момент для ревизии: карточка, дошедшая до зрелости, доказала свою полезность; карточка, застрявшая в переучивании полгода, — нет.

Часть 5. Арифметика нагрузки: сколько это стоит

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

Устойчивая нагрузка

Карточка с текущим интервалом I дней генерирует 1/I повторения в день. Значит, дневная нагрузка от всей колоды — сумма 1/I по всем карточкам. Из формулы сразу видны два неприятных свойства:

  • нагрузка растёт линейно с размером колоды;
  • новые карточки дороже старых в десятки раз: карточка с интервалом 2 дня стоит в 90 раз больше карточки с интервалом 180 дней.

Отсюда типичная траектория: первые две недели легко (карточек мало), к третьему месяцу дневная очередь становится больше свободного времени, и колода бросается целиком. Провал происходит не от лени, а от арифметики, которую никто не посчитал заранее.

def steady_state_reviews(deck_age_days: int, cards_per_day: int,
                         growth: float = 2.5) -> float:
    """Грубая оценка дневной очереди повторений.

    Модель: карточка добавляется, дальше интервалы растут геометрически
    (1, 6, 15, 38, 95, 238 ... дней). Каждая карточка вносит 1/I
    повторений в день на своей текущей стадии.
    Это модель, а не измерение: реальная нагрузка выше из-за провалов.
    """
    load = 0.0
    for age in range(deck_age_days):
        interval, elapsed = 1.0, 0.0
        # находим, на каком интервале карточка возрастом age
        while elapsed + interval < age:
            elapsed += interval
            interval = 6.0 if interval == 1.0 else interval * growth
        load += cards_per_day / interval
    return load


for days in (30, 90, 180, 365, 730):
    n = steady_state_reviews(days, cards_per_day=10)
    print(f"{days:>4} дн., +10 карточек/день: ~{n:5.0f} повторений/день, "
          f"~{n * 9 / 60:4.1f} мин/день")

Порядок величин из этой модели: при добавлении 10 карточек в день через год выходит примерно 40–60 повторений ежедневно, то есть 8–12 минут при девяти секундах на карточку, плюс время на новые. Прибавьте провалы — реально получится в полтора раза больше. Это модель, а не замер; полагайтесь на неё для оценки порядка, а не для планирования.

Практические следствия:

  • Лимит новых карточек — главный рычаг. Не «сколько успею», а «сколько выдержу через год». 5–10 в день — уже амбициозно для работающего инженера.
  • Целевая вероятность вспоминания дорогая. Поднять её с 0,85 до 0,95 значит примерно удвоить число повторений ради последних процентов удержания. Для рабочего знания 0,85–0,9 разумнее.
  • Удаление карточек — полноценная работа по системе. Колода без прополки превращается в долг, обслуживание которого вы платите ежедневно.

Когда карточка окупается

def payback_days(create_min: float, reviews_per_year: int,
                 review_sec: float, lookups_per_month: float,
                 lookup_sec: float) -> float:
    """За сколько дней карточка окупит своё создание и обслуживание.

    lookup_sec стоит считать не по времени набора запроса, а по полной
    цене прерывания: уход из редактора, поиск, чтение, возврат в задачу.
    Возвращает inf, если карточка не окупается никогда.
    """
    cost_per_day = (create_min * 60) / 365 + reviews_per_year * review_sec / 365
    gain_per_day = lookups_per_month * lookup_sec / 30
    if gain_per_day <= cost_per_day:
        return float("inf")
    return (create_min * 60) / (gain_per_day - cost_per_day)


# Часто нужный факт: смотрю дважды в неделю, каждый раз теряю минуту.
print(payback_days(2, 8, 9, 8, 60))     # окупается за считаные дни

# Редкий факт: смотрю раз в квартал, поиск занимает 15 секунд.
print(payback_days(2, 8, 9, 0.33, 15))  # inf — не окупается

Вывод, который стоит держать в голове: окупаются не «важные» факты, а часто нужные и дорогие в поиске. Важность и частота — разные оси, и путать их — основная ошибка при наполнении колоды.

Часть 6. Что класть в колоду инженеру

Правый верхний квадрант — то, ради чего колода вообще заводится. Правый нижний закрывается сниппетами и настройкой окружения: карточка «флаги tar» — это трата повторений на то, что решается алиасом. Левый верхний — материал для заметок и разборов, а не для карточек: устройство Raft не помещается в карточку и не должно.

Решение по конкретному факту

Как формулировать

Вожняк сформулировал набор правил в тексте 20 rules of formulating knowledge. Это не исследование, а концентрат многолетнего опыта автора SuperMemo — так к нему и стоит относиться. Из него практически ценны три правила.

Принцип минимальной информации. Одна карточка — один факт. Составные карточки проваливаются целиком из-за одного забытого куска и тянут за собой лишние повторения.

Плохо:
  В: Что такое уровни изоляции в SQL и чем они отличаются?
  О: [пять абзацев]

Хорошо:
  В: Какая аномалия возможна при READ COMMITTED, но невозможна при REPEATABLE READ?
  О: Неповторяемое чтение — один и тот же ряд, прочитанный дважды в одной
     транзакции, изменился.

  В: Какая аномалия остаётся возможной при REPEATABLE READ в стандарте SQL?
  О: Фантомное чтение — повторный запрос по условию возвращает новые строки.

Не спрашивать то, на что можно ответить узнаванием. Вопрос «Верно ли, что READ COMMITTED допускает неповторяемое чтение?» решается угадыванием с вероятностью 50%. Вопрос, требующий сформулировать ответ, — это извлечение, а «да/нет» — почти нет.

Хранить контекст. Через полгода карточка «В: Какой таймаут по умолчанию? О: 30 секунд» бессмысленна. Указывайте систему, версию и источник:

В: (Postgres 16) Значение statement_timeout по умолчанию?
О: 0 — ограничения нет.
Источник: postgresql.org/docs/16/runtime-config-client.html, добавлено 2026-03-14

Дата важна отдельно: она позволяет при ревизии выкинуть всё, что относится к версии, которой вы больше не пользуетесь.

Что в колоду не кладут

  • То, что вы делаете каждый день. Ежедневная работа сама себе интервальное повторение — с идеальным расписанием и бесплатной обратной связью. Карточка «как сделать rebase» бесполезна тому, кто ребейзит ежедневно, и бесполезна тому, кто не ребейзит вовсе.
  • Быстро устаревающее. API библиотеки, которую вы смените через год; конкретные версии; названия кнопок в интерфейсе облака. Стоимость обслуживания заплатите, знание протухнет.
  • Крупные конструкции. Архитектура сервиса, устройство алгоритма консенсуса, ход доказательства. Их место — разбор с реализацией, см. Учиться на чужом коде.
  • То, что вы не понимаете. Карточка закрепляет формулировку, а не понимание. Заучив «CAP: consistency, availability, partition tolerance — выбери два», вы получите способность произнести фразу и неспособность применить. Что значит «понимать» — глава 02.

Последний пункт — главный. Интервальное повторение поддерживает доступ к тому, что уже понято. Оно не производит понимания и не заменяет его.

Часть 7. Мифы, которые прилипли к теме

«Кривая забывания доказывает, что через сутки останется 33%.» Числа Эббингауза получены на бессмысленных слогах, на одном человеке. Форма кривой воспроизводится, конкретные проценты для осмысленного материала — нет.

«Интервалы обязаны расширяться.» Абсолютная длина промежутков важнее их роста (Karpicke & Bauernschmidt, 2011). Рост интервалов — способ уложиться в бюджет времени.

«Расписание надо подбирать под тип восприятия — визуалам показывать схемы, аудиалам проговаривать.» Концепция стилей обучения не подтверждена. Ключевая работа: Pashler, McDaniel, Rohrer & Bjork (2008), Learning Styles: Concepts and Evidence, Psychological Science in the Public Interest 9(3), 105–119. Авторы искали исследования с корректным дизайном — где людей относят к стилю, а потом случайным образом дают обучение либо «своего», либо «чужого» формата, — и нашли считаные единицы, причём результаты либо отсутствовали, либо противоречили гипотезе. Формат подачи стоит выбирать по материалу (схема для структуры, текст для рассуждения), а не по «типу» человека.

«Anki сделал меня сильным инженером.» Постов с таким сюжетом много, контролируемых данных за ними нет. Правдоподобная часть: свободное владение терминологией и семантикой снимает нагрузку с рабочей памяти. Неправдоподобная: что карточки научили проектировать. Отличать одно от другого учит трек Логика.

«10 000 часов.» К этой главе отношения не имеет, но соседствует в тех же списках советов. Это искажённый пересказ работ Эрикссона про осознанную практику; разбор — в главе 08.

«Колода = система знаний.» Соблазн превратить колоду в личную энциклопедию силён и знаком: ровно та же ловушка описана в разборе Zettelkasten — число карточек легко измеримо и приятно растёт, результат не измеряется вовсе. Колода — узкий инструмент для узкого класса знания. Внешняя память — это глава 13, и это другой инструмент.

Часть 8. Как это выглядит в рабочей неделе

Уровень 0: без всякого софта

Самый дешёвый работающий вариант. В рабочем журнале — раздел «вопросы к себе». Наткнулись на что-то новое — записали вопрос (не ответ). На недельном обзоре, о котором речь в треке по тайм-менеджменту, проходите список и отвечаете по памяти, отмечая, что не вспомнилось.

Стоит 15 минут в неделю, не требует установки, покрывает большую часть выгоды на старте. Вопросы, которые вы уверенно отвечаете три обзора подряд, вычёркиваются. Вопросы, которые не вспоминаются четвёртый раз, — кандидаты на разбор, а не на повторение.

Уровень 1: маленькая колода с жёстким лимитом

Порог входа: вы уже месяц ведёте уровень 0 и упираетесь в то, что список не масштабируется.

  • Лимит новых карточек: 5 в день, не больше. Пересматривать лимит не раньше чем через три месяца.
  • Целевая вероятность вспоминания 0,9, не выше.
  • Одна колода, без иерархии тегов. Иерархия — это обслуживание, а обслуживание — это отказ.
  • Ежеквартальная ревизия: пройтись по карточкам, проваленным больше трёх раз, и по всему, что относится к отброшенным технологиям. Удалять без сожаления.

Реалистичная нагрузка через год такой дисциплины — 20–30 повторений в день, около пяти минут. Это укладывается в дорогу или в паузу между встречами и не конкурирует за сфокусированное время, о цене которого — глава про фокус.

Уровень 2: когда колода оправдана целиком

Есть один сценарий, где интервальное повторение окупается почти безусловно: вход в новый домен с большим объёмом произвольной терминологии. Медицина, юриспруденция, финансовая предметная область, незнакомая индустрия у нового работодателя, иностранный язык. Признак: терминов много, они не выводятся из первых принципов, и без них вы не понимаете разговор.

Здесь стоит заводить 100–200 карточек за первые недели, проходить пик нагрузки сознательно и через полгода перевести колоду в режим поддержки. Про то, как встроить это в первые месяцы на новом месте, — первые 90 дней.

Куда встраивать проверки без всякой колоды

Интервальное повторение существует и без карточек — как расписание проверок на реальных задачах:

  • Через день после разбора — восстановить по памяти схему разобранной системы на бумаге, потом сверить.
  • Через неделю — объяснить решение коллеге или написать короткий комментарий в PR-обсуждении, не подглядывая.
  • Через месяц — вернуться к своему коду и предсказать, что он делает, до чтения.
  • При каждом входе в код через долгий перерыв — сначала попытка вспомнить устройство, потом чтение. Это бесплатное извлечение с идеальным интервалом, назначенным жизнью.

Последний пункт стоит отдельного внимания. Работа сама раздаёт интервалы: возвращение к сервису, который вы не трогали три месяца, — это уже спланированное повторение. Разница между «полез читать код» и «сначала попробовал вспомнить, потом полез читать» — тридцать секунд усилия и заметно разный результат.

Когда всё это не окупается

Честный список ситуаций, в которых интервальное повторение не нужно:

  • Знание нужно один раз. Разовая миграция, скрипт на выброс, чужой легаси, который вы правите и забываете. Ищите в поиске, не запоминайте.
  • Материал стремительно меняется. Экосистема, в которой релизы ломают API раз в квартал. Карточки будут устаревать быстрее, чем вызревать.
  • У вас меньше часа свободного времени в неделю. Тогда весь бюджет уходит в извлечение на рабочих задачах — это дешевле и даёт больше.
  • Вы в выгорании или на его подступах. Ежедневная очередь повторений — ещё одно обязательство, которое нельзя пропустить без штрафа. См. Выгорание.
  • Вы не понимаете материал. Повторять непонятое — это заучивать строку. Возвращайтесь к разбору.

А если рядом есть ИИ?

Возражение звучит так: зачем держать в голове семантику уровней изоляции, если ассистент напомнит за две секунды?

Ответ не в том, что «ИИ ошибается» (хотя ошибается). Он в том, что вопрос надо задать, а задать его можно, только заметив, что здесь есть проблема. Инженер, для которого «уровень изоляции» — пустое слово, не заметит, что читает данные, которые могут поменяться под ним. Он не задаст вопрос, потому что не увидит места, где вопрос уместен. Знание в голове работает не как справочник, а как детектор.

Второй эффект — цена проверки. Проверять ответ модели можно быстро, если предметная область в голове, и нельзя вовсе, если её там нет. Подробно про это — Учиться с ИИ и Зачем учиться, когда есть ИИ; про то, как модель устроена внутри, — трек ai-basics.

Но и обратное верно: наличие ассистента реально сокращает список того, что стоит держать в памяти. Точные сигнатуры, порядок аргументов, флаги, шаблонный синтаксис — это ушло в инструмент, и карточки на такое сегодня трата. Оставляйте в колоде то, что нужно до запроса: понятия, различения, инварианты, признаки проблем.

Мини-итог

  • Разнесённые во времени повторения дают лучшее долгосрочное удержание при том же суммарном времени. Это один из самых надёжных результатов психологии обучения: метаанализ Cepeda и соавторов (2006), высшая категория в обзоре Dunlosky и соавторов (2013).
  • Оптимальный промежуток зависит от того, до какого срока нужно помнить, — порядка 10–30% от него (Cepeda и соавторы, 2008). Гребень пологий: ошибаться лучше в сторону более длинного интервала.
  • Рабочая модель — сила хранения против силы извлечения (Bjork & Bjork, 1992). Ценность повторения тем выше, чем сильнее просело извлечение. Это теоретическая рамка, а не измеренный механизм.
  • Расширяющиеся интервалы не обязательны: важна абсолютная длина промежутков.
  • SM-2 — эвристика на коэффициентах, FSRS — подгонка модели памяти под ваши логи. FSRS доказанно точнее предсказывает припоминание; что он даёт больше знания при прочих равных — не проверено контролируемо.
  • Дневная нагрузка равна сумме 1/интервал по колоде: она линейна по размеру и жестока к новым карточкам. Лимит новых карточек — главный рычаг выживания системы.
  • Окупаются часто нужные и дорогие в поиске факты, а не «важные». Не окупаются: ежедневная рутина, быстро устаревающее, крупные конструкции, непонятое.
  • Всё это проверено в основном на декларативном знании. Переноса на инженерную работу как измеренного результата нет — есть правдоподобное рассуждение про разгрузку рабочей памяти. Не выдавайте его за исследование.

Источники

  • H. Ebbinghaus. Über das Gedächtnis, 1885. Репликация: J. Murre, J. Dros. Replication and Analysis of Ebbinghaus’ Forgetting Curve, PLOS ONE, 2015 — DOI: 10.1371/journal.pone.0120644
  • R. A. Bjork, E. L. Bjork. A new theory of disuse and an old theory of stimulus fluctuation, 1992 — сила хранения и сила извлечения.
  • N. J. Cepeda, H. Pashler, E. Vul, J. T. Wixted, D. Rohrer. Distributed practice in verbal recall tasks: A review and quantitative synthesis, Psychological Bulletin 132(3), 2006, 354–380.
  • N. J. Cepeda, E. Vul, D. Rohrer, J. T. Wixted, H. Pashler. Spacing effects in learning: A temporal ridgeline of optimal retention, Psychological Science 19(11), 2008, 1095–1102.
  • H. P. Bahrick, L. E. Bahrick, A. S. Bahrick, P. E. Bahrick. Maintenance of foreign language vocabulary and the spacing effect, Psychological Science 4(5), 1993, 316–321.
  • D. Rohrer, K. Taylor. The effects of overlearning and distributed practice on the retention of mathematics knowledge, Applied Cognitive Psychology 20, 2006, 1209–1224.
  • J. D. Karpicke, H. L. Roediger. Expanding retrieval practice promotes short-term retention, but equally spaced retrieval enhances long-term retention, Journal of Experimental Psychology: LMC, 2007. См. также J. D. Karpicke, A. Bauernschmidt, 2011, про приоритет абсолютных интервалов.
  • J. Dunlosky, K. A. Rawson, E. J. Marsh, M. J. Nathan, D. T. Willingham. Improving Students’ Learning With Effective Learning Techniques, Psychological Science in the Public Interest 14(1), 2013, 4–58 — DOI: 10.1177/1529100612453266
  • H. Pashler, M. McDaniel, D. Rohrer, R. Bjork. Learning Styles: Concepts and Evidence, Psychological Science in the Public Interest 9(3), 2008, 105–119 — почему стили обучения не подтверждены.
  • P. Woźniak. 20 rules of formulating knowledge — практический опыт, не исследование.
  • Документация Anki по планировщику и FSRS — docs.ankiweb.net/deck-options.html; исходники и разбор модели — github.com/open-spaced-repetition
  • Карта пробелов по вашей роли — карта карьеры портала: она показывает, какие темы вообще имеет смысл заносить в план.

Что дальше

Интервалы — это расписание. Следующая глава про то, почему сама по себе трудность припоминания является источником эффекта, и почему приёмы, делающие обучение субъективно приятнее, обычно делают его хуже.

Желательные трудности: почему лёгкое обучение хуже

Нашли неточность? Выделите фрагмент текста — рядом появится жучок.

Нужен разбор именно вашей ситуации?

Статья описывает общий случай. Если у вас частный — можно разобрать его отдельно, платно. А если не хватает целого материала, предложите тему: её оплачивают вскладчину, и она выходит открытой для всех.

Доска запросов