Цеттелькастен для разработчиков: практический метод, который работает
Создайте граф знаний разработчика.
Разработчики обычно не страдают от нехватки информации. Их проблема — в ее избытке.
Существует документация API, пулл-реквесты, инциденты на продакшене, обсуждения дизайна, заметки с встреч, диаграммы архитектуры, комментарии в коде, нити переписки в Slack, исследовательские статьи, эксперименты, закладки и недоделанные идеи, разбросанные по пяти разным инструментам. Сложная часть — не сохранение информации. Сложная часть — превращение ее в переиспользуемое знание.
Именно здесь на помощь приходит Цеттелькастен (Zettelkasten).

Цеттелькастен часто описывают как систему заметок, но это недооценивает его потенциал. При правильном использовании он является системой персонального управления знаниями для развития идей с течением времени. Для разработчиков он может стать практическим мостом между кодом, архитектурой, отладкой, обучением и написанием текстов.
Спорный момент заключается в следующем: большинство разработчиков не должны использовать Цеттелькастен как романтическое хобби для повышения продуктивности. Не стройте красивый музей заметок. Постройте работающую систему, которая помогает решать проблемы, объяснять системы и принимать более качественные инженерные решения.
Что такое Цеттелькастен?
Цеттелькастен переводится как «ящик с карточками». Этот метод ассоциируется с социологом Никласом Луманом, который использовал большую коллекцию связанных заметок для развития идей и активного письма.
Важный урок не в том, что он использовал бумажные карточки. Важный урок в том, что его заметки не были изолированными файлами. Каждая заметка содержала четкую идею, имела место в системе и ссылки на другие заметки. Со временем система становилась более ценной, так как накапливались связи.
Для разработчиков современная версия проста:
- Записывайте одну полезную идею в заметке.
- Связывайте ее со связанными заметками.
- Используйте эти ссылки для роста объяснений, решений, паттернов и статей.
Вот и все. Остальное — детали реализации.
Почему разработчики страдают от информационной перегрузки
Разработка программного обеспечения создает знания, которые одновременно детализированы и временны.
Вы узнаете, почему произошла ошибка инвалидации кэша. Вы обнаружите странный крайний случай в фреймворке. Вы сравните две стратегии очередей. Вы отлаживаете сбой на продакшене. Вы понимаете, почему легаси-сервис ведет себя странно. Вы читаете отличную статью о распределенной трассировке.
Затем, через два месяца, вы смутно помните, что когда-то знали ответ.
Обычный стек знаний разработчика усугубляет эту проблему:
- Закладки хранят источники, а не понимание.
- Папки вынуждают к ранней категоризации.
- Вики устаревают, когда за ними никто не следит.
- Списки задач смешивают задачи с идеями.
- Комментарии в коде объясняют локальные детали, а не более широкие концепции.
- Сообщения в чате исчезают в истории.
Цеттелькастен помогает, потому что рассматривает знания как сеть, а не как склад. Если такая постановка вопроса звучит знакомо из чтения о построении второго мозга, это не совпадение — оба метода атакуют одну и ту же разницу между захватом и переиспользованием, но дисциплина Цеттелькастена с его атомарными заметками и явными ссылками дает разработчикам более детальный контроль над техническими идеями.
Основные принципы Цеттелькастена
Атомарные заметки
Атомарная заметка содержит одну идею.
Не одну тему. Не резюме одной статьи. Не одну гигантскую страницу под названием «PostgreSQL». Одну идею.
Например, следующие варианты слишком широкоскопны:
Заметки по PostgreSQL
Kubernetes
Кэширование
Проектирование систем
Эти варианты ближе к атомарным:
Частичные индексы снижают накладные расходы на запись, когда запросы нацелены на небольшой подмножество
Проверки готовности в Kubernetes защищают маршрутизацию трафика, а не запуск контейнеров
Кэширование с записью сквозь (write-through) улучшает согласованность, но увеличивает задержку записи
Ключи идемпотентности превращают повторные попытки в безопасные операции
Атомарные заметки мощны, потому что их легче связывать. Огромную страницу можно связать только как размытую тему. Сфокусированную заметку можно подключить к точной концепции, решению, ошибке или системе.
Хорошая заметка разработчика обычно должна отвечать на один из этих вопросов:
- В чем суть идеи?
- Когда она имеет значение?
- Какой компромисс она выявляет?
- Где я видел это в реальном коде?
- С какой другой концепцией она связана?
Связывание
Ссылки — это сердце системы.
Цель не в том, чтобы создать красивый граф. Цель — сделать идеи переиспользуемыми.
Когда вы пишете заметку о ключах идемпотентности, связывайте ее с заметками о повторных попытках, распределенных системах, обработке платежей, очередях сообщений, дизайне API и предотвращении инцидентов. Когда вы пишете заметку о миграциях базы данных, связывайте ее с безопасностью развертывания, стратегией отката, обратной совместимостью и флагами функций.
Ссылка обычно должна означать одно из следующего:
- «Это объясняет ту же концепцию с другой точки зрения».
- «Это практический пример идеи».
- «Это компромисс или контраргумент».
- «Эта концепция зависит от той концепции».
- «Эта заметка входит в более крупный аргумент».
Избегайте ленивых ссылок. Связывание каждой заметки с каждой другой создает шум. Лучшие ссылки — намеренные.
Эмерджентность (возникновение)
Эмерджентность — та часть Цеттелькастена, которая звучит мистически, но она практична.
Вам не нужно проектировать идеальную структуру заранее. Вы добавляете полезные заметки, честно связываете их и позволяете кластерам появляться со временем.
Через несколько месяцев вы можете заметить, что многие заметки связаны вокруг таких тем, как:
- Надежность API
- Наблюдаемость (Observability)
- Опыт разработчика
- Архитектура, управляемая событиями
- Производительность базы данных
- Технический долг
- Документация
- Обзоры безопасности
Эти кластеры становятся будущими статьями, внутренней документацией, принципами дизайна, докладами на конференциях, материалами для онбординга или более качественными инженерными решениями.
Вот почему Цеттелькастен отличается от иерархии папок. Папки заставляют вас решать, куда относится знание, прежде чем вы полностью его поймете. Ссылки позволяют знанию принадлежать к нескольким контекстам.
Адаптация Цеттелькастена для разработчиков
Классические советы по Цеттелькастену часто исходят из академического письма — литература по персональному управлению знаниями хорошо охватывает эту традицию. Разработчикам нужна немного другая версия.
Цеттелькастен разработчика должен соединять три вещи:
- Концепции
- Код
- Системы
Концепции
Концептуальные заметки объясняют переиспользуемые идеи.
Примеры:
Обратное давление (backpressure) предотвращает перегрузку медленных потребителей быстрыми производителями
Оптимистичная блокировка обнаруживает конфликтующие записи без блокировки читателей
Предохранители (circuit breakers) защищают зависимости от повторяющихся ошибочных вызовов
Эти заметки должны быть написаны вашими собственными словами. Копирования документации недостаточно. Ценность заключается в том, чтобы заставить себя четко объяснить концепцию.
Полезная концептуальная заметка может включать:
- Краткое объяснение
- Конкретный пример
- Компромисс
- Ссылку на связанный паттерн
- Ссылку на реальную систему, где вы ее использовали
Код
Заметки о коде фиксируют практические знания о реализации.
Это не случайные сбросы фрагментов кода. Фрагмент полезен только тогда, когда он объясняет решение или паттерн.
Например:
## Обработка идемпотентных запросов с использованием ограничения базы данных
Наиболее безопасная реализация — это уникальное ограничение на ключ идемпотентности.
Приложение может безопасно повторять попытку, поскольку дублирующие запросы разрешаются к одному
и тому же сохраненному результату, а не создают второй побочный эффект.
Связано:
- [[Повторные попытки требуют идемпотентных операций]]
- [[Ограничения базы данных — это контроль конкурентности]]
- [[API платежей должны рассматривать сетевой сбой как неизвестный результат]]
Хорошие заметки о коде объясняют, почему код работает, когда его использовать и что может пойти не так.
Системы
Системные заметки связывают абстрактные идеи с вашей реальной архитектурой.
Например:
Сервис биллинга использует ключи идемпотентности, потому что вызовы провайдера платежей могут
успешно завершиться даже при таймауте нашего HTTP-клиента.
Эта заметка может ссылаться на:
Ключи идемпотентности превращают повторные попытки в безопасные операции
Таймауты не доказывают сбой
API платежей должны моделировать неизвестные результаты
Паттерн Outbox отделяет записи в базе данных от внешних побочных эффектов
Здесь Цеттелькастен становится ценным для старшей инженерной работы. Он помогает вам создать память о том, почему системы имеют такую форму.
Практический рабочий процесс
Шаг 1: Захват fleeting (временных) заметок
Fleeting note — это грубый захват. Ему не нужно быть отполированным.
Примеры:
Разобраться, почему проверка готовности (readiness probe) провалилась во время деплоя.
Возможно, повторные попытки усугубили ошибку дублирования счета.
Хорошая цитата из обзора инцидента: таймаут — это не сбой.
Исследование: частичный индекс Postgres только для активных строк.
Используйте все, что быстрее всего: ежедневную заметку в Obsidian, журнал Logseq, текстовый файл, заметки на телефоне или черновой буфер.
Правило простое: захватывайте быстро, обрабатывайте позже.
Шаг 2: Обработка заметок в постоянные (permanent) заметки
Здесь проявляется ценность.
Превращайте грубые заметки в четкие, переиспользуемые заметки. Переписывайте своими словами. Дайте каждой заметке заголовок, который формулирует идею.
Плохой заголовок:
Повторные попытки
Лучший заголовок:
Повторные попытки безопасны только тогда, когда операция идемпотентна
Плохая заметка:
Нужна идемпотентность для повторных попыток.
Лучшая заметка:
Повторные попытки могут превратить временную сетевую проблему в дублирующие побочные эффекты.
Повторная попытка безопасна только тогда, когда операция может выполняться более одного раза и все равно
приводить к одному и тому же бизнес-результату. Для API это часто требует
ключа идемпотентности, уникального ограничения или сохраненного результата запроса.
Шаг 3: Добавление ссылок, пока контекст свеж
После написания заметки спросите себя:
- Что это объясняет?
- От чего это зависит?
- Где я видел это в коде?
- Какова противоположная точка зрения?
- Какая система выиграет от этого?
Добавляйте только те ссылки, которые помогут вам в будущем думать.
Шаг 4: Создание индексов или карт контента
Как только кластер растет, создайте индексную заметку.
Например:
# Надежность API
## Основные идеи
- [[Повторные попытки безопасны только тогда, когда операция идемпотентна]]
- [[Таймауты не доказывают сбой]]
- [[Предохранители снижают нагрузку на зависающие зависимости]]
- [[Лимиты скорости защищают общие ресурсы]]
## Паттерны реализации
- [[Ключи идемпотентности превращают повторные попытки в безопасные операции]]
- [[Паттерн Outbox отделяет персистентность от доставки]]
- [[Очерти отравленных сообщений сохраняют неудачные сообщения для инспекции]]
## Примеры систем
- [[Дизайн повторных попыток платежа в сервисе биллинга]]
- [[Обработка сбоев доставки вебхуков]]
Это дает вам навигацию, не заставляя все суетить в папки.
Шаг 5: Использование заметок для создания вывода
Цеттелькастен должен производить что-то.
Для разработчиков вывод может быть:
- Записями архитектурных решений
- Документами по дизайну
- Постами в блоге
- Руководствами по отладке
- Документацией по онбордингу
- Объяснениями пулл-реквестов
- Внутренними докладами
- Планами рефакторинга
- Инсайтами из обзоров инцидентов
Если ваши заметки никогда не влияют на вашу работу, система слишком декоративна.
Рекомендуемые типы заметок для разработчиков
Временные заметки (Fleeting Notes)
Временные заметки для быстрого захвата.
Используйте их для:
- Идей во время кодирования
- Наблюдений при отладке
- Фрагментов с встреч
- Вопросов
- Закладок для последующей обработки
Удаляйте или конвертируйте их быстро. Не позволяйте им превращаться в болото.
Литературные заметки (Literature Notes)
Заметки об внешних источниках.
Для разработчика источник может быть:
- Документация
- Статья в блоге
- RFC
- Исходный код
- Доклад на конференции
- Issue на GitHub
- Постмортем
- Глава из книги
Храните заметки об источниках отдельно от своих постоянных заметок. Заметка об источнике говорит: «Этот источник сказал это». Постоянная заметка говорит: «Я понимаю эту идею вот так».
Постоянные заметки (Permanent Notes)
Это ядро Цеттелькастена.
Постоянная заметка должна быть:
- Атомарной
- Написанной вашими собственными словами
- Связанной с другими заметками
- Полезной без необходимости обращения к исходному источнику
- Достаточно стабильной, чтобы возвращаться к ней позже
Проектные заметки
Проектные заметки допускаются, но не путайте их с постоянными заметками.
Проектная заметка может быть:
Мигрировать воркер биллинга в очередь v2
Она может ссылаться на постоянные заметки, такие как:
Обратное давление предотвращает коллапс потребителей очередей
Паттерн Outbox отделяет персистентность от доставки
Флаги функций снижают риск развертывания
Проекты заканчиваются. Концепции остаются.
Примеры инструментов
Obsidian
Obsidian хорошо подходит для Цеттелькастена разработчика, потому что он использует локальные файлы Markdown и поддерживает внутренние ссылки.
Простая структура Obsidian:
notes/
fleeting/
sources/
permanent/
maps/
projects/
Пример заметки:
# Таймауты не доказывают сбой
Таймаут означает, что клиент перестал ждать. Это не доказывает, что сервер сбился.
Операция могла завершиться успешно, провалиться или все еще выполняться.
Это важно для API платежей, очередей задач и любых внешних побочных эффектов.
Связано:
- [[Повторные попытки безопасны только тогда, когда операция идемпотентна]]
- [[Ключи идемпотентности превращают повторные попытки в безопасные операции]]
- [[Внешние побочные эффекты нуждаются в согласовании]]
Obsidian подходит, если вам нравится владение файлами, чистый текст и рабочий процесс, похожий на редактор.
Logseq
Logseq полезен, если вы предпочитаете структурирование, ежедневные журналы и блочные ссылки.
Его блочная модель хорошо работает для захвата небольших единиц мышления. Вы можете писать грубые заметки в журнале, а затем продвигать полезные блоки в постоянные заметки.
Пример рабочего процесса в стиле Logseq:
- Таймаут во время запроса платежа не доказывает сбой платежа.
- Это должно стать постоянной заметкой об неизвестных результатах.
- Связано: [[Идемпотентность]], [[Повторные попытки]], [[API платежей]]
Logseq подходит, если ваше мышление начинается со структурирования и вам нравятся блочные ссылки. Для сравнения этих двух инструментов бок о бок по стилю рабочего процесса, вариантам синхронизации и экосистемам плагинов, Obsidian против Logseq четко отображает компромиссы.
Чистый Markdown и Git
Вам не нужно специальное приложение.
Репозитория Git с файлами Markdown может быть достаточно:
knowledge/
permanent/
sources/
maps/
Используйте обычные ссылки Markdown:
[Повторные попытки безопасны только тогда, когда операции идемпотентны](../permanent/retries-safe-only-with-idempotency.md)
Этот подход скучен, долговечен и дружелюбен к разработчикам. Это комплимент.
Именование заметок
Отдавайте предпочтения заголовкам, которые делают утверждения.
Слабые заголовки:
Кэширование
Очереди
OAuth
Индексы PostgreSQL
Сильные заголовки:
Инвалидация кэша — это проблема координации
Очереди скрывают задержку, но не убирают работу
Токены доступа OAuth должны иметь короткий срок жизни
Частичные индексы полезны, когда запросы нацелены на подмножество
Заголовок, основанный на утверждении, делает заметку легче для понимания и легче для связывания.
Что поместить в Цеттелькастен разработчика
Хорошие кандидаты:
- Принципы архитектуры
- Уроки отладки
- Инсайты из инцидентов на продакшене
- Правила дизайна API
- Паттерны баз данных
- Предположения о безопасности
- Компромиссы производительности
- Крайние случаи фреймворков
- эвристики рефакторинга
- Стратегии тестирования
- Уроки развертывания
- Паттерны ревью кода
Плохие кандидаты:
- Сырые транскрипты встреч
- Необработанные закладки
- Огромные скопированные страницы документации
- Случайные фрагменты без объяснений
- Списки задач
- Секреты
- Учетные данные
- Все, что должно находиться только в официальной документации компании
Персональный Цеттелькастен может ссылаться на работу, но не должен становиться небезопасной теневой копией приватных систем.
Общие ошибки
Ошибка 1: Чрезмерная структурирование слишком рано
Разработчикам нравится структура. Иногда это проблема.
Не тратьте первую неделю на проектирование папок, тегов, шаблонов, соглашений об именовании, дашбордов и автоматизации. Вы еще не знаете, какая структура нужна вашим заметкам.
Начните с небольшого количества типов заметок:
fleeting
sources
permanent
maps
projects
Позвольте сложности заслужить свое место.
Ошибка 2: Отношение к нему как к папкам
Цеттелькастен — это не лучшая файловая система.
Если каждая заметка принадлежит ровно одной папке и не имеет значимых ссылок, вы построили архивный шкаф. Это может быть полезно, но это не Цеттелькастен.
Ценность исходит от связей:
Повторные попытки API -> идемпотентность -> ограничения базы данных -> безопасность платежей -> предотвращение инцидентов
Эта цепочка полезнее, чем папка под названием «Бэкенд».
Ошибка 3: Сохранение вместо мышления
Копирование — это не обучение.
Сохраненный абзац из документации может помочь позже, но переписанное объяснение помогает сейчас. Действие по повторному формулированию идеи своими словами — вот где понимание улучшается.
Хорошее правило:
Не создавайте постоянную заметку, пока не сможете объяснить идею без копирования.
Ошибка 4: Связывание всего
Слишком много ссылок так же плохо, как и слишком мало.
Не связывайте слова просто потому, что они существуют. Связывайте идеи, потому что отношения имеют значение.
Полезная ссылка должна помочь будущему вам ответить:
Почему это связано?
Ошибка 5: Путаница тегов со структурой
Теги полезны для статуса и широкой группировки:
#todo
#source
#security
#draft
Но теги не должны нести всю систему. Если вы полагаетесь только на теги, вы теряете более богатое значение прямых ссылок.
Ссылка говорит:
Эта идея связана с той идеей определенным образом.
Тег обычно говорит:
Это принадлежит к широкой категории.
Оба полезны. Они не одно и то же.
Ошибка 6: Никогда не производя вывод
Цеттелькастен, который никогда не производит вывод, становится приватным архивом.
Вывод не обязательно означает публичное письмо. Это может быть документ по дизайну, обзор инцидента, лучший пулл-реквест или четкое объяснение коллеге.
Система должна облегчать переиспользование вашего мышления.
Минимальный шаблон
Используйте небольшой шаблон. Сопротивляйтесь желанию создать форму с пятнадцатью полями.
# Заголовок как утверждение
## Идея
Объясните идею своими словами.
## Почему это важно
Опишите практическое влияние.
## Пример
Покажите пример кода, системы или отладки.
## Компромиссы
Упомяните ограничения, риски или контраргументы.
## Ссылки
- [[Связанная заметка]]
- [[Другая связанная заметка]]
Для многих заметок даже этого слишком много. Заголовка, одного абзаца и трех ссылок может быть достаточно.
Пример: от бага к заметкам Цеттелькастена
Представьте, что вы исправили баг, при котором пользователи списывались дважды после таймаута.
Слабая заметка была бы:
Баг с платежами - повторные попытки вызвали дублирование списания.
Более сильный набор заметок мог бы быть:
Таймауты не доказывают сбой
Повторные попытки безопасны только тогда, когда операция идемпотентна
Ключи идемпотентности превращают повторные попытки в безопасные операции
API платежей должны моделировать неизвестные результаты
Ограничения базы данных — это контроль конкурентности
Теперь баг превратился в переиспользуемые инженерные знания.
Позже эти заметки могут поддерживать:
- Постмортем
- Документ по дизайну для повторных попыток платежей
- Пост в блоге об идемпотентности
- Чек-лист для интеграций с внешними API
- Комментарий к ревью кода
- Более безопасную реализацию
Вот практическая ценность Цеттелькастена.
Еженедельный процесс обслуживания
Вам не нужен сложный процесс обзора.
Раз в неделю:
- Обрабатывайте грубые заметки.
- Удаляйте заметки, которые больше не имеют значения.
- Конвертируйте полезные идеи в постоянные заметки.
- Добавляйте недостающие ссылки.
- Продвигайте кластеры в заметки-карты.
- Выберите одну заметку и превратите ее в вывод.
Держите это легким. Система должна поддерживать разработку, а не конкурировать с ней.
Практические правила
Используйте эти правила, чтобы поддерживать систему в здоровом состоянии:
- Одна идея на заметку.
- Пишите заголовки как утверждения.
- Предпочитайте ссылки папкам.
- Храните заметки об источниках отдельно от своих идей.
- Связывайте заметки с реальным кодом и реальными системами.
- Создавайте заметки-карты только тогда, когда существует кластер.
- Удаляйте заметки с низкой ценностью.
- Не автоматизируйте, пока не поймете свой рабочий процесс.
- Используйте систему для производства чего-то.
Когда Цеттелькастен не стоит того
Цеттелькастен — не ответ на каждую проблему.
Это может быть избыточно, если:
- Вам нужен только менеджер задач.
- Вы редко возвращаетесь к техническим идеям.
- Вы не пишете, не преподавайте, не проектируете и не документируете.
- Ваши заметки в основном состоят из краткосрочных деталей проекта.
- Вы используете его, чтобы избежать фактической работы.
Он наиболее полезен, когда ваша работа зависит от накопления понимания.
Это включает старшую инженерию, архитектуру, техническое лидерство, отладку сложных систем, письмо, консалтинг, исследования и глубокое обучение на протяжении многих лет.
Финальные мысли
Для разработчиков Цеттелькастен — это не о сборе заметок. Это о создании среды для мышления.
Метод работает лучше всего, когда остается практичным: атомарные заметки, значимые ссылки, реальные примеры и регулярный вывод. Связывайте концепции с кодом. Связывайте код с системами. Связывайте системы с решениями.
Не пытайтесь построить идеальный второй мозг. Постройте полезный.
Хороший Цеттелькастен разработчика должен помочь вам задавать лучшие вопросы:
Где я видел эту проблему раньше?
Какая концепция объясняет этот баг?
Какой компромисс мы делаем?
Какой паттерн применим здесь?
Что мне стоит записать, чтобы не переучивать это снова?
Этого достаточно.