База знаний в программистском стиле
Nuances of programmingПеревод статьи Alexander Lopatin: How to Take Notes Like a Programmer
Предыстория
В школьные годы я писал ужасно, непонятный почерк и бессистемность в записях просто обесценили работу. Позднее, когда я открыл для себя видеокурсы MOOC, я все еще продолжал пользоваться теми же «антипаттернами» хотя, пожалуй, мне стало удаваться лучше доносить мысли с помощью VimWiki, а затем и с помощью Jupyter.
При этом мои записи все еще оставались плохо структурированными. И что важно – у меня не возникало желания открыть и попытаться понять, что содержится, например, в следующем:

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

Залог успеха
Полагаю, что вы уже знакомы с советами о том, что идеи важно излагать собственными словами, в простейших терминах, делать акцент на вопросы, ответы, выводы и доказательства.
Также предполагаю знакомство с приемом чанкинга (см. примечание переводчика) из курса «Как учиться» (курс размещен на курсере) или книги, прилагавшийся к этому курсуе под названием «Думай как математик».
Примечания переводчика
1. Прием чанкинга заключается в разбивке восприятия на блоки информации (чанки) с помощью движения по логическим уровням. Повышение уровня (индуктивные умозаключения) называется укрупнением – ведет к повышению уровня абстракции. Понижение уровня (дедукция) называется разукрупнением, ведет к конкретным примерам или случаям.
2. Любопытно почитать обзор этого курса, впечатления о нем и книге на хабрахарбре.
Повышайте читабельность
Мы, разработчики программного обеспечения, серьезно относятся к качеству кода. Мы не любим «код с душком». По-сути, мы общаемся посредством программного кода и инвестируем дополнительное время и энергию в написание элегантного кода, понятного и читабельного другими разработчиками. В том числе, включая и нас самих: ведь будущем этими другими можем оказаться мы сами.
Этот подход также полезен для ведения личных записей и заметок – вы можете оптимизировать записи для повышения эффективности поиска и чтения с помощью приложения дополнительных усилий на их написание.
Черновые наброски
Создавайте заголовок и ссылайтесь на источники (книги, статьи, заметки, видеоролики, то есть на все то, что вы используете) в определенной части ваших записей. Начните анализ первого источника и дописывайте опорные идеи во время проведения анализа.
Рефакторинг
Выделяйте ключевые слова, пишите короткими предложениями, используйте более сложную иерархию ненумерованных списков, добавляйте подзаголовки. Используйте «бритву Оккама»: сократите свои ваши записи в несколько раз, сохранив их первоначальный смысл.
Продолжайте изучать другие источники и обновляйте соответствующие заметки: добавьте новую и уточняйте старую информацию.
По мере разрастания объема записей – разнесите ее по отдельным файлам или даже по структуре каталогов:
Как выбрать структуру? Поступите удобным для способом: представим, вы ищите что-то в своих записях. Как именно вы смогли бы это найти? Каков короткий путь к искомой записи?
Указания и подсказки на будущее
Вам наскучило учиться, хочется приступить к делу? Будьте прагматичны. Добавьте предположения и гипотезы, помеченные комментарием TODO, чтобы затем исследовать в будущем.
Вы нашли классный ресурс по теме, которую отложили про запас? Найдите соответствующую заметку, добавьте источник, который хотите изучить и продолжайте выполнять текущую работу.

Комментарии TODO рассматриваются некоторыми разработчиками как организационные антишаблоны, тем не менее я считаю их полезными для личных проектов и заметок.
Вам не нужно заканчивать свое исследование в будущем обзоре, это просто метка для того, что вы пока знаете не очень хорошо и возможно могли бы улучшить знания в конкретной области, если столкнетесь с этим на практике.
Пересмотр и улучшение
Предположим, по прошествии некоторого времени, вы решили использовать свои заметки. Вы решаете конкретную задачу, и хотите быстро найти что-то конкретное. Важное значение имеет возможность быстрого поиска информации: это уменьшает вероятность потерять фокус внимания с проблемы, которую вы пытаетесь решить.
Попробуйте выполнить поиск файлов:

Ничего не нашли? Возможны следующие причины:
- опечатка в поисковом запросе – в первую очередь проверьте правильность написания слов запроса
- ошибочное ключевое слово – синоним был использован для описания этой же идеи
- в ваших заметках имеется опечатка
Теперь давайте внесем улучшения. Найдите запись вручную и исправьте ошибку с помощью:
- исправления опечатки
- добавления ключевого слова
Таким образом следующий раз вы быстро найдете эту заметку.
Иногда случается странное – вам снова не удается найти эту запись. Например, недавно я пытался найти кое-что о математической статистике:

Ничего не нашлось. Проверили правильность написания?

Нет, не помогает. Я загуглил нечто, но какого лешего я нашел?
Так как я не являюсь носителем английского языка, у меня уйдет много времени на выяснение того, что же, в конце концов это была за опечатка.
Опечатка в редко используемых словах – это норма, даже если вы носитель английского языка. Возможное решение – добавить слова с опечатками в качестве ключевых, тогда в следующий раз вы быстро найдете нужную заметку.

Другой способ – воспользоваться каким-нибудь хитрым поисковым движком с поддержкой нечеткого поиска.
Обновите структуру в соответствии с вашим представлением
Допустим, вы не можете быстро найти запись даже вручную. Возможны следующие причины:
- запись расположена в неверном месте
- правильное местоположение не определено (например, записи в нотации "О большое" помещены в раздел "Математический анализ" или раздел "Алгоритмы"?)
Как исправить?
- переместите раздел или файл в соответствующее место
- добавьте ссылку с одной записи на другую


Повторный рефакторинг
Допустим вы нашли то, что искали, но приходится приложить большие умственные усилия для понимания – просто снова упростите эту запись.
Ищем золотую середину
Как здесь не перестараться? Если вы поймали себя на том, что тратите впустую время на поиск записей в неверном месте – это признак того, что вы пока еще не доработали структуру. Просто улучшайте ее каждый раз, когда будете сталкиваться с этой проблемой.
Если вам это кажется сложным или затратным по времени – воспользуйтесь «правилом трех»: если ищете эту конкретную запись два раза в неверном месте – оставьте как есть. И только после третьего раза проведите рефакторинг.
К чему это?
Возможно, я так и не убедил вас в том, что вложение дополнительных усилий и времени в написание качественных заметок так уж важно: заниматься этим слишком скучно или это не относится к сфере работы / учебы. Возможно это так, а возможно – и нет. Запомните, время, проведённое за творческой работой, позволяет вам быть «в потоке».
Примечание переводчика: согласно позитивной психологии «быть в потоке» значит находиться в состоянии полной включенности, вовлеченности в происходящее.
Иногда быстро схватить некоторое количество информации и продолжить работу, не отвлекаясь. Эту информацию можно найти с помощью Google, но иногда она слишком специфична, например, это собственные выводы по конкретной теме или, возможно, по конкретному проекту.
Поскольку вы не найдете это в Интернете – используйте свои записи и заметки. Таким образом наступает решающий момент: если сможете быстро найти нужные сведения – сохраните фокус внимания на работе. А если не можете – придется прерваться и потратить время на поиск этой информации. А это аналогично тому, как если бы вы временно отложили выполнение работы.

После прерывания вам понадобиться восстановить творческое состояние и продолжить работу. Подумайте, сколько энергии на это потребуется.
Вам все еще кажется, что сбор и запись полезных сведений – слишком затратно? Но у при этом есть время для привычной работы? Подумайте еще раз. Частые отвлечения крадут много рабочего времени.
В любом случае, это только стратегия: действительно, возможно, неприменимая в каких-то сферах, поэтому будьте мудры.
Контрольный список
- Делайте короткие черновые записи со ссылками на источники и простой структурой
- Изредка делайте рефакторинг ваших заметок:
- Выделяйте ключевые слова
- Разбивайте длинные предложения на короткие
- Совершенствуйте списочную структуру
- Используйте подзаголовки
- Упрощайте и сокращайте текст
- Получилась слишком длинная заметка? – разбейте на отдельные файлы
- Слишком много файлов? – Улучшите структуру каталогов
- Добавляйте TODO подсказки
- Наслаждайтесь своей творческой работой, не отвлекаясь ни на что на постороннее. Соберите данные, как только они вам потребуются:
- Не можете быстро найти запись?
- Исправьте опечатки
- Добавьте ключевые слова (иногда ключевые слова с типовыми опечатками)
- Неверное расположение? – Переместите раздел / файл в соответствующее место
- Местоположение не определено? – добавьте ссылки из других мест
- Что-то непонятно в записи – сделайте повторный рефакторинг
Это же не сложно, правда?
Перевел статью Владислав Семёнов