It's a few weeks old, but I liked Zach Beane's post to comp.lang.lisp about “Aha! moments.”
I always like to read specific accounts of this sort of thing, but his description of the themes and his advice are great:
Posted by jjwiseman at November 08, 2006 03:21 PMA few themes: - Despite conceptually understanding how tools like CLOS and closures and conditions work, it took a tricky problem solved neatly by the tool to really make an Aha! moment - Aha! moments have made complicated tasks simpler and unapproachable tasks approachable (given the right amount of time and effort). They take the magic out of things. (Philip Greenspun used to say that his course would teach undergrads how to build Amazon in a semester; despite the hyperbole, it really did take the mystery out of how useful web applications can be constructed.) Advice: - Be actively curious about how interesting things work ("how can cl-ppcre be faster than Perl?") - Be broadly aware of the tools available, and don't worry about immediate application - Don't settle for tedium (it's hard to have a breakthrough if you have resigned yourself to something that feels substandard) - People who write one interesting thing usually keep it up; find and watch interesting people (trickle-down Aha! effect?)