I love reading programming books. That is how I got started in the world of programming. With 24 hour internet, my reading habits, especially programming books, has changed. Going through blogs or searching on stackoverflow.com feels faster and efficient than going through a dense technical book.
The other factor that is forcing me away from programming books is the number of programming books released in a year. There are hundreds of programming books released each year and finding books that are worth our time is difficult.
However, I try to read (or atleast re-read) a programming book a month. This blog post is about the techniques I use to read a book effectively.
Skim over contents first
When I start a new book, I try to skim over its contents first. From the table of contents to the index, I scan for all the topics the book is trying to teach. This gives me an idea of what all things I can learn from the book and where to look for them when I need it. This also helps me to read those areas first - which are immediately helpful to the work I’m doing now.
Highlighting important points
This may be a personal choice, but I like to highlight important points in a book so that I can easily come back later and revise it. Even some of the good technical books out there are too verbose sometimes and highlighting helps me to avoid the noise.
Trying out examples/problems
The most important thing in learning a programming language/technology is to actually try it out. Rather than downloading the source code accompanying the text book and executing it, I found it immensely useful to type the programs. It helps me to memorize the concept/code quickly. Also, great books like Structure and Interpretation of Computer Programs usually has exercises at the end of each chapter. It is important to work on these exercises as they help to understand the concepts more and solidify the knowledge.
Using “Spaced Repetition”
Using a SRS (Spaced Repetition) software helps to memorize concepts faster. This is a fascinating subject that deserves a blog post on its own. Simply, you give a bunch of facts to a spaced repetition software and it will quiz you every day using those facts. During each question, the software will ask if you if the question was easy for you or it was hard. If its easy, it wont ask you same question again for a long period or if its hard, it will ask you the same question again in a few minutes. I use Anki SRS in my linux machine. Anki runs on almost all platform out there including Mac, Windows, Android etc. And its open source and written in Python :)
Nobody wants to read a book, let alone a programming book, when they are tired. Choosing a good time, like early in the morning, can help sometimes.
Joining a reading group
Finally, if you can, joining a reading group can be useful. It need not be a group; anyone you can discuss the concepts will be fine. However, a group will consist of people with varying technical knowledge. You can learn (or teach) a lot from them. This helps to keep up motivation and interest too.
It is hard to master a big programming book. I cannot say if the above techniques will help me or you to master a programming book. More than anything it depends on our motivation and author’s ability to present concepts in a digestive format. The above points helped me so far.