I find that when I am trying to learn something high level I end up worrying about problems that are out of scope like how is this thing implemented etc.
For example, when I am learning Python's Twisted, I end up thinking how can Python define things in such a manner and stuff which leads me to worry mostly about internals of language instead of the problem at hand!
However, I can take another approach where I accept the abstraction and say "OK ... TCP does this ... I need not know more and accept TCP connections are handled when I give this command ..." and carry on with my work and then worry about these things later on?
What exactly do you guys follow? I am perplexed to see many of them so good at both these things, while I just seem to be having a hard time with both :)
Do you really learn topics with abstraction or do you go under the hoods stuff as much as possible?
Maybe you could say I am facing a problem of over-design which is a big problem and need some help to solve this :)