@nixCraft
I think it really depends on the learning style of the learner, which is different for everyone.
I learn best by doing for example, so I either need a course that includes several different hands on projects, or a book/videos/documentation to help me do whatever project I thought up for myself.
Usually this manifests in doing Google-fu while working on a project and not following any one specific book/tutorial/resource.
@nixCraft
do the homework.

@nixCraft in my case I think about learning something then never start even if it is something I want to learn. I have been meaning to learn Python for years now.
However, I do prefer books if I can get my hands on them.