I recently looked through Structure and Interpretation of Computer Programs and was surprised by how large and demanding it is. I'm comfortable with programming—I've built a CHIP-8 emulator and a few smaller projects—but I still worry about reading without truly understanding the material. What's a good balance between reading, taking notes, writing programs, and completing exercises? How can I avoid missing important concepts while working through a book like this?
3 Answers
SICP is the kind of book that becomes more valuable when you revisit it. It’s fine to read selectively, pause when a concept gets difficult, and move on temporarily rather than getting stuck for days. Keep building small projects alongside it so the ideas have somewhere practical to land.
A helpful routine is to watch the accompanying lectures first, read the related chapter afterward, and then work through exercises or small experiments. Writing code immediately will expose gaps much faster than just taking detailed notes. You don’t need to solve every exercise on the first pass—mark difficult sections and return to them later.
Take it steadily, but don’t treat finishing pages as the goal. Read a small section, stop to explain the idea in your own words, and try the examples yourself. The exercises are where much of the learning happens, so spend time solving the important ones instead of rushing through every page.
That makes sense. I’m mostly worried that I’ll keep reading without realizing I’ve misunderstood something.

I’d also avoid making elaborate notes. A short summary, a few questions, and working code are usually more useful than rewriting the chapter.