| I am going to write my answer before reading others' comments, because I don't want to be primed by the other comments. Because we are all different in some sense, and yet similar in the main sense, certain strategies work for all of us, while some for only those who are similar in that narrow sense. I need not mention the general sense, since I suspect there maybe many comments with a high probability of mentioning the general case. In the narrow case of what works only for me, I cannot learn when I don't have a big picture context for my learning. A Book like Lubanovic's Python cookbook is certainly not my style. I need an overall context, so that each small bit makes sense within that context. For instance, if I want to learn a foreign language word, seeing it deciphered in a textbook, alongside a text does not guarantee my learning it or remembering. Even less so, if it is a word in a "word list dictionary". I need a text which excites my interest enough to want to know the unknown words in it. A Reader's-Digest-like shallow text is not exciting or stimulating enough. Ditto to programming and CS. I need to know where each learning bit fits in the overall scheme and the scheme should be exciting. I don't want to learn (cannot) simply because something is popular due to network effects (C++) when I know there are better solutions like a combination of Rust, Racket, and Ruby. I also need to know whether it is worth my input. Like in the C+ case, is my effort paid in triplicate? If not, not interested. Intrinsic motivation in learning something can translate to a pay off, but it better be as good as (similar input output ratio) Scheme/Lisp/Racket to justify learning it. Recently I have been looking at Java, in the popular book by Eckel. I am having doubts as to whether I should go deeper in Ruby or also see what Java offers. My motivation is damped by the way Scala is written since it seems to be what Java aimed to be but couldn't. I am stuck now. On one hand, I want to know If I am missing something if I dont learn Java. On the other, I dont want to learn sth arcane and programmer-unfriendly when and since I have alternatives like Scala and Ruby and Kotlin. Hence, for me to want to learn creates the necessary mental readiness to actually learn it. I picked up Ruby fairly quickly because the explanations by David Black, in his Well Grounded Rubyist were excellent enough to allow me to learn it all in one place, with zero frustrations. In summary, for me to learn sth, it has to be useful, interesting, stimulating, and practice-friendly. After this is satisfied, I need clear explanations and logical progression with hands-on real-world applications. With all this, I dont need any tricks or strategies. It will all fall into place. Best, James |