Despite being told otherwise most of the time, I firmly believe programming is Art.
It is the process of translating abstract ideas, into concrete sequences of orders for a machine to follow. As such, it involves different trains of thought for each individual, different and unique ways to solve a problem or arrive to a result, much like painting or drawing/sketching. Each person will interpret the idea (problem), and express is based on his/her experience. That is what adds the human experience to it.
Programs are never finished; just like sculptors and painters never feel really finished with their works. As you grow and become more experienced, as your sensibilities around the world change, as your ideasd mature, you find your previous work more childish and immature. You wish to go back and rewrite something you did or modify it to become perfect. However, it is an unattainable perfection. And that is what Art is all about.
"In every passionate pursuit, the pursuit counts more than the object pursued."