Note taking for software development

topic: Knowledge Management

As a software developer, you are bound to work on multiple projects, most likely at the same time. This means you have to constantly context switch, and that introduces friction in your mental model if you don't take notes about it.

This is the reason you need Project Note.

Project Notes

This note needs to answer a few question.

  1. what was I doing the last time I worked on this project?
    1. what are the things I have tried, what are the things to try
    2. pending tasks
  2. why I decided to do things in this way?
  3. Is there anything I have learned?

Therefore in order to achieve the above, we need a few things in the note.

  1. track the train of thought
  2. list down planned approaches, the results after trying those approaches
  3. list down the decisions and why you made that decision
  4. tracking of when you did what. Essentially like a dated entry to your journal about a specific project.

Over the course of your work on projects, you will encounter new things you have learned. On the heat of the moment, you can just write down your findings and thoughts in the same note. But they should later be reviewed and extracted into a separate note. This type of note is called Knowledge Base note.

For example, I learned about Hugepages and what they do when I was working on DPI Engine using DPDK. Then I extracted it into a separate note for my future reference.

Knowledge base note

This note is the culmination of what you have learned over the work you did for project. Or it could be just a new topic that you are interested in and researching yourself.

Typically this type of note does the following

  1. target a specific reusable piece of reference information, that could be applicable to many projects
  2. serves as a one stop reference for a specific note, e.g. Hugepages.

Nowadays due to the popularity of the Large Language Model, one might think that what is the point of having your own knowledge base when you can just chat to the LLM chatbot anytime and get the answer to your question?

I have a few things to say to it.

  1. you are outsourcing your own thinking to a chatbot. You lose what you don't use, and starts to atrophy your own thinking muscles.
  2. even though frontier models are pretty good, they still can't solve your problem in one shot.
  3. keeping your own notes solidifies your own understanding, as you will have to type it out yourself.

My personal workflow is to rely heavily on my own knowledge base notes for my general knowledge. Even if I end up researching online or asking LLM, I would still distill what is necessary, and important to my knowledge base note, so that it grows over time and the usefulness expands.

Types of notes

  1. Project Notes: journal entries for a specific project
  2. Knowledge base Notes: specific reference note

Also checkout Notes for Newbie Developers.