I was recently thinking why programming is fun for me. What is it that I like about this field. I think it comes down to these reasons: 1) Solving problems in an elegant way, 2) Diversity of the subject matter, 3) An ever changing field of information and 4) Controlling a machine. Let's examine these a bit furthur:
1) When programming you solving some sort of problem and though for the most part any problem can be solved when programming it's about solving it in a elegant way. On the surface one can compare lines of code and say well 100 lines is better then 1000 but it's not really about number of lines as it is the algorithm of the elegance to which you solve a problem. I don't care what programming language you used or how long it took you, but did you solve it in an elegant [aka: cool] way. When I discuss solutions with other people and you get to the 'key' item in a problem if the solution excites you that's what it's all about.
2) Diversity of the subject matter. When you are programming you a solving some sort of real world problem and that requires you to go out and learn something about a completely different subject matter. In the early years Computer Scientist called this, "Artificial Intelligence" or "Expert Systems". No matter how you categorize this it's about becoming an, 'expert' in a subject that you knew little if nothing about before. This requires all sorts of skills ranging from personal interaction, to the ability to extract pertainent information, to 'specing' etc. And in the end if done right you've now learned something about a new subject that you didn't know before. And can we a programmers say other people in other industries do the same - I don't think so. What a very fortunate thing!
3) The about of information in the 'computer' world is constantly changing. From programming langauges to the latest hardware changes things are constantly moving and there's no sight that's it's going to stop. If you can manage it, pick you 'interests', it's a fasinating world to be in. If you ever want to learn something just hit the 'Net and learn something about another subject. There's already a life time worth of information out there. It's great!
4) Controlling a machine. No matter what you are programming whether it's your typical PC or a PDA or home built robot it's ultimately about control. Making it do exactly what you want. When you've learned something about this new technology, put together an elegant solution and expanded on your knowledge it's a wonderful feeling of accomplishment. Somehow you feel a great sense of satification having control over something. This probably pulls on something innately human but that's a story for another time.