Part of the perfectionist in me was also trying to understand everything that happened. Like what actually happens when I enter Console.WriteLine("Hello world");? That is always going to be a losing better so I've since subscribed to the "I know how to drive but I don't know how a car operates" school of thought.
Somewhere along the way, I realised programming isnt about hardcore math but more like just grouping actions together in a logical manner.
I relate very much to your perfectionist statement. Keep in mind that each thing you learn about how the underlying machine operates will make you a more effective programmer. Learn about the craft of programming (patterns of design, abstraction, etc.), but don't lose sight of the fact that programs run on physical machines, and our bound by the properties of those machines.
Programming is a harsh mistress, but the rewards are worth it.