Note-Taking has always been a difficult task for me. I would rarely write them and, when I happen to write some, they would most certainly never be reviewed. Although there is still some value in writing throwaway notes just for the sake of writing, I wanted to look for a way to solve both of these issues, and I believe Zettelkasten might be the solution.
What is Zettelkasten
From the German "slip-box", Zettelkasten is a note-taking method that prioritizes taking short, concise notes that are highly connected to one another. Traditionally, the technique consisted of writing notes and index cards on small pieces of paper, then grouping these notes in one (or multiple) "slip-box". These notes would then all have some unique identifier which would be used to link notes together. We could almost think of it as a personalized wiki where each note is a mini article that would reference many other articles.
The technique was popularized in the 1950s by German sociologist Niklas Luhmann, who ended up writing over 90,000 cards. Over his career, Luhmann was exceptionally prolific with over 70 books and 400 articles published on a variety of subjects including law, economy, art, or even religion. Luhmann credited much of his productivity to this system, and this network of notes that he developed and grew over 40 years.
The three principles of Zettelkasten
The system relies on three principles which need to be used together to create a useful, almost "living" knowledge system.
Atomicity
Ideally, each note should contain just one idea. This makes the note more concise and clear. As a result, information is easier to manage, it is easier to link notes together and reuse them. Because we have to synthesize information, I find that we have a better understanding of the material and notes become easier to review.
Connectivity
Each note is related to some other notes. This is the core principle underlying the Zettelkasten method. Connecting notes can be accomplished via different means. Some notes can be explicitly linked to one another while others may just share the same tag. Over time, you might find that some notes written years ago can suddenly emerge because they're related to a new note you're writing, and new thoughts could emerge as a result. These unexpected connections are what makes this system appealing.
Flexibility
The system does not require a rigid hierarchy. All the notes could, in theory, just stay in one big folder and the connections between notes do the heavy lifting. This allows information to grow organically: notes can belong to multiple categories and unexpected connections can appear between completely unrelated notes. In the end, what matters is that you should not have restrictions about where to put your notes. For example, Luhmann had a numbering system that allowed each note to have a unique id and connections between other notes:

Notes were placed in a tree-like structure and numbers allowed for "easy" retrieval. Notes could be easily referenced and new notes could be added to extend old ones if needed.
Zettelkasten in the 21st century
Nowadays, modern software makes implementing this method much easier. Some recommend using Obsidian, Notion, or even plain old text files. From what I've seen, using a system that provides explicit support for this method seems to be the way to go. Any system supporting some kind of markdown should be good to use, as it makes it relatively easy to reference and search other notes.
If I ever intend to use this method long-term, I think I'll stick to plain old markdown files, that I have complete ownership of. This way, I am sure to be able to use my notes however I want, in a way that's simple for me, without worrying too much about potential privacy issues. If I ever want to make things really spicy in the future, I'll think about using a more elaborate setup, maybe with some neovim plugins (I'm currently imagining a fictional audience audibly gasping at this suggestion)
Final thoughts
I'll end this post with a final observation: this system of note-taking is actually quite similar to software engineering as a whole. Notes should be atomic (single responsibility principle) and many people using this method recommend to make "chunks" of notes that are highly connected, which is not unlike having low coupling and high cohesion. As such, building a good Zettelkasten might not be too different from building good maintainable software :)
In the end, Zettelkasten is not a silver bullet. Getting the most out of this system takes a really long time and a huge amount of notes. The benefits are not immediately apparent, and synthesizing notes also requires quite a bit of effort. To get the most out of this system, one needs to be very consistent and maintain a habit of taking notes. Also, not every note should be included in the system. Some notes are meant to be thrown away, reminders and todos are also maybe better handled by another system.
However, I appreciate that it takes a different approach compared to anything I've encountered so far, and I'm willing to take a stab at it, and see if I can make it a long-term habit. What really stood out to me, is that this system encourages you to think and be creative. You have to consider the whole web of notes to see how the note you're writing can be integrated within your knowledge base, and it adds an interactive aspect to note-taking that I really appreciate. Whether I will still be using this method a year from now remains to be seen.