A new favorite book of mine is "You Are Not So Smart" by David McRaney. It lists dozens of common cognitive mistakes humans make constantly, ranging from how we disorganize social relationships, misinterpret the world around us, and invent fake motivations and memories.
Why would I like this book? It's a great list of my mind's limitations, and only by knowing those I get around them. One of the most important is how (un)reliably I remember what I read.
That is to say, not reliably at all. Certainly not when it comes to coding.
An example is my recent purchase, "Accessibility for Everyone" by Laura Kalbag (or really, anything amazing from A Book Apart). I skimmed it before reading through the sections in-depth. But if I wanted to really use anything from that book, say in a new project, I wouldn't remember virtually anything useful. I'd have to crack open the book and search all over again - at best I'd just know where to start looking. Considering how much info most developers process each day, this happens all the time. It only goes away with info I read at least five times.
This is why writing down notes on everything I read is an important habit I've sadly let falter. My own preference is a Github repo full of markdown files with notes on books, blog posts, and whatever else I want to save for later. Important syntax rules, term definitions, personal tricks or ideas, quotes or summaries - I write down anything I find inspiring or useful from the texts. So far these have included:
- Tips for maintainable CSS and front-end libraries
- Basics of web typography
- Important Git commands I tend to forget
- Styleguide and CSS tips from "Hardboiled Web Design."
- Effective UI and UX from "Don't Make Me Think."
- The principles of Essentialism
- The major tips and takeaways on a book for not being ashamed of being single (judge all you want, it was a great read!)
Just writing down these notes has many benefits:
- It helps me separate the signal from the noise, and keep them separate. Looking for something is easier when I don't need to navigate a book or blog post, and for extra help I have the search function.
- It forces me to distill important info from the larger source. The easier I want my note-taking to be, the faster I need to get to the point.
- Others can reference your notes if you keep them in a public repo. This is a win for the open-source community, beginners looking for good resources, or your career if scouters or developers looking to hire see your focus on learning more.
- It's always fun yet productive to relax and flip through past notes.
I'm not claiming taking notes is more important than writing actual code. But in my coding workflow, I'm seeing that my note-taking is part of an important balancing act. Finishing a project gives me a huge, euphoric sense of accomplishment that's like a drug hit - I'm anxious and rushed to get the next. Recording my new knowledge gives me a gradual, calmer sense of accomplishment that scales well over time. It helps me better examine what I'm learning and not overlook important details. In the long run, it makes learning easier and helps me remember more. As a bonus, it may even help others who read them.
This is all part of why I'm a big supporter of programmers doing more writing outside of just code. If not for others to read, than for yourself to improve your knowledge and craft that much more.