I've had a couple of "ah-ha" moments during my career so far. The first was when I noticed that "hey! I can WRITE programs myself!". That was one of the happiest weeks of my life: my father showed me how to write a very simple C+4 BASIC program, a dancing stick figure on the top-left corner of the screen. I spent the rest of the week drawing different things and 'animating' them. That was somewhere around 1987 or so.<p>For the next few years, I played around with C+4 basic, didn't do anything serious. But in 1991, we got our first PC, and I tried to port the stuff I wrote on the C+4 to gwbasic, and later QBasic, but didn't succeed. So I dropped basic, and tried Turbo Pascal. That was my second ah-ha moment, when I discovered its help.<p>By 1998, I was reasonably fluent in Pascal and 386 assembly, but then my harddrive crashed, and I lost everything I wrote and collected since '91. That's when I installed Linux, and started to poke around with Perl (we had internet at school, and it was full of perl scripts. I choose perl because that's what I found the most resources for), and I discovered regular expressions: third ah-ha moment.<p>The fourth ah-ha moment was when I started to play with esoteric languages, which in turn resulted in learning a couple of other, real and interesting languages aswell. And then I realised that hey, I can program! And I don't care what the language is, once I knew a few, I could very easily learn another!<p>That moment was when it dawned on me, that programming is something much deeper, and something much more than simply writing code in one's language of choice.<p>And then I found the "Learn You a Haskell for Great Good" book, and when I finished it, I was enlightened.