Why is programming fun?

My wife has observed that my best days are filled with a healthy dose of programming.  I've found this to be true as well, even without her critical distance.  I know of few things like programming that allow me to lose myself in a task.  I can do it for hours and hours.  So I was interested to read this quotation from Fred Brooks on why this is.  His fourth point is most important to me:

"Fourth is the joy of always learning, which springs from the nonrepeating nature of the task. In one way or another the problem is ever new, and its solver learns something: sometimes practical, sometimes theoretical, and sometimes both."