Personal knowledge base as a tool for capturing learning results

Personal knowledge base as a tool for capturing learning results

I believe that anyone who actively engages in learning and self-improvement has noticed that after several months following the reading of a book, watching a video, or taking a course, it's difficult to recall the details. And after six months or a year, it's good if you can remember the title. Of course, the fundamental principles, ideas, and approaches remain, but the details... The details tend to fade quite significantly.

The world of a modern developer is characterized by the need to consume, analyze, and process a vast amount of diverse information while performing daily tasks. This often leads to the information not being retained in the mind for long. Once a task is solved successfully, the information is promptly forgotten, making room for new knowledge needed to tackle the next challenge.

At some point, I realized this, and I became dissatisfied with the effectiveness of my learning. It turns out that I invest quite a bit of my time and effort into learning, but as a result, after several months, I tend to forget most of the information.

I started seeking a solution. I read various articles and books on how to study correctly, absorb material effectively, and so on. I often came across advice to take notes. So, I decided to give it a try. Over time, this evolved from simple note-taking into a personal knowledge base, which, as it turned out, started addressing a number of other very important issues. But let's take it step by step...

So, how do you learn more effectively?

When I'm taking a course, reading a book, watching a video, or simply researching online to understand a new topic that interests me - I take notes. Often, it's just an outline with main points, code snippets, and references (links to web pages, page numbers in a book, video timestamps, etc.) where I can find additional information.

I try not to write a lot of text - short phrases, the essentials, a brief description in a couple of sentences. I leave key points that trigger my memory to recall the details (if they don't, I follow the link and read) After some practice, highlighting the most important points becomes quite simple and doesn't take as much time as it might initially seem.

It's also important to implement projects and examples while studying a course or reading a book (if we're talking about development, of course). This significantly enhances the material absorption and understanding of how things work. In such cases, it can be helpful to insert into your knowledge base not just code snippets, but a link to your repository where a particular implementation example is stored, that can be quickly deployed and experimented with locally.

Why is it cool?

  • Of course, it's all individual, but personally, I've noticed that this method makes it much easier and better to structure knowledge in my mind during the learning process. It's similar to drawing a diagram of how a complex system interacts on paper (or wherever you draw it) because it's simpler and you don't have to keep everything in your head. The same applies here.
  • You create a summary that is adapted and optimized specifically for you and your memory, allowing you to quickly recall the topic of interest. It's amazing and it really works quite well. Much depends on the complexity and scope of the topic, but from my experience, I can say that in just a couple of hours, you can easily transition from a state of "yeah, I think I read that book last year" to being able to briefly describe the main sections, discuss key ideas, and share what interested you and what useful insights you gained for yourself.
  • This also proves to be a very useful tool in daily work. You can find answers to your questions faster, solve tasks more quickly, and make the right decisions. You can easily orient your colleague on the studied topic, indicate what exactly they should look for, and provide links for further reading.
  • And what is especially relevant lately is preparing for interviews. Nowadays, developers often have to attend interviews in our challenging times. And you probably already guessed that such a knowledge base can help you, but you can't even imagine how much it can reduce the time you need to prepare and improve the quality of your preparation. Again, it's all individual, and interviews vary, but it takes me 2-3 days to get into decent shape for an average Senior-level interview.
  • If you, like me, have some perfectionist tendencies and you also like to put everything in order, then such activity can even bring you additional pleasure. Plus, your knowledge base gradually expands, you add new folders with carefully studied and summarized topics, and you realize that some good boy/girl has done a great job in the last week/month and will get an extra candy with coffee. Isn't that cool? :)

What features should a knowledge base have?

Before we move on to discussing implementation options for the knowledge base, let's clarify what it should be capable of. So, here are the criteria I've outlined for my needs:

  • Accessible online via a web interface. The idea is to make it usable seamlessly on a work laptop without the need for additional software installation, which may not be allowed due to company security policies.
  • All information is stored somewhere in the cloud. Nothing will be lost in case something happens to the laptop.
  • Information should be conveniently structured. There should be levels of nesting - a tree-like structure of folders and subfolders, as well as tags. It should be intuitive to find information later on. Ideally, there should be keyword and tag search functionality.
  • Editing should also be convenient. There should be text formatting options: font style and size, lists, headers, tables, etc. It would be desirable to be able to insert code beautifully - formatted and easy to read. Also, the ability to insert links is needed. Ideally, the possibility to embed videos from YouTube, gists from GitHub, etc., directly onto the page.

What tool to use to create a knowledge base?

There is no one right answer, of course. It all depends on your needs. I'll describe only what I've encountered and tried, but there are certainly many other options out there. Choose what suits you best, what you like, find convenient, etc.

This is very important because you'll likely spend a significant amount of time working with the database, so it should be comfortable and not cause rejection. So, I'll share my thoughts and experiences on finding the perfect tool for my knowledge base.

  • Google Drive with its Google Docs and Sheets was the first tool I started using for writing summaries. It offers rich functionality for document editing, but there are issues with inserting code snippets. Most importantly, there's no ability to view the folder structure as a tree. If you have 4-5 levels of nesting, navigating through such a database becomes inconvenient. While there is a search function, it searches across your entire drive, or you have to manually select the folder with the knowledge base each time. Additionally, it lacks tagging capabilities.
  • Notion. After some time, I switched to Notion and am still using it right now. It's a quite convenient and multifunctional tool for such tasks. It has two main entities: pages with tree-like nesting and databases with various display options, grouping, sorting, filtering, etc. I found it more convenient to create the knowledge base in the form of pages, adding nested sections as subpages. Databases are useful, for example, for creating a learning list (books, courses, videos, articles you would like to study). You can add the title, link, tags, statuses, and after completion, add a link to your summary in the knowledge base. Also, databases are great for creating a list of questions for interview preparation. Your knowledge base will obviously be much larger than the list of topics that can be discussed in an interview, so it's very convenient to create such a separate list for preparation, adding links to pages from the knowledge base. You can also add tags to group questions nicely later on.
  • GitHub. This option is more suitable for those who are accustomed to working with repositories, although it's not very difficult to understand from scratch. You create a repository and simply reproduce the necessary tree-like structure using nested folders and Markdown files. Markdown allows you to easily format text, add links, lists, tables, and code snippets. GitHub allows you to view folders in a tree-like structure and beautifully display your Markdown online, securely store your base on its servers, provide page links to your colleagues, and more. And you can edit your knowledge base (as well as view it locally) using your favorite IDE. Behind the apparent simplicity and obviousness of this approach lies quite a lot of advantages and possibilities. I haven't made up my mind yet, but I'm considering it.

I also would like to add that you can not limit yourself to one tool, but combine all these three tools. For instance, you can use Notion as your primary knowledge base, where you organize and structure your information. Then, you can use GitHub (or any other preferred repository) to store code examples and projects. Additionally, Google Drive can be utilized for creating extensive documents, spreadsheets, and storing other necessary files. And In Notion, you just have to add links to your resources stored in both GitHub and Google Drive. This approach would likely provide the most comprehensive and functional solution.

Let's wrap it up here. Don't consider the above as the only correct approach or a comprehensive guide to creating a personal knowledge base. It's rather a starting point, my experience, which I hope will be useful to you, help you optimize your information management processes or at least make you think about the existence of such an approach.

See you and may the sun shine for you! :)

要查看或添加评论,请登录

社区洞察

其他会员也浏览了