Don’t try to read a lot of different books at once (I prefer to read one non-fiction and one or two fiction books at once). I find it very difficult to grasp the material if I’m reading several technical books at once and I’m still a student. If you find yourself switching between several books, you might have picked the wrong resources to learn from. A good book, even a technical one, should pull you in and never let go. If you stop midway you’ll most likely forget much of what you have read when you return.
This really resonates with me as I have often 2-3 books on a particular subject that I will quickly skim through to find the one that I want to spend more time studying.
A good book will keep me amazed from the first page to the last, even if it's a programming book (FYI, Learn You a Haskell for Great Good is such a book - wish all of them were of the same quality), and I won't find it hard to remember what I read a day before. When the author makes the book interesting, I found that it sticks to me much more easily.
So, find good books, that are a joy to read, and you'll have a much easier time absorbing their content ;)
Most IDE's also have a clips feature or something similar that may work well for code storage.
Bring up the more interesting concepts in discussions and gather your friends' thoughts on them.
1. Write notes in a separate, clean notebook.
2. Ask questions. Write down the questions.
3. Read fewer books, but read them well.
For me, writing and asking questions significantly enhance reading comprehension.