When you are learning to program, there's a lot more than just the syntax. You can know the syntax of a program in and out and still be able to optomize your code a month after you wrote it.
Programming makes you think about things at different angles. If you take a break from something and go back later, you aren't looking at it the same way as before. You see something that works better and go "Oh!, that works much better.. now i can change over this... ", then 6 hours later you're once again addicted to that piece of code that you hated 30 some-odd days ago.
I can guarantee that veteran programmers still do this. Hell I bet some of them wake up in the middle of the night because they've suddenly found a way around a problem.
The learning doesn't stop because you've read everything.
Especially when you've spent 5 years mastering a language and then they come out with the next version and it's completely changed, and you're liek wtf? *sob*