[Из песочницы] Как делать заметки как программист

Когда я был мал — писал ужасные конспекты: они представляли из себя тетради с грязным текстом и плохой структурой. Практически бесполезные.


Потом, когда я открыл для себя MOOC видео курсы, продолжил использовать те же антипаттерны, что и в школьные времена, но уже не так безобразно: с помощью VimWiki и позже — с Jupyter.


Записи всё еще были плохо структурированы. Посмотрите на это: у меня даже мотивации не хватает на то, чтобы просто открыть и посмотреть на то, что там внутри:


image


В какой-то момент я понял какой метод ведения записей работает на мне лучше всего, чем и хочу поделиться.


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


reflect-ideas.svg


Необходимые условия

Полагаю вы уже знаете про базовые советы, вроде выражения мыслей с помощью своих слов (из своего словарного запаса, с более простой терминологией) или фокусировании на вопросах, ответах, выводах и доказательствах.


Также предполагаю что вы знакомы с техникой «чанкинга» из курса Учимся учиться или из книги Думай как математик.


Сделайте так, чтобы хорошо читалось

Мы, разработчики программного обеспечения, очень серьезно относимся к качеству кода. Мы не любим код с запашком.


Мы общаемся с помощью кода и вкладываем дополнительное время и энергию в написание элегантного кода, чтобы потом его могли эффективно читать другие разработчики. В том числе и мы сами: в будущем мы в буквальном смысле становимся другими людьми.


Этот же подход мне показался удобным и для личных заметок: вы можете оптимизировать поиск и чтение заметок, применяя чуть больше усилий к написанию.


Сырой черновик


Запишите заголовок и источники (книги, статьи, научные работы, видеозаписи, что бы вы не использовали) в конкретный блок информации. Начните анализировать первый источник. Пока анализируете — добавляйте некоторые ключевые детали.


raw-draft.gif


Рефакторинг


Теперь выделите ключевые слова, разбейте длинные предложения, используйте более сложную иерархию маркерованных списков, добавьте подзаголовки. Используйте Бритву Оккама: уменьшайте запись несколько раз не теряя изначальный смысл.


refactoring.gif


Продолжайте изучать остальные источники и обновляйте соответствующие записи, добавляйте новую информацию и уточняйте старую.


Когда запись становится большой — делите ее на файлы или вовсе структурируйте с помощью папок.


navigation.gif


Как выбрать структуру? Выбирайте такую, которая будет вам удобна: представьте что вы ищете что-то в своих записях. Как именно будете искать? Какой наиболее короткий путь к записи подойдет?


Добавьте подсказки себе на будущее


Надоело учиться и хочется уже начать что-то делать? Быть прагматичным — это хорошо. Добавьте предположения, которые возможно захотите исследовать в будущем, с помощью TODO-комментария.


Нашли клёвый ресурс на тему, которую уже отложили? Найдите соответствующую запись, добавьте источник и продолжайте делать то что делали.


todo-receiver.png


TODO-комментарии считаются антипаттерном некоторыми разработчиками. Тем не менее, я всё же считаю их полезными для личных проектов и заметок.


Вам не надо продолжать свое исследование при очередном пересмотре заметки. TODO-комментарий — лишь знак того, что вы все еще чего-то недостаточно хорошо знаете и возможно захотите улучшить знание в конкретной области, в случае если встретите ее на практике.


Пересмотр и улучшение

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


Попробуйте поискать в файлах:


git-grep.png


Не нашли ничего? Возможные причины:


  • опечатка при вводе поискового запроса — проверьте сначала это
  • неверное ключевое слово — та же идея в прошлом была описана синонимом
  • опечатка в самой записи


Пришло время улучшать. Найдите запись вручную и почините проблему с помощью


  • исправления опечатки
  • добавления ключевого слова


В следующий раз эту же запись получится найти быстро.


В особо странных случаях запись снова не получится найти. Например, недавно я искал кое-что связанное с математической статистикой:


git-grep-quantil.png


Не нашлось. Написал неправильно?


google-quantil.png


Неа. Я нагуглил что-то, но что за… ерунду я нашел?


Так как я не носитель английского у меня заняло еще немного времени на осознание того, что всё-таки это была опечатка при вводе.


Опечатки редко используемых слов — это нормально, даже если вы не носитель языка. Возможное решение — добавить ключевое слово с опечаткой, чтобы потом можно было быстро найти такую запись.


keyword-quantil.png


Другой вариант — использовать какой-нибудь хитрый поисковик с поддержкой нечеткого поиска.


Обновите структуру заметок в соответствии с вашей памятью


Представьте что вы не смогли найти заметку быстро, даже когда попытались поискать ее вручную. Возможные причины:


  • запись находится не на своем месте
  • правильное место трудно определить
    • куда бы вы положили записи про нотацию «большая О»: в математический анализ или алгоритмы?


Как это исправить?


  • переместите блок или файл в правильное место
  • добавьте ссылку с одной заметки на другую


reference-code.png


reference.png


Отрефакторьте еще раз


Предположим, что вы таки нашли что искали, но понять написанное с ходу не получается — тогда просто упростите это снова.


Найдите баланс


Как не переборщить с этим всем? Если вы ловите себя на том, что тратите время на поиски заметок, которые находятся не на своем месте — это знак того, что структура всё еще плохая. Просто исправляйте каждый раз, как встречаетесь с этой проблемой.


Если чувствуете что это тяжело или отнимает много времени — используйте что-то вроде «правила трёх»: если вы искали эту запись два раза не в том месте — оставьте как есть. На третий раз — отрефаторьте.


И в чем смысл?

Вы наверное сейчас скажете, что я вас не убедил, что вкладывание дополнительного времени
в написание качественных заметок так уж важно: мол это слишком скучно или неприменимо к области вашей работы/учебы. Может быть да, а может и нет.


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


Так как в сети найти это нельзя — вы используете свои заметки. И тут решающий момент: если вы можете быстро найти эти заметки — тогда вы не потеряете фокуса на работе. А если нет — прервётесь и всё равно потеряете время на поиск. Технически это тоже самое что и быть прерванным кем-то.


programmer-interrupted.png


А потом нужно возвратиться в свое креативное состояние сознания и продолжить работу. Только представьте сколько энергии это отнимает у вас.


Всё еще кажется что написание заметок таким вот образом отнимает слишком много времени? Но у вас ведь есть время на практику, да? Подумайте еще раз. Прерывания часто воруют у нас много времени из практики.


В любом случае это лишь стратегия: в каких-то случаях возможно она и неприменима, так что используйте с умом.


Чеклист

  • Напишите сырой черновик с источниками и плохой структурой
  • Периодически рефакторьте свои записи:
    • Выделяйте ключевые слова
    • Разбивайте длинные предложения
    • Улучшайте иерархию маркерованных списков
    • Используйте подзаголовки
    • Упрощайте текст, уменьшайте его
    • Слишком длинные документы? — Делите их на файлы
    • Слишком много файлов? — Улучшайте структуру каталогов
  • Добавляйте TODO-комментарии
  • Наслаждайтесь своей креативной работой без потери фокуса! «Хватайте» заметки когда они вам нужны:
    • Не получается найти заметку быстро?
      • Исправьте опечатки
      • Добавьте ключевые слова (иногда неверно написанные ключевые слова)
      • Заметка не на своем месте? — Переместите блок/файл в правильное место
      • Место двусмысленно? — Добавьте ссылки из других мест
    • Не можете понять что написали? — Отрефакторьте еще раз


Не так уж и сложно, правда?


Данная публикация является переводом собственной статьи.

© Habrahabr.ru