It's a fascination of mine that I regularly work with folk who have been doing this stuff for ten and sometimes twenty years, yet still don't really understand what they are doing.
They can make stuff work, of course, anyone can do that with a little persistence, but actually understanding how the pieces fit together and -- much more importantly -- why they do in the way they do, that's much rarer.
Whenever I learn a new language, like everyone, I come up against variables, and operators, and integers, and structs, and conditionals, and so on. They all look the same, but the interesting thing is how they interconnect and interoperate in the new environment. That's often far from obvious. It's easy to think it's obvious, because I can make stuff work like the next guy, but it rarely is.
For example, very few folk understand conditionals. You very rarely need them in OO or FP, yet you see them everywhere.
That's what holds my interest with a new language. Language designers are often very smart folk (though not always). I like to find out why things are the way they are.