Reading a book
Reading a book is probably the most traditional way of studying and I do read a few books every year. To me this is a way to learn theory and principles of something but usually little to nothing to do with the actual implementation. This type book I usually read in a week or two and I like these books when their length is reasonable somewhere between 50 and 250 pages.
Reading a book with exercises
These are very common type of books in software development. These usually cover some theory and the exercises bring a pragramatic approach with what one can learn a basic implementation. Some of these books are good if they have good examples but a great number of these type of books are way too long to keep me interested all the way to the end.
Attending a online course
I'm currently attending one, actually my first one. This course contains several video lectures per week split in to 2 to 10 minute pieces, quizzes after lessons and homework that's validated instantly. To me this seems to be a great way to learn. Video lectures contains theory and implementation examples, quizzes are questions of the theory or implementation and homework is implementing and that gives a pragmatic approach to the topic. On the other side this type learning requires quite a lot of time per week.
Working through a tutorialTutorials are usually a good way to learn a basics of a framework or a language or howto use a tool. The hardest part is usually to find a good tutorial.
The internet is full of different resources to use. I follow several websites that collect news, tutorials and blog posts e.g. dzone and infoq. I also follow people and feeds on google+ and twitter and these are a great way for me to share interesting news and posts with others.
These were my thoughts about studying and developing myself. There are probably other ways of learning that I didn't cover here or haven't tried leave a comment if you have one in mind.