No matter where you come from or what your background may be, you take notes. There is no escaping them. Whether you write them down, record them digitally, or just store them mentally (arguably not very reliable unless you have an eidetic memory), you are taking notes.
As a developer taking notes is a soft skill that probably doesn't even register on your radar, you would rather spend 3 days learning a new compiler than spend 15 minutes improving your note-taking, and that's cool, but the pay-off for efficient notes can be huge, and an investment well worth your time.
On the most simple level, efficient notes will allow you to confidently forget something you've learnt or must remember, safe in the knowledge that you will be able to find that information again in your notes at a moments notice, freeing up your brain for more pressing tasks, such as learning new compilers, or solving complex problems in your new app.
Types of Notes
All forms of note-taking can be distilled down to three types:
- Information Retention
- Progress Tracking
- Idea Exploration
Information Retention is all about remembering things; Shopping lists, copying from text-books in school (in your own words of course), to do lists, minutes at a meeting. These are all forms of Information Retention, as in, if you don't write this down, you're going to forget it. There can be many different forms of outcome from Information Retention notes. Sometimes you want to use them to track your progress (a to do list), other times you just want them as a record of who said what at a meeting (minutes).
Progress Tracking is more about visualising a series of steps or actions. To do lists, Diaries and Planners, and Gantt Charts are all forms of Progress Tracking notes.
Finally, there is Idea Exploration. This is where writing something down can help you visualise it and grasp it better. This could be a sketch, a wireframe, or a mind-map.
There is some considerable overlap between these three types of notes, for example, it could be argued that a shopping list could be both Progress Tracking (ticking items off as you purchase them) and Information Retention (if you don't write items down you might forget them). That's okay. A list can be either or both, depending on how you use it.
Putting these note types to work for you as a developer, and ultimately helping you increase your productivity involves two things:
- How you organise your notes
- Learning and applying some basic techniques
An organisation system is the most vital of the two things you need for productive note-taking. You can get by writing your notes down long form, but if you can't find a specific piece of information when you need it, you may as well not have it.
There are many organisation systems, the most popular of which is "Getting Things Done" (or GTD). GTD is not a system I would recommend. GTD has something called Contexts, and you will find a large portion of the information on The Internet relating to GTD seems to be people coming up with systems for dealing with contexts and attempting to make them less complex (like using cards and clips or envelopes instead of notebooks, e.g. "The Hipster PDA"1).
The reason for contexts in GTD (and ultimately why people seem to use cards and envelopes instead of notebooks to manage them), is also the main reason you need an organisation system in the first place: Notes are liner in nature, but your thoughts are not. This means you could be writing out a to-do list, and then something pops into your head about another project, and you need to write it down immediately, but then it's completely out of context (in the non GTD sense) and not related to the original train of thought for the project.
You can't have tags or cross-references in paper-based notes, so how you organise your notes becomes just as important as the notes themselves. Contexts (and by extension systems such as using cards, envelopes etc instead of a normal notebook) in GTD attempt to overcome this by grouping your notes logically and in a way that makes it "easy" to move the "pages" around. This is one way to achieve the ultimate goal of organised notes, but is very complex, and my feeling is that you'll spend more time running the system than you gain by having the notes.
GTD does have one important thing right, which is something that I think is the key to improving your productivity through note-taking, and that is: Everything in your head gets written down. By writing down absolutely everything, and having an organisation system that you are 100% confident in (meaning you can find anything as soon as you need it), you free your mind to work on other, more important tasks (such as writing code).
If you want to come up with your own method, I recommend starting with a table of contents and page numbers! But if you'd like to hear about the system I've come up with, you can checkout my talk on the subject at CodeConnexx 2013. Otherwise, subscribe below and I'll be sure to post the sides and write a post about it once the talk is over!