As someone who's never really been able to break into coding my biggest problem with most of the learning material is it does not tackle a broader perspective on problem solving. Learning syntax and libraries is easy. Knowing where to apply them and how to architect your program is the really hard part. I'm not sure how you learn that other than experience and for a novice that means countless hours of work before they can produce anything unique and useful.