This matches my experience with programming too. It's just beautiful how pieces fall into place when you first start programming.
I remember first taking a look into Rails when it was first released, as I'm a designer and I was into 37signals work back when they were a design shop. My reaction was "what the fuck is this"?
Some months later I had to collaborate front-end code with git, and ssh into a couple of servers. I started to feel comfortable at the console, so I took a look at Rails again, but it was still too difficult.
Wanting do add some interactivity to my front-end code, so I started using jQuery. Of course it was the naive selector spagetti code, but it got me started with programming. Took a look at Rails again, too hard.
I then dabble into really simple MySQL databases driven by PHP. What a nightmare, wasn't this supposed to be solved by ActiveRecord? I take a look at Rails again, and it starts making sense.
Then the pre-parse craze came out, so I learned CoffeeScript and Sass. CoffeeScript happens to greatly simplify js OOP code, and has some bits of Ruby's syntactic sugar, so this time I another look at Rails and suddenly it all starts making sense.
All those bits and pieces you collect from real project experience come together and suddenly the you have crossed the gap to create a full web application.