Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

Not because I care how long it takes someone to read a book, but more because I'm interested in how people get the knowledge from a book (or I guess other sources) into their brains in the best, most efficient way.

Personally I take a multi-pass approach (from my answer to the original question):

  1. Skim through contents, dip in and read anything with an interesting looking heading and finally gawp at any nice diagrams and illustrations. I won't take much in at this stage, but it gives me a mental view of the book (an hour or so at most)
  2. First pass through the book, generally I'll read the opening chapters thoroughly for a book that is either very heavy going or introduces something completely new. For books that cover a subject I already know about I'll skim or skip bits that seem trivial. The remainder of the book I'll go through reasonably quickly but not so quickly that I'm just page flipping. (about a week)
  3. Not all books that I read make it this far, but if I find a book interesting or useful enough I'll then study it properly. I will go through the book at a slower pace and do some or all of the examples, try out code, etc. I will often skip entire chapters here unless the book is really good (1-3 weeks depending on the book).
  4. Finally when I've finished reading it and am reading other books I will often dip into it again and again to cross-reference, compare, look things up, browse, etc - so many of my favourite books don't just end up gathering dust on the bookshelf.

I rarely take notes when reading (although I may do some planning on paper if I'm working through something like a code sample). I've also considered starting to use a personal kanban for organising my progress, but have never quite got around to using that technique. Mindmaps are another thing I like the idea of but rarely do.

What other methods to people have? How successful do you find them? Are there any commonly recommended techniques that you feel are a waste of time?

share|improve this question
add comment

6 Answers

Do the exercises.

If there aren't any, invent some.

share|improve this answer
3  
And after doing the exercises, re-implement them in your own code in your own way. Examples are fine and well, but nothing like a real-world implementation to fully comprehend a concept. –  Hugo Oct 18 '10 at 1:04
    
+1: you can add this to the top of this answer: "Practice." –  Klaim Feb 19 '12 at 12:07
    
All programming books these days towards the end come up with a short project. Doing that is biggest benchmark anyone can have of themselves to track the progress. –  Dredd May 7 '12 at 18:40
add comment

Make sure that you apply some of the techniques in your day-to-day programming as soon as possible.

I find that if I don't immediately apply things I've learnt I have to re-visit them when I do actually need them.

share|improve this answer
    
Absolutely. Also I think that it's only when you apply something in a context different to the one presented in the book do you really swap from memorising to understanding. Unfortunately it's not always possible...despite being the development manager where I work, so no-one's going to really question me if I can come up with a plausible reason why we should do such-and-such in Prolog or whatever, it's sometimes just not appropriate to bring things into day-to-day work. I guess that's what personal projects are for, but then you lose many of the benefits of cumulative learning. –  FinnNk Oct 17 '10 at 20:51
    
@FinnNk - I didn't say it would be easy ;) That's the problem I've got at the moment with WPF. I'm doing a project at home, but don't get a great deal of time to spend on it so I'm constantly having to revise what I know. –  ChrisF Oct 17 '10 at 20:55
add comment

Highlight anything that surprised you. It will make it easier to find it in the future.

Write in the margins extensively.

If you loan your book to someone, ask the person to follow these same rules, ideally in different colors. This adds value to your book.

share|improve this answer
add comment

Go over it with a friend. Better yet consider reading the book an exercise like Pair Programming, where you both try to explain it to each other. (And of course do the exercises as was said above)

share|improve this answer
add comment

Implement

Implement each new algorithm or technique your read about on your own, using only your memory of the description of the algorithm or technique as reference.

share|improve this answer
add comment

Due to an attention deficiency of mine, I find it hard to focus when I'm learning in a traditional, start-to-finish approach. I skip to the end of the chapter and go straight to the exercises, and then use a combination of the book and the internet as reference to solve the problems.

Once I put myself into a position where I have to use the book material as means to an end instead of studying it "because I should know it", the concepts become much easier to pick up and practice.

My focus issues also mean I don't type out the code examples directly, and instead think of my own examples and use the code in the book to help me realize them. Being creative with the learning process ensures that I'm having fun with it, and the uniqueness of whatever I create makes it easier to remember what I'm doing.

share|improve this answer
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.