Недавно в комментариях к тексту про построение личной базы знаний на Хабре читатель отметил, что в таких статьях не хватает примеров работы с техническими данными. Давайте это исправим. Мы спросили у инженеров и технарей, как и для чего они ведут свои заметки. Герои статьи используют Obsidian и Emacs, а также личные Telegram-каналы, чтобы изучать новые языки программирования, проходить технические собеседования и вести рабочие записи.
Для тех, кто пока не знаком с методом социолога Никласа Лумана, в начале статьи рассказали об истории Цеттелькастена и показали, как выглядело хранилище данных полвека назад. Короб с ящиками и карточками стал прототипом современных систем для ведения заметок, которыми пользуются инженеры.
Как появился Цеттелькастен и в чем его суть
В середине XX века социолог Никлас Луман разработал метод организации информации Цеттелькастен (Zettelkasten). Занимаясь наукой, Луман создавал множество заметок, о значении которых вскоре забывал. Чтобы не терять полезные знания, он начал вести картотеку. Идея такого хранилища не была новой: начиная с XIV века ученые и исследователи по всему миру пытались систематизировать информацию единственным доступным способом — вели бумажную документацию. Но только Никласу Луману удалось превратить ящик с бумагами в рабочий инструмент. Он описал Цеттелькастен в эссе "Kommunikation mit Zettelkästen", вышедшем в исследовании теории систем, — так метод стал популярным.
Название метода состоит из двух немецких слов, которые переводятся как «карточка» и «чемодан» и дословно описывают способ хранения Лумана. Ученый заводил карточку под одну мысль и помещал ее в ящик, где находились другие связанные с ней карточки. Для записей он выбирал листы обычной бумаги формата А6 — они тоньше, чем специальные каталожные карты, и занимали меньше места.
Карточки не работали бы без системы нумерации и ссылок, которая помогала быстрее в них ориентироваться. У каждой заметки был номер: первая цифра — номер темы, вторая — номер заметки. Если Луману нужно было дополнить заметку, он добавлял к названию новой карточки букву. В итоге получается уникальный код, который вы видите на картинке: 9 — номер темы, 8 — номер заметки, j — обозначение дополнительной карточки.
В начале каждой крупной темы — например, новой научной статьи — ученый писал карточку с важными подтемами и помечал их заглавными буквами. С них начинался код карточки внутри большой темы. Внутри такой системы номер карточки мог выглядеть так: А (подтема) / 1 (номер темы заметки) / а (дополнение).
Так выстраивалась древовидная структура, похожая на устройство современных облачных инструментов для ведения заметок.
Онлайн-инструменты, использующие метод
Логика, по которой Никлас Луман собирал и хранил информацию, легла в основу современных инструментов для организации данных: Obsidian, Notion, Org-mode (Emacs) и других. Сам инструмент — это шкаф, корневые папки — ящики, в который пользователь «складывает» страницы, заменившие карточки. Если бы ученый посмотрел на программы управления данными, он бы удивился, насколько их устройство похоже на устройство Цеттелькастена. Инструменты помогают распределить данные в древовидную систему с четкой иерархией и простым управлением. Пользователь может перемещать заметки, собирать их в группы и организовывать необходимую логику вложенности элементов.
Программы, вдохновленные методом, активно используют как в корпоративных, так и в личных целях — в компаниях ведут базы знаний, а рядовые пользователи составляют в них конспекты, когда читают книги или проходят обучающие курсы. В практическом применении Цеттелькастена много нюансов, поэтому мы попросили активных пользователей метода поделиться опытом. О поиске решения для хранения данных и задачах, в которых оно помогает, рассказали инженеры и программисты.
Как инженеры применяют Цеттелькастен на практике
«Уровень подготовки должен быть ненулевым»
Дмитрий Зверев
Go-разработчик в департаменте объектных хранилищ, пишет API для TATLIN.OBJECT и ведет заметки в Obsidian
Я использую Obsidian — самый близкий к Цеттелькастену инструмент — для изучения новых языков программирования уже год. До Obsidian пользовался Notion, но у этой программы есть значительный минус: когда сущностей становится слишком много, инструмент загружается медленно и с трудом открывает новые страницы. Когда мои заметки перестали влезать в Notion, я начал искать новый метод хранения данных и наткнулся на обсуждение программы Obsidian в чате Gopher Club. Заинтересовался методом, по которому работает сервис, прочитал несколько статей на Хабре про Цеттелькастен и решил переносить данные из Notion в новое пространство. За год в моей коллекции накопились заметки по двум языкам: Go и Python.
С каждой большой темой я работаю по одному и тому же сценарию. В первую очередь читаю входную документацию по языку, например, A Tour of Go. Для каждого языка завожу отдельную папку, внутри которой собираю информацию в группы-фонемы — они формируют верхнеуровневую структуру файлов внутри папки для языка. Набор групп необязательно соответствует оглавлению в источниках — составляю его так, как удобно мне.
Внутри верхнеуровневой группы я пишу большой конспект, а потом делю его на отдельные документы. Один документ — одна подгруппа. На примере видно, что в группе Data structures я завел подгруппы Array, Map и Slice. По каждой из них ищу информацию и в процессе чтения записываю в соответствующий документ.
У каждого из объектов в языках программирования есть специфическое поведение, о котором нужно знать. Например, структура данных Map в Go содержит понятие «эвакуация данных». Каждое из таких понятий — отличный кандидат на микрозаметку, как в Цеттелькастене.
Помимо ключевой мысли, у каждого документа есть теги, которые связывает его с другими заметками. При помощи тегов Obsidian позволяет строить граф, на котором стрелками показано, что с чем связано. Это довольно неплохо визуализирует связи и выстраивает систему в голове.
На этом графе видно, что функция range в языке Go работает для 4 объектов (slice, map, channel, array), а применить ее можно только с циклом for. Для меня эта связь была неочевидной, пока я не визуализировал информацию в программе.
Когда я сформировал крепкую техническую базу по языку, я иду на собеседование. В моем случае интервью — инструмент для верификации знаний. На собеседовании я сопоставляю вопросы интервьюера с моими записями: могу ли я ответить на вопрос, руководствуясь информацией в заметке? Если не могу, значит, нужно реструктурировать существующие данные или добавить новые.
В итоге набор заметок по языку превращается в теоретический справочник, который можно использовать как ультимативный набор вопросов для изучения языка и подготовки к интервью.
Думаю, Obsidian подойдет любому, кто хочет изучить новую дисциплину при одном условии: уровень подготовки должен быть ненулевым. Если вы совсем не знакомы с темой, есть риск неправильно разделить информацию на группы и запутаться еще больше. Перед тем, как начать вести заметки, советую пройти базовый курс или позаниматься с ментором по интересующей теме. Кому точно могу посоветовать инструмент:
- тем, кто привык работать на десктопе и не нуждается в постоянном доступе к заметкам — у Obsidian неудобное мобильное приложение,
- тем, кто устал от проблем с Notion и хочет пользоваться более быстрым сервисом,
- тем, кому нужен инструмент с поддержкой офлайн-режима,
- тем, кто готов кропотливо собирать заметки и обновлять данные.
Я актуализирую информацию после собеседований или когда выходит новая версия языка. За год использования Obsidian я не успел перенести все заметки из Notion — это долгая работа, но результат того стоит: возвращаюсь к записям каждый раз, когда хочу освежить знания, а в голове уже выстроилась система, которая помогает запомнить сложную информацию.
«IDE созданы для кода, для всего остального есть Obsidian»
Наталья Сагель
Инженер-программист и участник Zettelkasten-сообщества. Разрабатывает модули телефонии для Asterisk, Maxim Technology. Пишет на Scala и Java. Изучает Kotlin с помощью системы заметок
Полностью повторить базу Лумана невозможно и отчасти даже вредно. В наш цифровой век достаточно различных инструментов для структуризации информации, помимо реальных бумажных карточек. В ходе долгих обсуждений в нашем чате мы пришли к тому, что система Лумана может стать хорошей опорой, на основных принципах которой можно создать что-то уникальное. Именно поэтому я не пытаюсь называть свою систему Цеттелькастеном.
Я активно пользуюсь методом 3 года, а если считать первые попытки — почти 7 лет. Свою базу знаний я веду в Obsidian, эта программа работает поверх обычных markdown-файлов. У системы огромное сообщество, которое пишет плагины. Можно создать из Obsidian инструмент «для всего», а можно просто вести заметки. Главные плюсы Obsidian:
- Все файлы лежат локально. Нет привязки к сети и принудительной синхронизации на чужих серверах.
- Удобный полнотекстовый поиск.
- Возможность кастомизации (чем практически не пользуюсь).
- При добавлении плагина Excallidraw можно рисовать прямо внутри Obsidian. Удобно делать наброски в ходе обсуждения задачи.
- Мелкие преимущества: граф, обратные ссылки, подсветка кода, ссылки внутри страниц, отображение картинок и таблиц.
С появлением системы заметок моя жизнь стала интереснее и в то же время проще. На ведение собственной базы поначалу тратится много времени, но затем оно возвращается удобным поиском и отсутствием необходимости лишний раз залезать в поисковик. Стало проще работать. Искать источники проблем в коде, исследовать новые библиотеки, фреймворки и языки, описывать саму систему. Я стала чаще писать и делиться своими знаниями с другими. Различные идеи пет-проектов не потерялись, а превратились в заметки и реальный код.
«Каноничный» Цеттелькастен использует специальные индексы, я же немного приспособила систему под себя. Стараюсь писать осмысленные названия заметок с различными ключевыми словами. Все заметки у меня разделены на папки-сферы:
- Inbox — сюда попадают все новые заметки.
- Simple — различные заметки о жизни. Вырезки из книг, рецепты и тому подобное.
- Work — рабочие записи и схемы.
- Edu — конспекты, а также планы обучения. Сюда же попадает вся выделенная информация из профессиональной литературы.
- Knowledge — небольшие короткие заметки, похожие на Цеттелькастен.
В моей базе собрана вся моя жизнь. Здесь информация о прочитанном и просмотренном, рабочие заметки, ежедневные заметки и различные конспекты, которые я пишу в ходе самообучения. Здесь же я размышляю обо всем, что меня волнует.
Небольшой совет для всех инженеров: ведите заметки, и вам станет намного проще передавать информацию другим.
Раз в неделю я разбираю инбокс и распределяю заметки по их назначению. Какие-то выкидываю, какие-то дополняю. Иногда попадается новая информация для старых заметок, которые получают апдейт.
Программа запущена всегда. Все длинные сообщения, все полезные мысли, возникшие в ходе митингов, полезные ссылки, размышления, все сразу улетает в базу. Каждый раз, когда я что-то ищу, то начинаю поиск с нее и лишь затем иду в Google.
«Человеческий мозг ненадежен»
Станислав Богатырёв
Эксперт по разработке ПО в YADRO. Много лет собирает базу знаний по методу Лумана
Я веду заметки больше 12 лет: сначала моя база знаний была лишь похожа на Цеттелькастен, затем я изучил вопрос по блогу SachaChua и стал менять систему в сторону метода Лумана. База знаний развивалась вместе с инструментами в программе Emacs.
Изначальное требование держать все данные в простом текстовом формате или чем-то стандартном, избегая закрытого проприетарного ПО, доказало свою правильность уже в первые несколько лет. Я понемногу адаптирую процесс под меняющиеся обстоятельства: могу по своему усмотрению выкидывать какие-то части метода или внедрять свои улучшения.
Стало проще в разговорах с другими людьми объяснять, как я работаю с личным хранилищем информации. Моя система еще далека от завершения. В итоге хочется добиться пригодной для практического каждодневного применения реализации концепции Memex.
Я советую вести базу знаний всем, кто хоть как-то работает с информацией. Человеческий мозг ненадежен, и без внешнего носителя сложно анализировать накопившиеся знания, находить дефекты и ошибки восприятия, усиливать мыслительные возможности.
«Нужно представить, как я в будущем пользуюсь заметкой»
Сергей Васильев
Инженер в сфере космических технологий. Занимается электрическими испытаниями, использует систему заметок для работы и самообразования и ведет канал, где делится опытом работы с Obsidian.
Я использую подходы, описанные Никласом Луманом, около года. Соглашусь с коллегами: почти никто не реализует Цеттелькастен в чистом виде, но многие, как и я, ведут заметки в специальных программах. Раньше собирал заметки в Evernote, но у этого инструмента гораздо меньше опций, чем в Obsidian.
В Obsidian встроена отслеживаемая самой программой система связей между заметками. Но главное, что там можно представить эту систему связи в виде графа. А сам граф связей можно динамически настраивать для отображения разными способами (цветами, направлением и глубиной связей).
Свою базу знаний я использую для самообразования и ведения протоколов испытаний на работе. Мое главное правило в ведении карточек — полный отказ от нумерации. В цифровой базе знаний название карточки должно быть осмысленным, чтобы проще было искать нужный материал.
Технически это обеспечивается ссылками, хештегами, тремя шаблонами, двумя плагинами (форматирование текста, контекстное меню изображений). В самой системе надо определиться с видами структур заметок (то есть в каком случае заметка — это продолжение предыдущей, в каком — отдельная самостоятельная заметка).
Моя система содержит кучи цепочек, в которых я неплохо ориентируюсь. Но создание карточки занимает 90% времени от освоения материала. Нужно представить, как в будущем я воспользуюсь информацией, какие связи сделать с другими карточками.
Сейчас я веду одновременно два хранилища и планирую создать еще несколько. На своем опыте пришел к тому, что должно быть два типа хранилищ для двух стилей заметок:
- Обычный повседневный стиль для ведения проектов и завала из последовательностей заметок. Здесь я допускаю атомарность мышления и «зоопарк тематик» в одном общем хранилище, содержащем не связанные между собой заметки.
- Выверенный стиль для систематизации свойств технического средства или тематики с отсутствием привязки к проектам и одновременно с принципиальным отсутствием несвязанных заметок. В таком стиле одна тема должна соответствовать одному хранилищу, тем самым не загрязняя развернутую информацию.
За время работы с базой знаний я понял: когда в твоих руках есть разработанная система ведения заметок, процесс адаптации к разным ситуациям облегчается. Так как требуется сосредоточить усилия только в одном направлении — определить концепцию архитектуры. Самое главное при этом осознавать, что универсального решения, скорее всего, не найти. И следить за тем, чтобы совершенствование архитектуры не было бесконечным процессом. Лучше сделать новую адаптацию для следующей подобной ситуации, чем пытаться исправить ошибки существующей архитектуры.