Недавно в комментариях к тексту про построение личной базы знаний на Хабре читатель отметил, что в таких статьях не хватает примеров работы с техническими данными. Давайте это исправим. Мы спросили у инженеров YADRO и технарей из сообщества «Цеттелькастен и Персональные базы знаний», как и для чего они ведут свои заметки. Герои статьи используют Obsidian и Emacs, а также личные Telegram-каналы, чтобы изучать новые языки программирования, проходить технические собеседования и вести рабочие записи.
Для тех, кто пока не знаком с методом социолога Никласа Лумана, в начале статьи рассказали об истории Цеттелькастена и показали, как выглядело хранилище данных полвека назад. Короб с ящиками и карточками стал прототипом современных систем для ведения заметок, которыми пользуются инженеры.
![А вот и тот комментарий, благодаря которому мы решили опубликовать этот текст А вот и тот комментарий, благодаря которому мы решили опубликовать этот текст](https://habrastorage.org/getpro/habr/upload_files/d6e/c3f/e5b/d6ec3fe5b61dc133e53bf9735ee4b2e6.png)
Как появился Цеттелькастен и в чем его суть
В середине XX века социолог Никлас Луман разработал метод организации информации Цеттелькастен (Zettelkasten). Занимаясь наукой, Луман создавал множество заметок, о значении которых вскоре забывал. Чтобы не терять полезные знания, он начал вести картотеку. Идея такого хранилища не была новой: начиная с XIV века ученые и исследователи по всему миру пытались систематизировать информацию единственным доступным способом — вели бумажную документацию. Но только Никласу Луману удалось превратить ящик с бумагами в рабочий инструмент. Он описал Цеттелькастен в эссе "Kommunikation mit Zettelkästen", вышедшем в исследовании теории систем, — так метод стал популярным.
Название метода состоит из двух немецких слов, которые переводятся как «карточка» и «чемодан» и дословно описывают способ хранения Лумана. Ученый заводил карточку под одну мысль и помещал ее в ящик, где находились другие связанные с ней карточки. Для записей он выбирал листы обычной бумаги формата А6 — они тоньше, чем специальные каталожные карты, и занимали меньше места.
![Картотека Никласа Лумана, хранится в Билефелдском университете, где преподавал ученый Картотека Никласа Лумана, хранится в Билефелдском университете, где преподавал ученый](https://habrastorage.org/getpro/habr/upload_files/eb1/8a4/851/eb18a4851e8a055153530d7fca9a4027.png)
Карточки не работали бы без системы нумерации и ссылок, которая помогала быстрее в них ориентироваться. У каждой заметки был номер: первая цифра — номер темы, вторая — номер заметки. Если Луману нужно было дополнить заметку, он добавлял к названию новой карточки букву. В итоге получается уникальный код, который вы видите на картинке: 9 — номер темы, 8 — номер заметки, j — обозначение дополнительной карточки.
![Одна из карточек Лумана Одна из карточек Лумана](https://habrastorage.org/getpro/habr/upload_files/f44/038/a30/f44038a30193de91155811ae25358278.png)
В начале каждой крупной темы — например, новой научной статьи — ученый писал карточку с важными подтемами и помечал их заглавными буквами. С них начинался код карточки внутри большой темы. Внутри такой системы номер карточки мог выглядеть так: А (подтема) / 1 (номер темы заметки) / а (дополнение).
Так выстраивалась древовидная структура, похожая на устройство современных облачных инструментов для ведения заметок.
![Карточка-содержание с буквами для подтем Карточка-содержание с буквами для подтем](https://habrastorage.org/getpro/habr/upload_files/72f/940/488/72f940488f820e1f1b70bdc494ca9597.png)
Онлайн-инструменты, использующие метод
Логика, по которой Никлас Луман собирал и хранил информацию, легла в основу современных инструментов для организации данных: Obsidian, Notion, Org-mode (Emacs) и других. Сам инструмент — это шкаф, корневые папки — ящики, в который пользователь «складывает» страницы, заменившие карточки. Если бы ученый посмотрел на программы управления данными, он бы удивился, насколько их устройство похоже на устройство Цеттелькастена. Инструменты помогают распределить данные в древовидную систему с четкой иерархией и простым управлением. Пользователь может перемещать заметки, собирать их в группы и организовывать необходимую логику вложенности элементов.
Программы, вдохновленные методом, активно используют как в корпоративных, так и в личных целях — в компаниях ведут базы знаний, а рядовые пользователи составляют в них конспекты, когда читают книги или проходят обучающие курсы. В практическом применении Цеттелькастена много нюансов, поэтому мы попросили активных пользователей метода поделиться опытом. О поиске решения для хранения данных и задачах, в которых оно помогает, рассказали инженеры и программисты.
Как инженеры применяют Цеттелькастен на практике
«Уровень подготовки должен быть ненулевым»
Дмитрий Зверев
Go-разработчик в департаменте объектных хранилищ, пишет API для TATLIN.OBJECT и ведет заметки в Obsidian
Я использую Obsidian — самый близкий к Цеттелькастену инструмент — для изучения новых языков программирования уже год. До Obsidian пользовался Notion, но у этой программы есть значительный минус: когда сущностей становится слишком много, инструмент загружается медленно и с трудом открывает новые страницы. Когда мои заметки перестали влезать в Notion, я начал искать новый метод хранения данных и наткнулся на обсуждение программы Obsidian в чате Gopher Club. Заинтересовался методом, по которому работает сервис, прочитал несколько статей на Хабре про Цеттелькастен и решил переносить данные из Notion в новое пространство. За год в моей коллекции накопились заметки по двум языкам: Go и Python.
С каждой большой темой я работаю по одному и тому же сценарию. В первую очередь читаю входную документацию по языку, например, A Tour of Go. Для каждого языка завожу отдельную папку, внутри которой собираю информацию в группы-фонемы — они формируют верхнеуровневую структуру файлов внутри папки для языка. Набор групп необязательно соответствует оглавлению в источниках — составляю его так, как удобно мне.
![Верхнеуровневая структура заметок для языка Go Верхнеуровневая структура заметок для языка Go](https://habrastorage.org/getpro/habr/upload_files/7d5/2de/23c/7d52de23c8fe8f29ff5459975eeb1581.png)
Внутри верхнеуровневой группы я пишу большой конспект, а потом делю его на отдельные документы. Один документ — одна подгруппа. На примере видно, что в группе Data structures я завел подгруппы Array, Map и Slice. По каждой из них ищу информацию и в процессе чтения записываю в соответствующий документ.
![Подгруппы Подгруппы](https://habrastorage.org/getpro/habr/upload_files/2c8/8ac/770/2c88ac770778a85d09b6bf6612d12683.png)
У каждого из объектов в языках программирования есть специфическое поведение, о котором нужно знать. Например, структура данных Map в Go содержит понятие «эвакуация данных». Каждое из таких понятий — отличный кандидат на микрозаметку, как в Цеттелькастене.
![Микрозаметка о Map evacuation в системе Дмитрия Микрозаметка о Map evacuation в системе Дмитрия](https://habrastorage.org/getpro/habr/upload_files/754/3da/47c/7543da47cc2a719b3d9f19f37cc9c749.png)
Помимо ключевой мысли, у каждого документа есть теги, которые связывает его с другими заметками. При помощи тегов Obsidian позволяет строить граф, на котором стрелками показано, что с чем связано. Это довольно неплохо визуализирует связи и выстраивает систему в голове.
![Все заметки Дмитрия в виде графа Все заметки Дмитрия в виде графа](https://habrastorage.org/getpro/habr/upload_files/c46/437/b42/c46437b42d0fa995e2b2879550511dbb.png)
На этом графе видно, что функция range в языке Go работает для 4 объектов (slice, map, channel, array), а применить ее можно только с циклом for. Для меня эта связь была неочевидной, пока я не визуализировал информацию в программе.
Когда я сформировал крепкую техническую базу по языку, я иду на собеседование. В моем случае интервью — инструмент для верификации знаний. На собеседовании я сопоставляю вопросы интервьюера с моими записями: могу ли я ответить на вопрос, руководствуясь информацией в заметке? Если не могу, значит, нужно реструктурировать существующие данные или добавить новые.
В итоге набор заметок по языку превращается в теоретический справочник, который можно использовать как ультимативный набор вопросов для изучения языка и подготовки к интервью.
Думаю, Obsidian подойдет любому, кто хочет изучить новую дисциплину при одном условии: уровень подготовки должен быть ненулевым. Если вы совсем не знакомы с темой, есть риск неправильно разделить информацию на группы и запутаться еще больше. Перед тем, как начать вести заметки, советую пройти базовый курс или позаниматься с ментором по интересующей теме. Кому точно могу посоветовать инструмент:
тем, кто привык работать на десктопе и не нуждается в постоянном доступе к заметкам — у Obsidian неудобное мобильное приложение,
тем, кто устал от проблем с Notion и хочет пользоваться более быстрым сервисом,
тем, кому нужен инструмент с поддержкой офлайн-режима,
тем, кто готов кропотливо собирать заметки и обновлять данные.
Я актуализирую информацию после собеседований или когда выходит новая версия языка. За год использования Obsidian я не успел перенести все заметки из Notion — это долгая работа, но результат того стоит: возвращаюсь к записям каждый раз, когда хочу освежить знания, а в голове уже выстроилась система, которая помогает запомнить сложную информацию.
«IDE созданы для кода, для всего остального есть Obsidian»
Наталья Сагель
Инженер-программист и участник Zettelkasten-сообщества. Разрабатывает модули телефонии для Asterisk, Maxim Technology. Пишет на Scala и Java. Изучает Kotlin с помощью системы заметок
Полностью повторить базу Лумана невозможно и отчасти даже вредно. В наш цифровой век достаточно различных инструментов для структуризации информации, помимо реальных бумажных карточек. В ходе долгих обсуждений в нашем чате мы пришли к тому, что система Лумана может стать хорошей опорой, на основных принципах которой можно создать что-то уникальное. Именно поэтому я не пытаюсь называть свою систему Цеттелькастеном.
![Все заметки Натальи в виде графа Все заметки Натальи в виде графа](https://habrastorage.org/getpro/habr/upload_files/101/163/0ec/1011630ecf0210877a442c76ff654dc8.png)
Я активно пользуюсь методом 3 года, а если считать первые попытки — почти 7 лет. Свою базу знаний я веду в Obsidian, эта программа работает поверх обычных markdown-файлов. У системы огромное сообщество, которое пишет плагины. Можно создать из Obsidian инструмент «для всего», а можно просто вести заметки. Главные плюсы Obsidian:
Все файлы лежат локально. Нет привязки к сети и принудительной синхронизации на чужих серверах.
Удобный полнотекстовый поиск.
Возможность кастомизации (чем практически не пользуюсь).
При добавлении плагина Excallidraw можно рисовать прямо внутри Obsidian. Удобно делать наброски в ходе обсуждения задачи.
Мелкие преимущества: граф, обратные ссылки, подсветка кода, ссылки внутри страниц, отображение картинок и таблиц.
С появлением системы заметок моя жизнь стала интереснее и в то же время проще. На ведение собственной базы поначалу тратится много времени, но затем оно возвращается удобным поиском и отсутствием необходимости лишний раз залезать в поисковик. Стало проще работать. Искать источники проблем в коде, исследовать новые библиотеки, фреймворки и языки, описывать саму систему. Я стала чаще писать и делиться своими знаниями с другими. Различные идеи пет-проектов не потерялись, а превратились в заметки и реальный код.
«Каноничный» Цеттелькастен использует специальные индексы, я же немного приспособила систему под себя. Стараюсь писать осмысленные названия заметок с различными ключевыми словами. Все заметки у меня разделены на папки-сферы:
Inbox — сюда попадают все новые заметки.
Simple — различные заметки о жизни. Вырезки из книг, рецепты и тому подобное.
Work — рабочие записи и схемы.
Edu — конспекты, а также планы обучения. Сюда же попадает вся выделенная информация из профессиональной литературы.
Knowledge — небольшие короткие заметки, похожие на Цеттелькастен.
![Заметка из категории Knowledge Заметка из категории Knowledge](https://habrastorage.org/getpro/habr/upload_files/a76/f56/acd/a76f56acd5188dd9ad819dbadd91b7d8.png)
В моей базе собрана вся моя жизнь. Здесь информация о прочитанном и просмотренном, рабочие заметки, ежедневные заметки и различные конспекты, которые я пишу в ходе самообучения. Здесь же я размышляю обо всем, что меня волнует.
Небольшой совет для всех инженеров: ведите заметки, и вам станет намного проще передавать информацию другим.
Раз в неделю я разбираю инбокс и распределяю заметки по их назначению. Какие-то выкидываю, какие-то дополняю. Иногда попадается новая информация для старых заметок, которые получают апдейт.
Программа запущена всегда. Все длинные сообщения, все полезные мысли, возникшие в ходе митингов, полезные ссылки, размышления, все сразу улетает в базу. Каждый раз, когда я что-то ищу, то начинаю поиск с нее и лишь затем иду в Google.
«Человеческий мозг ненадежен»
Станислав Богатырёв
Эксперт по разработке ПО в YADRO. Много лет собирает базу знаний по методу Лумана
Я веду заметки больше 12 лет: сначала моя база знаний была лишь похожа на Цеттелькастен, затем я изучил вопрос по блогу SachaChua и стал менять систему в сторону метода Лумана. База знаний развивалась вместе с инструментами в программе Emacs.
Изначальное требование держать все данные в простом текстовом формате или чем-то стандартном, избегая закрытого проприетарного ПО, доказало свою правильность уже в первые несколько лет. Я понемногу адаптирую процесс под меняющиеся обстоятельства: могу по своему усмотрению выкидывать какие-то части метода или внедрять свои улучшения.
Стало проще в разговорах с другими людьми объяснять, как я работаю с личным хранилищем информации. Моя система еще далека от завершения. В итоге хочется добиться пригодной для практического каждодневного применения реализации концепции Memex.
Я советую вести базу знаний всем, кто хоть как-то работает с информацией. Человеческий мозг ненадежен, и без внешнего носителя сложно анализировать накопившиеся знания, находить дефекты и ошибки восприятия, усиливать мыслительные возможности.
«Нужно представить, как я в будущем пользуюсь заметкой»
Сергей Васильев
Инженер в сфере космических технологий. Занимается электрическими испытаниями, использует систему заметок для работы и самообразования и ведет канал, где делится опытом работы с Obsidian.
Я использую подходы, описанные Никласом Луманом, около года. Соглашусь с коллегами: почти никто не реализует Цеттелькастен в чистом виде, но многие, как и я, ведут заметки в специальных программах. Раньше собирал заметки в Evernote, но у этого инструмента гораздо меньше опций, чем в Obsidian.
В Obsidian встроена отслеживаемая самой программой система связей между заметками. Но главное, что там можно представить эту систему связи в виде графа. А сам граф связей можно динамически настраивать для отображения разными способами (цветами, направлением и глубиной связей).
Свою базу знаний я использую для самообразования и ведения протоколов испытаний на работе. Мое главное правило в ведении карточек — полный отказ от нумерации. В цифровой базе знаний название карточки должно быть осмысленным, чтобы проще было искать нужный материал.
Технически это обеспечивается ссылками, хештегами, тремя шаблонами, двумя плагинами (форматирование текста, контекстное меню изображений). В самой системе надо определиться с видами структур заметок (то есть в каком случае заметка — это продолжение предыдущей, в каком — отдельная самостоятельная заметка).
Моя система содержит кучи цепочек, в которых я неплохо ориентируюсь. Но создание карточки занимает 90% времени от освоения материала. Нужно представить, как в будущем я воспользуюсь информацией, какие связи сделать с другими карточками.
Сейчас я веду одновременно два хранилища и планирую создать еще несколько. На своем опыте пришел к тому, что должно быть два типа хранилищ для двух стилей заметок:
Обычный повседневный стиль для ведения проектов и завала из последовательностей заметок. Здесь я допускаю атомарность мышления и «зоопарк тематик» в одном общем хранилище, содержащем не связанные между собой заметки.
![Вот так выглядит главная страница первого хранилища Вот так выглядит главная страница первого хранилища](https://habrastorage.org/getpro/habr/upload_files/a05/751/a8e/a05751a8ecf02d1493d400c99cd5177b.jpeg)
Выверенный стиль для систематизации свойств технического средства или тематики с отсутствием привязки к проектам и одновременно с принципиальным отсутствием несвязанных заметок. В таком стиле одна тема должна соответствовать одному хранилищу, тем самым не загрязняя развернутую информацию.
![А это главная страница второго хранилища А это главная страница второго хранилища](https://habrastorage.org/getpro/habr/upload_files/550/ead/15d/550ead15d466ecab26e8194058fa05b2.jpeg)
За время работы с базой знаний я понял: когда в твоих руках есть разработанная система ведения заметок, процесс адаптации к разным ситуациям облегчается. Так как требуется сосредоточить усилия только в одном направлении — определить концепцию архитектуры. Самое главное при этом осознавать, что универсального решения, скорее всего, не найти. И следить за тем, чтобы совершенствование архитектуры не было бесконечным процессом. Лучше сделать новую адаптацию для следующей подобной ситуации, чем пытаться исправить ошибки существующей архитектуры.
Ведете ли вы личную базу знаний? Если да, расскажите в комментариях, в какой программе вы это делаете и какие заметки хранятся в вашем «ящике».
Комментарии (24)
itGuevara
13.08.2024 10:11Есть ли Zettelkasten с поддержкой Linked Data? т.е. где используется не просто "ссылка", а типизированная ссылка (предикат) между объектами. Инструменты ведения классификации, таксономии и т.п. Что то простое (obsidian, joplin, logseq) для хранения знаний, но с поддержкой RDF.
pavel_trofimov
13.08.2024 10:11+5Использование термина "цеттелькастен" для описания любых систем заметок на основе ссылок может искажать оригинальную идею Лумана. Его система была более сложной и специфичной, чем просто коллекция связанных заметок.
johhy13
13.08.2024 10:11+1Спасибо, интересно. Давно уже присматриваюсь к такому инструменту и примеров надо поболее как это применять в прикладном поле
dyadyaSerezha
13.08.2024 10:11Космическая отрасль... Секретность, все дела.. И сотруднику позволяют поставить на рабочий комп какой-то "левый" Обсидиан? Странно. К сожалению, правила безопасности являются основной проблемой для таких заметок во многих больших и строгих корпорациях - в интернет заметки по работе складывать нельзя и ставить сторонний софт на комп тоже нельзя. Что остаётся? Какой-нибудь Confluence или его аналог.
И кстати, как было упомянуто выше, кто-то вообще использует свой телеграм-канал. Звучит, как ещё то извращение.
pandaupanda
13.08.2024 10:11В защиту Сергея скажу, что на его скринах явно не результаты испытаний))
К тому же не все в космической отрасли засекречено.Сам же вопрос с заметками и ИБ поднимает очень сложную диллему. А именно, как хранить и как передавать заметки, как писать заметки.
Каждая компания должна решать сама, насколько она готова блюсти ИБ.
Я же, как автор заметок, чувствительную рабочую инфу закидываю в места, которые доступны только на рабочем компеdyadyaSerezha
13.08.2024 10:11Пусть даже только на рабочем месте, но никто не даст поставить Обсидиан, если он не сертифицированный своим отделом ИБ (а он не сертифицирован).
dyadyaSerezha
13.08.2024 10:11Пусть даже только на рабочем месте, но никто не даст поставить Обсидиан, если он не сертифицированный своим отделом ИБ (а он не сертифицирован).
ahabreader
13.08.2024 10:11+1Что остаётся?
Есть TiddlyWiki — вики-движок + сама вики (в роли личной базы знаний как тут) в виде одного html-файла. В самом простом варианте использования нужен только браузер, файл обновляется через "сохранение страницы" в браузере.
dyadyaSerezha
13.08.2024 10:11Эта вики написана же на каком-то языке? Запрещено!)
ahabreader
13.08.2024 10:11На джаваскрипте, очевидно. Ну, её надо умудриться запретить - надо будет запретить загружать страницы в браузере. Или джаваскрипт. Или браузеры вообще.
dyadyaSerezha
13.08.2024 10:11А, она внешняя... Ну все равно, очень многие сайты для программистов блокируются.
ahabreader
13.08.2024 10:11Нет же, она самодостаточна - один локальный файл. И два в одном... как самораспаковывающийся архив - он и архив, и разархиватор. А здесь - html-файл с кучей джаваскрипта, в котором и вики-страницы, и скрипты, реализующие вики-движок.
Тяжёлое медиа из-за такой архитектуры внутрь (оно будет в base64) лучше не класть, но можно ссылаться на лежащее рядом (как в markdown).
dyadyaSerezha
13.08.2024 10:11Любые исполняемые файлы/скрипты и прочее запрещено загружать и - особенно! - исполнять на рабочем компе. Иначе - расстрел и неделю без мороженого.
ahabreader
13.08.2024 10:11файлы/скрипты и прочее запрещено ... и - особенно! - исполнять на рабочем компе.
Э-э-э, так работает браузер. Если браузер можно, то надсмотрщика всё устроит.
---
Я бы сказал, что она может по возможностям потягаться с Obsidian, но не такая модная. Видно и объективные факторы (фрагментация: легаси-TiddlyWiki Classic и TiddlyWiki5; слишком много вынесено в плагины или предлагается для доработки напильником), и субъективные (культ цеттелькастена прошёл мимо неё).
dyadyaSerezha
13.08.2024 10:11Браузер смотрит на сертификат сайта. Если же скачать JS/html руками и открыть, то можно исполнить неизвестно что.
ahabreader
13.08.2024 10:11И может случиться то самое, что как бы чего не вышло! И о чём мы? Если есть технический запрет (ещё подумал - запретить протокол file:///), то говорить не о чем. Если его нет, то всё равно спасибо, от разговоров об этом надзирательстве вместо инфобеза поглупеть можно.
DmSting
13.08.2024 10:11+1Мне больше понравилось "Мое главное правило в ведении карточек — полный отказ от нумерации" и тут же на картинке заметки с номерными названиями :D
imageman
13.08.2024 10:11Большой плюс Обсидиана в том, что он может работать локально (без доступа в интернет). Второй плюс - используется слегка измененный текстовый формат (Markdown разметка).
lyadnov
13.08.2024 10:11+1Я уже лет 15 веду базу данных с заметками в виде обычных текстовых фалов\каталогов. База синхронизирутеся через любой облачный сервис. Поиск по текстовым файлам почти что мгновенный. Внутри использую хэштэги.
imageman
13.08.2024 10:11Чуть выше написал https://habr.com/ru/companies/yadro/articles/835664/#comment_27165226
Я сам синхронизирую файлы (в том числе и между телефоном) через Syncthing (не завишу от облаков, главное что бы телефон увидел комп на несколько секунд), хотя можно и через облака. И кроме поиска в Обсидиане куча плюшек.
fedorovpishet
Вести заметки — это замечательно, а когда персональные базы знаний перестанут называть цеттелькастен или хотя бы ссылаться на Лумана, будет ещё лучше.
«Одуванчики» — это не цеттелькастен Лумана. Цеттелькастен Лумана — это последовательности заметок. Подробнее: https://fedorovpishet.ru/zettel-feature/. Уж извините за ссылку на свою статью.
Перекрёстные ссылки есть и в Википедии, например. Не случайно этот функционал в Obsidian так и называется, «вики-ссылки». Но Википедия — не цеттелькастен.
Это нормально, что понятие «цеттелькастен» сейчас включает в себя вообще любую персональную систему заметок, основанную на ссылках. «Ксерокс» тоже изначально был названием фирмы, а не самими прибором. Но вот так сложилось, что в России ксероксом называют любой копировальный аппарат. Так же и с цеттелькастен. Повторюсь, это нормально.
Но ради пресвятого Лумана, хватит уже ставить знак равенства между картотекой Лумана и многочисленными системами, которые пользователи создают у себя в Obsidian. Это я даже не к авторам статьи обращаюсь, а к её читателям.
ЗЫ А статья хорошая.