When I first started learning programming, I used to get such a rush out of being able to create things that I'd literally spend days on end reading programming books and I'd get excited about every line I wrote. Now that I've been doing it for years and years, some of that initial rush has gone away, and I have been wondering where it went and what will replace it. I think I finally figured it out, though. Programming used to be a challenge, and I'd try to fingure out ways to perform some method and be really excited about it. That part of the challenge is gone for me now that I've come so far with this particular language. Sure, I could dive into C and extend with a whole new set of challenges, but that's not where the money is. The money is in creating applications that are useful, easy for customers to use, and that can be modified easily.
I came to the conclusion a few months ago that the challenge of code exploration was dead for me and that I was doomed to create without having to overcome hurdles. Hurdles are what make everything interesting, so I wondered if this was phase 1 of a burn out. All of my end products excite me, but it is the code part, where I'm just getting the stuff out of my head, onto the screen, that is what bothered me. It seemed like everything I wrote was just a race against the clock to get it out before I lost interest.
And that's when it hit me. The new challenge for me is to set a goal to write an entire feature or an entire site in a given time period. I tested this a few days ago when I wrote a complete photo gallery system for my site management application in 5 hours. It went from an empty controller to a fully customizable and usable photo gallery system, complete with Imagemagick functionality and ajax'd thumbnail creator that I wrote from scratch. As the time ticked by I found myself yet again more excited with every line! The race against the clock actually pushed me to think of new ways to do the same type of code I had been doing. I found faster ways to do everything and ended up with something that didn't look like my normal style.
What drives me during these "Marathon Code Sessions" is the knowledge that somewhere out there there is another young programmer that is going to come out with a program better than mine. I always know that what I currently have isn't good enough, so I visualize this as a race against this unknown coding nemesis.