The way I work is a kind of iterative process. If I understand something fine first time around, great. Otherwise (assuming it's something practical) I try building from small examples and (with a lot of swearing) get something to work.
Usually what happens is that a while later (days, weeks...just depending) I come across the same questions again except this time I understand it a lot easier. I think one of the best ways is trying to look at problems from a lot of different angles - usually if you can get multiple different explanations of something you end up with a good understanding.
For example, one of the guys at work that I tend to ask questions will answer by jumping off on loads of tangents, not all of which I understand. A lot of the time my mind wanders and I forget (consciously) what he's talking about. What I usually find is that a while later I'll be doing something and suddenly remember part of the conversation that I didn't understand at first and realise what he was talking about.
I find the best way for me to learn is by experimentation because I struggle to read and understand lots of theory without a practical use/example to back it up with.
ac
