My advice would be to throw out the book!
Not literally of course. What I mean is, enter a topic area you have little experience in, and solve hard problems there, without learning about existing solutions. Rely on nothing but your creativity and critical thinking and perhaps a reference manual.
You might design an image format. Or a web server. Or a compression scheme. File system. Kernel. Artificial intelligence. Programming language. Computer vision system.
Something you find interesting, that is reasonably complex, and which you never learned about. Don't read about it: just jump straight in. Experiment. Make mistakes. Reinvent the wheel.
Don't ask for help. Stay away from tutorials. Stay away from the theory. Don't pull a solution off the shelf.
Why?
- We learn best from mistakes.
- It gives you an opportunity to practise coming up with solutions creatively, rather than regurgitating and adapting old solutions.
- You are forced to evaluate your ideas. You can't evaluate them without developing a good understanding of your tools, of the problem you're solving, and of the idea you wish to evaluate. This leads to a deeper understanding of the topic than you would otherwise develop. (Feel free to read about the tools you are using, just don't read about the problem you're trying to solve.)
Make a few attempts, and once you feel happy with what you've achieved, leave it for a few months. Then come back fresh and see if you can find a new perspective. After that, it's time to start reading about the problem and how others have solved it (or talking with people). At this point, instead of saying to yourself "yes, that makes sense" while you read, you'll say "yes, exactly", or "well, to some extent", or "wow, that's clever".
In other words, you'll think much more critically about what you read, and you'll find it much easier to understand and remember because you already have a large "mental framework" to attach it to. You'll feel good about those things which you discovered independently, and you'll walk away with a heap of new knowledge.
Don't try to make your solution perfect. Just prove to yourself that you can solve the problem. Adopt a "can-do" attitude, and if you feel daunted by the problem, remember that the person who first solved it probably knew about as much as you do (in fact, they didn't know it had a solution!).