For myself, the process of learning something is:

    while (1)
        read classic books
        do some related practice deliberately
    end while

Here are two examples.

Example 1 Programming

First step, read classic books. Currently, I'm reading The C Programming Language and The UNIX Programming Environment. The former shows that nearly everything I am interested about C, and the latter gives me capability to delve into the world of UNIX OS.

Second step, do some practice. Both of books provide exercises, and I try to give answers based on my understanding. I manage them in my github repository:

Although doing exercises costs a lot of time and makes reading little slow, it is salutary and do improve my programming ability, and I recommand everyone who want to learn programming doing like that.

Finally, iterate to first step, then second step and go on. Read a little, write a little, that's all!

Example 2 Ping Pong

First step, read classic books - 乒乓球 直板反胶打法训练, written by WuJingping, who is one of the most famous chinese national coaches. This book could answer any questions about Ping Pong of mine.

Second step, do some practice. I give 10 minutes of my lunch time to practice Ping Pong everyday, and try to deploy points in the book during the process. I have to say that it's effective to level my skill up.

Finally, go to the first step, then second step and go on.