being a programmer myself, and working closely with artists, i have found that programming and writing/painting/composing music are rather similar activities. one of my artist friends in particular was interested in what programming actually is, so we struggled to find a definition for it.
as it turns out, we quickly accepted that programming must be craft.
we agreed that in order to be a reasonable artist, one has to be a good artisan. art that isn't executed well is a stroke of luck, might be beautiful, but is essentially meaningless. an artisan who puts thought and experience into the piece he creates, however, creates a manifestation his thoughts, and thereby makes them accessible to others. craft, in other words, is a carrier medium for culture. we judge long-dead cultures by the the 'things' they have made. it is no accident that we call these things 'artifacts', from the latin words 'ars' (art) and 'facere' (to make, to create).
if the products of craft are carriers of culture, what, then, is art? it's something you might call _inspired_ craft. again, if you look at the latin roots for 'inspiration', 'spirare' means to 'breathe'; receiving an 'inspiration' therefore is receiving the breath of life, the spirit that god reputedly breathed into us in order to make us alife. creating life is universially seen as creating something new - in the simplest sense, children are 'new' human beings.
art, therefore, must be craft that has an element of newness to it. how do you achieve something new? by breaking the boundaries of the system within which everything 'old' exists. if craft is a carrier for our culture, art by definition must break with that culture. now there are two possibilities: either your art is rejected by the majority of people, or it is accepted as beautiful. in the first case, it might be anything - meaningless, ahead of its time, etc. in the second case, however, it will quickly become part of the culture it broke with - culture expands to embrace those slight deviations from its norm.
art, therefore, is craft that advances our culture. in this i differ strongly from stallman's opinion that art is 'merely beautiful' - it must have an impact on our culture in order to be considered art. that might sound rather elitist, i'm afraid... yet consider that every culture contains subcultures, and the impact i'm speaking of does not have to be earth-shattering. a street musician known in one part of a smaller city for his inspired music is an artist, even if his art reaches a few hundred people at most. as long as it's not a mere reproduction of our culture, it's art.
reading through all this again, i still agree that programming is mainly craft. if you are an inspired programmer, however, you might well create art. as with conventional artists, whether your creation is art or craft may sometimes not be recognized until long after the act of creation.
i could go on about this. i know there are some aspects still not covered, but this text is too long already. in closing i would like to use this text as an example of art vs. craft. i certainly know how to write, and to some extent how to phrase my thoughts in order to acheive certain effects. in that sense, i'm an artisan (although, admittedly, not a very good one). whether this text can be considered art depends very much on the readership: either i have restated the obvious, then it's merely poor craft. if i have managed to blow fresh thoughts into enough of your minds, it might be considered a small work of art.