Two principles I see at play here are fluency (a mapping between a desired action and the physical action of using a tool) and parsimony (building something in the simplest or cleverest way to achieve the goal). You get fluency through practice and the parsimony comes through experience, a kind of wisdom - similar but I different concepts.
With software engineering, I think when you're comfortable with the syntax and capabilities of the language you're working with, you get fluency. And then once you have experience using the standard library and some common external libs, you learn parsimony.