I'll start off by discussing about the Human Nature.
Human beings in general are more prone to learning something in a way that they find compatible according to their mode of life.
But if a learning method is designed revolving around a practical approach of the subject into the lives of the learner then the result will be phenomenal.
If I have to teach C++ to a 12 year old kid, I'll begin by exposing the benefits of learning it and how it will affect their lives, in this case they can write code to solve homework problems or unleash their creativity onto a computer, etc.
What I mean to say is the Combo of a theoretical and a Practical approach can be effective.
I personally like to read books and dig knowledge out of the world be it reading an article or talking to an experienced person.
Possibilities are endless.
Hope I helped!
I've used both, sometimes I see my mentor and observe what they do, and otherwise, I ask for some code to tinker with and understand. The latter has helped me get hands-on with multiple libraries, where the conventional reading the tutorial would have taken a lot more time. But for me, a larger part is in actually working on a dummy project.
We're a place where coders share, stay up-to-date and grow their careers.
We strive for transparency and don't collect excess data.