Last month I was on jury duty in Brooklyn for two weeks. I learned a lot. However, jury duty is not being offered for the truth of the matter asserted, but merely to show what lead to this blog post. Apologies for the legalese, I was hanging out with lawyers too much!
Anyway, at jury duty we had a lot of free time where we were trapped in a courtroom with no wifi just waiting around for instructions. I decided to take that time to learn something! I downloaded The Rust Programming Language aka TRPL and grabbed my favorite notebook and took them with me to court every day for the last two weeks. On breaks I read chapters of the book and I took notes.
Taking notes doesn't work for everyone, but I find it absolutely necessary to retain knowledge. Notes can be taking in loads of different ways and it's important to find what works best for you. Particularly, I make a point to handwrite most of my notes. There is something visceral and tactile about indexing handwritten notes that helps me remember the topics better. My coworkers kid me about when I first interviewed at Kickstarter, I brought a big notebook and took copious notes during all the interviews. I take notes in lots of different situations, but namely when I'm learning something new at work, when I'm at a conference, or when I'm primarily paying attention to someone else talking/writing.
I find several advantages to taking notes. First, it gives me a written record of everything I've learned. If I timestamp it well (and I usually put hours and minutes as well as dates!) I can get a log of my progress. Second, the act of taking notes well helps me remember what I've learned.
Now, let's discussing what taking notes "well" means.
I think part of the reason we hate having to take notes is the many wasted hours being forced to take them throughout school. Personally, I always loved to handwrite notes. However, there are conflicting studies as to it's actual impact on memory retention. Regardless of if you take digital or handwritten notes, there are techniques you can use to make your notes more effective.
One that I have loved over the years is The Cornell Method. The idea behind the Cornell notes is that you keep "cues" of the main body of the notes along one edge while you go through the materials. The reason I always loved Cornell notes is because you can make the cues whatever you find helps you remember the material the best, not necessarily keywords given in a textbook or by a lecturer. For example, I have a cues for my Rust notes that reference things in the Ruby API that are more familiar to me, so I can say things "like Bundler" for different Cargo commands, which cue me to remembering the context for the notes.
Here are some cues on my notes from Megan Anctil's 2016 Monitorama talk, for example:
A reason that I love Cornell notes' cueing method is it helps with a practice in learning science called recall. The idea behind recall is that rereading information from notes or a textbook are proven to have little effect on longterm memory of the concepts in that material. However, forcing yourself to recall information with flashcards or cues does help. Also, spacing out your study of this material has been shown to help. This is called "delayed retrieval". When we force our minds to stretch for past information with the help of cues, we strengthen those memories to the information.
Another concept connected with notetaking that's been proven to help learning is low stakes testing. Frequent, low stakes testing allows us to practice remembering without the pressure of a live test. It gives us space to reflect on our mistakes and revist faulty places in our memory of certain content. If we take careful notes of our notes (i.e. cues) we can use these as a way of testing ourselves, which is pretty useful! All I do is go back to my Rust notes every couple of days and cover the side of the paper with the verbose notes and force myself to remember concept only from the cues.
Finally, I'm a huge fan of utilizing different sorts of patterns to model complex relationships amongst topics in my notes. Unfortunately for me, I'm not a great artist so usually these come out as squiggly blob drawings. I was inspired to start diagramming more in my notes (and pull requests!) by my coworker Sarah. She has this amazing talk on dev diagrams. Forcing yourself to make models of what you think the connections amongst different concepts are puts you on the road to constructing strong mental models to lean on for those concepts in the future.
A good diagram is a beautiful thing, but in my opinion a series of bad diagrams are just as cool. I love to draw out how I think a system works in my notes only to find it later and be like, "Wow that's not it at all." That's what can also make taking notes wonderful. It's not only a log of your learning. It's a log of your past mistakes. It's powerful because not only is it a source of information. It's a source of your own journey to find that information.
In conclusion, I know it's not for everyone, but learning how to take notes has helped me improve how I learn, which makes me a better developer. Do you take notes? I'd love to hear your note-taking style!