Understanding how the plane works goes a long way towards developing the right instincts. For example, understanding the aerodynamics of stalls helped me greatly in developing an instinct for keeping the ailerons neutral and being active on the rudder during recovery. Likewise, understanding the mechanics of carb icing helped me internalize that I should not be surprised if the engine runs even rougher immediately after applying carb heat. Finally, I got skilled at crosswind landings through an iterative process of thinking about the aerodynamics and then adjusting my technique through repeated practice.
I address the topic of "theory vs practice" directly when I said in the post "My answer is I advocate for a computer science education for programmers to the same extent I advocate for an aeronautical engineering degree for pilots. The degrees are relevant, useful, and helpful, but on their own do little to make you a good programmer or a good pilot." My previous post about computer science educations addresses this topic as well. [1]
[1] http://nathanmarz.com/blog/the-limited-value-of-a-computer-s...