There is a lot of information available to us - more than ever before. Thousands of books and scientific papers are being published each day, along with millions of websites and hours upon hours of video resources. There are so many tools, frameworks and packages available for a developer to use. How do you keep track of it all and make use of it effectively? It’s impossible for one person to make good use of this much information without help or tools.
As consultants, it is important that we have knowledge of the area we are working in. This might be testing, front-end / back-end design, product ownership or any other function. As well as this we also work in a variety of industries, requiring specific domain knowledge and the ability to tackle problems that are specific to a client. It is frustrating to hit a problem you know you have solved before and not remember how you did it (or which StackOverflow post had the right answer).
To help solve this problem, you can use the Zettelkasten (translates to “slip box”) Method. It is used to store and organise your thoughts, things you have learned or read, and things you are working on.
A physical Zettelkasten1
A social scientist called Niklas Luhmann, who wrote more than 70 books and 400 articles over his lifetime, states that his productivity stemmed largely from working in partnership with his Zettelkasten. His collection was made up of around 90,000 index cards, and some of it is available for you to traverse online.
Computers make the process of navigating a Zettelkasten much easier, for example in Wikipedia we simply use hyperlinks to traverse between many pages. You can think of a Zettelkasten as your own personal Wikipedia site, made up only of your thoughts, ideas, and learning from you alone.
Using a digital Zettelkasten
There are a few tools out there to help you create and manage your own set of knowledge using the Zettelkasten method (a digital Zettelkasten is sometimes referred to as a Second Brain or Digital Garden), such as Roam Research, Zettlr, Obsidian, Foam, and Logseq. All of these use markdown files to take notes, allowing you to link them together with hyperlinks. I personally ended up choosing Foam due to its integration with VSCode and GitHub, plus the fact that I currently use mine to store software development related information so a development IDE felt right (however I’m planning on storing more topics in there as time goes by).
Using Foam’s VSCode plugin allows you to easily add, view and manage your notes. It even shows a handy graph tool with a visualisation of how all of your notes interlink and has note link autocompletion. This means you can easily add to and link together existing notes, creating a network of linked ideas. Since you’re storing the markdown files on GitHub, you can publish your notes online via GitHub pages, so that your knowledge base is available anywhere you have internet.
VSCode with Foam
I’ve only just started using mine, so I only have a handful of notes. In order to grow your Zettelkasten you should always note down things you learn; if you discover how to fix something then you should make a quick note of it and worry about sorting it later. By getting into the habit of noting things and thoughts down, you’ll quickly find that many of your notes end up linking to each other and forming a useful network of information for you to dig into when needed.
How it can help you
We use Zettelkasten-like things on a daily basis: Confluence pages that show us how to fix a common problem, or a list of hurdles you might come across when onboarding on a project. Having this kind of information available helps things move along quickly instead of having to discover and explain the steps every time.
A personal Zettelkasten helps you achieve this but is tailored specifically to you. For example your notes can have a StackOverflow link along with some context and a title and some tags which you can then refer back to and easily locate and use this information again. When you discover a really neat fix to an issue, you can write a brief note about your solution and have it ready next time you come across the problem. You don’t have to format your notes in a way that’s suitable to be consumed by others, and you can store anything that you think will be of value to you later.
I can think of a lot of times on a previous project where having this information would have helped, and I’m finding the process of noting things down and filing it away in a virtual Zettelkasten to be satisfying. If you give this a go I hope that it helps you save time and effort at some point in the future too.