Knowledge Management for Software Developers
Tags: studying, learning, tips, developer
Published: 2023-06-02 15:03:07

As developers there is so much information that we need to retain in order to be able to do our jobs. 

There is the general programming knowledge such as language syntax, design patterns and architectural best practices that we need to remember. 

But there is also going to be a lot of domain-specific information that you need to know to be able to actually solve problems for those you work for.

When I used to work in the payments industry I had to know how card payments worked from end to end and it was just too much information to store in my head.

{% embed https://www.youtube.com/watch?v=AMxrjL0UpeE %}

[Subscribe for more video content](https://youtube.com/channel/UCm6lURZOeBVCZ5hJpqlUB-g?sub_confirmation=1)

Whether you are currently learning how to program or you are trying to work your way up the engineering career ladder, you need a system to be able to retain all of this knowledge.

This is where knowledge management systems come in or KMS for short. KMS is really just a fancy way of taking notes, linking them together and organising them.

Now you may have heard of people talking about the Second Brain or the Zettlekasten method. These are both ways that you can organise your notes.

The Second Brain method is a bit more structured and uses folders to split out things like projects and knowledge areas whereas the Zettlekasten method is a bit more free and consists of most of your notes in just one folder. 

It really doesn't matter what method you choose especially if your goal is just to remember things that you have learned. These methods are mostly for writers and creators who need a way to retain knowledge and combine their thoughts into new ideas. For software developers, your notes will probably resemble more of a personal wiki than these other methods.

It can be very easy to get sidetracked and spend too much time trying to come up with the perfect system. 

Don't do that. 

Just focus on taking notes and you can always change how you organise things in the future.

## Developer Features
When it comes to note-taking applications there are quite a few to choose from, however, not all of them are that great for developers.

If you are going to be writing notes about software development then you will likely want a note-taking app that has great support for code blocks as well as the ability to add diagrams.

One of the best ways I have seen for adding diagrams to your notes is to use [Mermaid](https://mermaid.js.org/).

Mermaid has support for loads of different diagrams such as:

- Flowchart
- Sequence Diagram
- Class Diagram
- State Diagram
- Entity Relationship Diagram
- User Journey
- Gantt chart
- Pie Chart
- Requirements diagrams
- Gitgraphs

Depending on what you plan on doing with your notes you may want API support as good plugin support.

So let's have a look at some of the options.

## Popular Note-Taking Tools

### 1. Notion
I am sure you have probably heard of [Notion](https://www.notion.so/) already. It is one of the easiest note-taking apps out there, it works across all devices and it has a very generous free tier.

One of the great things about Notion is the fact that comes with cloud syncing for free which is usually paid feature on a lot of the other note-taking applications. 

Notion has great support for syntax highlighting and it also supports mermaid diagrams as well.

Notion does support markdown but it isn't a proper markdown editor. As soon as you finish writing something it will convert it into the Notion format which means any changes require often require you to use a mouse or delete what you have just written.

Where Notion shines is not in its ability to create notes but in how it organises the data that you put in.

I use Notion for all my planning. Just the ability to have a Kanban board on one view and then switch easily to the calendar is really useful.

Notion also has an API which allows you to do some really cool things with other applications as well. There is a whole load of ready-made integrations that you can use. 

Personally, I have my Notion connected with a self-hosted n8n so I can do things like:

- Schedule Tweets on Twitter
- Update my Kanban board when Videos or blog posts go live
- Keep track of all the keywords that I am trying to rank for

For pure note taking though there are better options out there.

### 2. Obsidian
[Obsidian](https://obsidian.md/) is my personal favourite. It is completely free and has native support for markdown.

In fact, all of your notes are just stored as markdown files on your computer which means if you do want to switch applications in the future it isn't going to be too difficult.

Obsidian supports syntax highlighting and mermaid diagrams just like Notion. It also supports themes and a large amount of official and community-made plugins. You can even set up to use Vim keybindings for those Vim wizards out there. 

The downside of Obsidian is that it doesn't have a free cloud syncing option but for those that are conscious about their privacy that is probably a good thing. 

You can pay for [Obsidian Sync](https://obsidian.md/sync) which will set you back $10 a month however you don't need to. As your notes are just stored as files on your computer you can just place the folder in whatever cloud storage you currently use whether that be iCloud, Dropbox or OneDrive. On top of that, there is also a community plugin that can sync your notes with a private GitHub repository.

Obsidian does come with apps for iOS and Android but to be honest I haven't had the best experience with them.

The apps are probably fine if you don't use a lot of community plugins but for me, I find it locks up quite a bit. 

If the community plugins aren't essential you can make a copy of your `.obsidian` settings folder and rename it to `.obsidian.mobile` and then go to "Settings > About > Override config folder" on your mobile device and then you can disable plugins without it affecting the plugins on your computer.

Overall I really like Obsidian but it isn't everyone's cup of tea so let's look at some of the other options.

### 3. Dendron
If you spend most of your day using VS Code then this option might be for you. [Dendron](https://wiki.dendron.so/) isn't a note-taking app but an extension for VS Code.

Like Obsidian everything is stored as markdown files and it obviously has support for syntax highlighting. It also supports Mermaid diagrams as well out of the box. 

On top of that, you have all of the VS Code extensions that you can use. So if there is a particular extension or theme that you can't live without then this might be the best option for you.

As far as I am aware there are no official mobile apps for VS Code so you are out of like there. If you do want to see your notes on mobile then you potentially could use Obsidian for this as the notes are just markdown files.

I don't use Dendron myself so I haven't tried it so it is possible there could be some compatibility issues that I don't know about. If you do use Dendron and Obsidian together then let us know in the comments below.

### 4. Inkdrop
Another great option this time from an indie developer is called [Inkdrop](https://www.inkdrop.app/). 

Inkdrop has been specifically designed for developers so has full markdown support, syntax highlighting and mermaid support.

It seems to have a pretty good community around it as there are a ton of community-created plugins and themes for it. 

Inkdrop however is not free and it does cost $4.99 a month. It is a lot simpler than Obsidian and the UI is very similar to Apple notes. If you want something simple, developer-focused while supporting an indie developer then Inkdrop might be a good choice.

### 5. Bear
Another option that is often mentioned is [Bear](https://bear.app/). I really like the clean interface that Bear has but it isn't a great option for developers. 

For one it is Mac and iOS only so if you are on Windows or Android you are out of luck.

It does support markdown but it doesn't have full markdown support. So you can't create markdown tables or add images using markdown which is a bit disappointing.

Bear does have syntax highlighting but it doesn't support mermaid diagrams. 

Your notes in Bear are also stored in an SQLite database rather than markdown files so it isn't as flexible as some of the other apps we have mentioned.

Bear does have a nice-looking mobile app but if you want your notes to sync across then you need to sign up for Bear Pro which is $1.49 a month. It isn't a huge amount but I think there are better free options available for developers. 

## Final Thoughts
There are of course other apps available, I know a lot of people like Roam Research but at $15 a month, I can't see the benefits over the other free options here.

Notion is probably the easiest option. My only concern is about having all my notes stored in a proprietary format in the cloud. If something happened to the Notion servers I would lose all my notes so I prefer Obsidian combined with having multiple backups of my notes in lots of different places. That might just be me being paranoid though.

---

## 📨 Are you looking to level up your skills in the tech industry?
My weekly newsletter is written for engineers like you, providing you with the tools you need to excel in your career. [Join here for free →](https://newsletter.alexhyett.com)