I have been programming for over 20 years and love every minute of it. So far I was lucky to work for small, startup companies, or consulting, always doing stuff I haven't done before, always new challenges. The skills do accumulate, so I have become quicker when jumping into new languages, systems and interfaces.
The translation of required behaviors into algorithmic patterns, then of those into code, has become second nature, it just flows without thinking, like talking or breathing air. Debugging is fun, too, like solving new puzzles, or like detective solving a murder mystery.
The most enjoyableis the initial nurturing of a program from a little seed, laying out classes and data structures, simulating their behaviours in the mental models of the system I am looking to create. If you learn how to do that right, the program grows like a network (a graph with adaptable links, functioning just like human brain), a live being with intelligence of its own unfolding by itself in perfect harmony, like fertilized egg growing into a newborn baby, with my brain acting as its substratum, my fingers as its fingers. Once that phase takes off, it becomes completely effortless on my part. I don't even need to think any more, the network thinks it through better than I ever could, it knows exactly what it needs, where it should go, and it merely "asks" me what to do next.