Как учить языки программирования и создавать базу знаний с помощью метода из прошлого века: опыт четырех инженеров |
||
МЕНЮ Главная страница Поиск Регистрация на сайте Помощь проекту Архив новостей ТЕМЫ Новости ИИ Голосовой помощник Разработка ИИГородские сумасшедшие ИИ в медицине ИИ проекты Искусственные нейросети Искусственный интеллект Слежка за людьми Угроза ИИ ИИ теория Внедрение ИИКомпьютерные науки Машинное обуч. (Ошибки) Машинное обучение Машинный перевод Нейронные сети начинающим Психология ИИ Реализация ИИ Реализация нейросетей Создание беспилотных авто Трезво про ИИ Философия ИИ Big data Работа разума и сознаниеМодель мозгаРобототехника, БПЛАТрансгуманизмОбработка текстаТеория эволюцииДополненная реальностьЖелезоКиберугрозыНаучный мирИТ индустрияРазработка ПОТеория информацииМатематикаЦифровая экономика
Генетические алгоритмы Капсульные нейросети Основы нейронных сетей Распознавание лиц Распознавание образов Распознавание речи Творчество ИИ Техническое зрение Чат-боты Авторизация |
2024-08-15 11:23 Недавно в комментариях к тексту про построение личной базы знаний на Хабре читатель отметил, что в таких статьях не хватает примеров работы с техническими данными. Давайте это исправим. Мы спросили у инженеров YADRO и технарей из сообщества «Цеттелькастен и Персональные базы знаний», как и для чего они ведут свои заметки. Герои статьи используют 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 — это долгая работа, но результат того стоит: возвращаюсь к записям каждый раз, когда хочу освежить знания, а в голове уже выстроилась система, которая помогает запомнить сложную информацию. «IDE созданы для кода, для всего остального есть Obsidian» Наталья Сагель Инженер-программист и участник Zettelkasten-сообщества. Разрабатывает модули телефонии для Asterisk, Maxim Technology. Пишет на Scala и Java. Изучает Kotlin с помощью системы заметок Полностью повторить базу Лумана невозможно и отчасти даже вредно. В наш цифровой век достаточно различных инструментов для структуризации информации, помимо реальных бумажных карточек. В ходе долгих обсуждений в нашем чате мы пришли к тому, что система Лумана может стать хорошей опорой, на основных принципах которой можно создать что-то уникальное. Именно поэтому я не пытаюсь называть свою систему Цеттелькастеном. Я активно пользуюсь методом 3 года, а если считать первые попытки — почти 7 лет. Свою базу знаний я веду в Obsidian, эта программа работает поверх обычных markdown-файлов. У системы огромное сообщество, которое пишет плагины. Можно создать из Obsidian инструмент «для всего», а можно просто вести заметки. Главные плюсы Obsidian:
С появлением системы заметок моя жизнь стала интереснее и в то же время проще. На ведение собственной базы поначалу тратится много времени, но затем оно возвращается удобным поиском и отсутствием необходимости лишний раз залезать в поисковик. Стало проще работать. Искать источники проблем в коде, исследовать новые библиотеки, фреймворки и языки, описывать саму систему. Я стала чаще писать и делиться своими знаниями с другими. Различные идеи пет-проектов не потерялись, а превратились в заметки и реальный код. «Каноничный» Цеттелькастен использует специальные индексы, я же немного приспособила систему под себя. Стараюсь писать осмысленные названия заметок с различными ключевыми словами. Все заметки у меня разделены на папки-сферы:
В моей базе собрана вся моя жизнь. Здесь информация о прочитанном и просмотренном, рабочие заметки, ежедневные заметки и различные конспекты, которые я пишу в ходе самообучения. Здесь же я размышляю обо всем, что меня волнует.
Раз в неделю я разбираю инбокс и распределяю заметки по их назначению. Какие-то выкидываю, какие-то дополняю. Иногда попадается новая информация для старых заметок, которые получают апдейт. Программа запущена всегда. Все длинные сообщения, все полезные мысли, возникшие в ходе митингов, полезные ссылки, размышления, все сразу улетает в базу. Каждый раз, когда я что-то ищу, то начинаю поиск с нее и лишь затем иду в Google. «Человеческий мозг ненадежен» Станислав Богатырёв Эксперт по разработке ПО в YADRO. Много лет собирает базу знаний по методу Лумана Я веду заметки больше 12 лет: сначала моя база знаний была лишь похожа на Цеттелькастен, затем я изучил вопрос по блогу SachaChua и стал менять систему в сторону метода Лумана. База знаний развивалась вместе с инструментами в программе Emacs. Изначальное требование держать все данные в простом текстовом формате или чем-то стандартном, избегая закрытого проприетарного ПО, доказало свою правильность уже в первые несколько лет. Я понемногу адаптирую процесс под меняющиеся обстоятельства: могу по своему усмотрению выкидывать какие-то части метода или внедрять свои улучшения. Стало проще в разговорах с другими людьми объяснять, как я работаю с личным хранилищем информации. Моя система еще далека от завершения. В итоге хочется добиться пригодной для практического каждодневного применения реализации концепции Memex.
«Нужно представить, как я в будущем пользуюсь заметкой» Сергей Васильев Инженер в сфере космических технологий. Занимается электрическими испытаниями, использует систему заметок для работы и самообразования и ведет канал, где делится опытом работы с Obsidian. Я использую подходы, описанные Никласом Луманом, около года. Соглашусь с коллегами: почти никто не реализует Цеттелькастен в чистом виде, но многие, как и я, ведут заметки в специальных программах. Раньше собирал заметки в Evernote, но у этого инструмента гораздо меньше опций, чем в Obsidian. В Obsidian встроена отслеживаемая самой программой система связей между заметками. Но главное, что там можно представить эту систему связи в виде графа. А сам граф связей можно динамически настраивать для отображения разными способами (цветами, направлением и глубиной связей). Свою базу знаний я использую для самообразования и ведения протоколов испытаний на работе. Мое главное правило в ведении карточек — полный отказ от нумерации. В цифровой базе знаний название карточки должно быть осмысленным, чтобы проще было искать нужный материал. Технически это обеспечивается ссылками, хештегами, тремя шаблонами, двумя плагинами (форматирование текста, контекстное меню изображений). В самой системе надо определиться с видами структур заметок (то есть в каком случае заметка — это продолжение предыдущей, в каком — отдельная самостоятельная заметка).
Сейчас я веду одновременно два хранилища и планирую создать еще несколько. На своем опыте пришел к тому, что должно быть два типа хранилищ для двух стилей заметок:
За время работы с базой знаний я понял: когда в твоих руках есть разработанная система ведения заметок, процесс адаптации к разным ситуациям облегчается. Так как требуется сосредоточить усилия только в одном направлении — определить концепцию архитектуры. Самое главное при этом осознавать, что универсального решения, скорее всего, не найти. И следить за тем, чтобы совершенствование архитектуры не было бесконечным процессом. Лучше сделать новую адаптацию для следующей подобной ситуации, чем пытаться исправить ошибки существующей архитектуры.
Источник: habr.com Комментарии: |
|