Цель

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

  • Уровень 0: решить всеми возможными простыми способами, упрощениями
  • Уровень 1: попытаться обобщить поставленную задачу или подзадачи, решить или описать решение в общем случае
  • Уровень 2: разработать подход к решению обобщённой задачи, превратить решение в приложение и/или регламент/формальное описание решения
  • Уровень 3: превратить решение задачи в знания, которые можно доносить до людей

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

Перед тем как начать

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

База знаний

Один из подходов, который позволяет гарантировать полученную пользу от решения задач - это база знаний. А точнее её составление в процессе решения задачи. Процесс решения задачи связан с изучением, ознакомлением с источниками, их анализ, формированием новых знаний. И это всё может быть временной информацией в голове. Но больше пользы будет, если сразу превращать это все в знания. Например, я занимался изучением  Roslyn-анализаторов кода. В рамках этого изучения я в своей базе знаний создаю документ, описываю знания, которые у меня уже имеются. Дальше происходит анализ статей или более подробное изучение деталей. Эти действия превращаются в добавление ссылок на статьи, написание конспектов к ним.

Если быть более конкретным, то основной подхода является Obsidian. На сайте есть огромное описание, но я его сокращу до “Это редактор Markdown файлов, который позволяет очень удобно добавлять и управлять ссылками между страницами”. Например, когда я описываю Roslyn анализаторы, я упоминаю про конфигурационный файл .editorconfig. Используя возможности Obsidian я могу разметить ссылку между ними, которая будет иметь семантику. Такая ссылка будет зеркально отображаться в другом файле - открывая страницу про .editorconfig, я вижу какие другие страницы ссылаются (иными словами, где .editorconfig используется или упоминается).

Чуть менее полезным бонусом является возможность сгенерировать граф связей. Он позволяет визуально находить связи и “перемещаться” по базе знаний. В будущем я напишу более детально о том, как я использую Obsidian.

План

Мой опыт решения задач через максимизацию пользы хорошо себя показал (субъективная оценка) и я готов продолжить. Но изменения внести хотелось. Этим изменением должна стать открытость. Я писал много заметок, но иногда они были недостаточно качественными (качество на уровне “для себя набросал”). Я решал некоторые задачи, их решение превращалось в код, но не превращалось в знания (это приводит к существованию многих проектов, которые не понятно как и зачем существуют).

Это стало причиной переосмысления подхода, повышения приоритета задач, связанных с написанием постов и началом миграции локальной базы знаний в публичную. База должна появиться после написания поста здесь: https://publish.obsidian.md/how-to-kats. Ожидаю, что в будущем буду наполнять базу в процессе решения задачи, а потом приходить сюда и писать пост о каких-то интересных (мне) находках. Но сейчас сам запуск блога и базы были “задачей”, поэтому порядок действий другой. Обязательно исправлюсь и допишу в Knowledge base о том, что такое Obsidian, Jekyll и вот это всё.

Что значит название?

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

P.S. Это точно никак не связано с моей детской мечтой создать общество из миллионов моих клонов!