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.
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.
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.
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!
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.
And then I found the "Learn You a Haskell for Great Good" book, and when I finished it, I was enlightened.