This question probably isn't the most useful, but it's always been a curiosity of mine. A recent look at Rick Hickey's Clojure bookshelf (http://www.amazon.com/Clojure-Bookshelf/lm/R3LG3ZBZS4GCTH/ref=cm_lm_byauthor_title_full) while trying to decide which book to tackle next prompted this question.<p>First, some definitions.<p>By digest, I mean to internalise all the core concepts of the text. I'm not just talking about practical implementation here; one recent personal example was the implementation of Hume and Sunday's Tuned-Boyer-Moore algorithm. I could express the algorithm pretty easily, but never knew what "unrolling the inner loop" meant until exploring and staring at various sources for a month. That represented probably about 30 hours of total time, something which, on the surface, seems like a horrendous waste of time (I learnt a lot while researching that of course - but it doesn't feel like it.).<p>By Hard Programming Text, I mean any document (book/paper/etc) which requires that you understand a completely new paradigm, or that changes substantially the quantity of your knowledge. So for example, a book like "Lisp in Small Pieces", which taught me the concept of Continuations, was considerably hard on the conceptual side. This also took at least a month of conscious connecting the dots between what was in the text, tail-recursion, and those funny callback functions I've been writing in nodejs, before i "Got it".<p>Naturally, that process is a little draining, but brings with it it's rewards. Still, what immediately follows is the reflective stage, when which I question whether I'm wasting my time, bringing to mind the images of first-hand experiences with people who just seem to internalise novel concepts like a sponge.<p>Anyway, TL;DR - understanding a programming text is really difficult, how long does it take you to internalise the concepts in that text, and what do you do to speed it up (if possible)?