My practice proved that there are two good/easy ways to learn a new technology:
- Re-implement it by your own
- See how the concepts you already know fit in it
In some cases the first approach is too big overhead. For instance, if you want to understand how the kernel works it is far too complex and slow to re-implement it. It might work to implement a light version of it (a model), which abstracts components that are not interesting for your learning purposes.
The second approach works pretty good, especially if you have previous experience with similar technologies. A proof for this is the paper I wrote -
... read the whole story at blog.mgechev.com.