The Evolution of my note-taking Method and Tool

Taking notes is quite important to (a programmer)/(an engineer), as we need to

  • Involve a lot of details to implement a program or resolve real problems.
  • Learn a lot of new technologies to improve systems.
  • Have good structure learning and thinking to beyond scattered points and details. Which needs us to adjust the old structure based on previous notes.

My note-taking method and tool have evolved four generations in the past 8+ years of working.


Generation 1: take notes as documents


Requirements

  1. Support rich-text documents.
  2. Sync between different clients.

Tools

  • Evernote

Generation 2: use markup language to replace rich-text


Requirements

  1. Support markup language. Then we have a standard way to format the notes and saved a lot of time of adjusting the format. A very general markup language is Markdown.
  2. Sync between different clients.

Tools


Generation 3: take notes based on events/tasks/issues/questions (Event Driven)


Requirements

  1. Support markup language.
  2. Sync between different clients.
  3. Events based. This way is consistent with programmers’ daily work - when we need to implement features or fix bugs:
    • We will have (a ticket)/(an issue) for each event
    • We update the issue with comments
    • We can manage and filter tickets with different attributes - labels, time estimation, priority …
    • We can build different boards to track them

Tools


Generation 4: use infinite-zoom lists for better structure


Requirements

  1. Support markup language.
  2. Sync between different clients.
  3. Event level view support.
  4. Infinite-zoom lists. Can zoom in and zoom out easily

    • Zoom in to focus on an item, then it just likes an event-based view
    • Zoom out to have a high level structure view

    With time going, we will experience more events/points and then we will build a more comprehensive structure.

Tools