I hated my Automata and Functional Programming Language classes because I was forced to write out formal proofs to prove really obvious programs to be correct, or to demonstrate something arcane as the Turing machine. But it forced me to think about programming in a different light and find my own way to find the solution.
This reminds me to always to look under the hood of all of the web frameworks, data ORM's that I'm using and to improve my 3rd party libraries, in programming. Also in music, not to blindly play the scales or the tabs of popular music, but learn the different patterns, what makes a song tick, and composition. Also in sports, not just play or practice according to drills, but to analyze post-game what went right, what went wrong, and to apply it in future matches.