I love the challenge of solving puzzles. Programming provides that challenge and satisfaction on a multitude of levels. Not only can one solve a puzzle, but with hundreds of ways to solve a puzzle, it's challenging to develop solutions that fits others needs as well as solve the task at hand.