Can software programming be "art"?

Simple question, actually. This topic was brought up in a different thread, and I was urged to start a new thread asking about it. So here goes.

I’m not a software programmer so I have no first-hand knowledge of what all goes into it.

Do you think that software programming is an “art,” in the same way that music, writing and painting is an “art”? Can it be as “artistic” as a Van Gogh painting, a symphony by Mahler, or a poem by Sylvia Plath? My hunch is that very little (if any) programming is similar to a Van Gogh painting on an artistic level. However, I have never done any programming. I’d like to hear from those who do, or from those who have more knowledge than I do about the subject.

I’m curious to know what others think of this.

I’ve always thought it had the potential for art (or at least elegance) when your program uses some novel approach to solve a problem in about one-fiftieth the time your computer instructor expected.

That sounds pretty cool. And definitely inventive and creative.

I believe that software design can be creative, but I am curious if any software programmers feel the deep personal connection to their programming that many artists feel towards their artwork. (And musicians feel towards their music, poets and writers feel towards their writing, etc.) Some art is full of the emotion of the artist; each brush stroke is a unique physical expression of the way the artist feels. And same with color, composition, and symbolism, layers of meaning, yadda yadda yadda with the artsy-fartsy stuff. The subject matter is personal; the way they express themselves (either visually, musically or with words) is telling their very personal story in their own unique way.

Can software programming do this too?

The thread title immediately reminded me of “Hackers and Painters,” an article by Paul Graham:

He doesn’t argue that writing programs is art, just that it’s a lot more like an art than it is like a science.

I most certainly do. There’s something about a well-crafted, well-designed, well-written piece of software that sings out in beauty. I feel the same way about a well-designed circuit or mechanism.

Mind you, I’m not just talking about whether the danged thing works or not. I’m talking about whether the design is elegant, in a way that transcends its mere adequacy to a task.

To me, art and elegance are largely identical. The ability to nest command loop structures and format display output into readily assimilated information is much the same as art. Both require that the originator develop a concise and unambiguous representation of how certain perceptions or impressions shall be captured and portrayed. A good painting or performance seem to demand much of the same.

Elegantly encoded processing instructions embody much (if not all) of what art stands for. I view craft as a direct and inseperable offshoot of art. Therefore, programming indeed constitutes art and in many ways surpasses much of the dreck that passes for it these days.

OK, this is very enlightening, but I also want to know if there is a deep emotion–a personal expression that is present in the creative of software. To re-quote myself:

I understand that there are different kinds of art. There’s the “elegant design” kind of art. There’s the “creative craftsmanship” kind of art. (I do a lot of pottery that could fit into that category.) I never doubted that software programming was “creative,” I just wanted to know if it could be deeply personal and emotional.

What I’m talking about is the gut-wrenching-my-heart-on-my-sleeve and every-paint-stroke-has-my-blood-in-it kind of art. The really personal stuff. The stuff that has symbolism; tells a personal story in a personal way. Does any software programming fit that category?

I don’t think that programming as an art form has anywhere near the breadth of expression as any of the art forms listed in the OP. How the heck can you represent sadness with a program?

I agree that elegance is aesthetic, though. I consider programming to be as artistic as structural engineering, and less so than out-and-out architecture.

Back when dinosaurs roamed the Earth, I used to write code for a living. And yes, it can approach art, but it rarely does. There are a few demi-gods out there who have developed some amazing algorithms (Dijkstra’s Shortest-Path algorithm brought tears to my eyes - it’s an exquisitely beautiful piece of thinking).

Truly great programmers can aspire to be artists perhaps a few times in their lives. Merely very good programmers are more like master artisans in my mind - they craft well-written, clear, concise, precise, efficient, reusable code. Sometimes they get to make really interesting bits of code with all sorts of spiffy algorithms, but even the best of programmers find him/herself spending many hours making “bread-and-butter” code, the simple but important stuff that strings the nifty bits together.

And programming resembles art (or craftsmanship) in that you very often struggle with expressing a more or less clear vision using an imperfect medium - i.e., the programming environment constrains your creativity.

I think Achernar has it about right. A computer program can be a work of art in the same way as a suspension bridge or an Eames chair, and probably harder to appreciate. I don’t write programs as an emotional outlet, but I’ve written some that I am proud of.

For an interesting take on this very subject, read The Story of Mel.

Now, will a computer program ever be recognized and enshrined for its design? I’ve been to the Cooper-Hewitt Museum in New York City, and the Museum of Modern Art had (probably still has) a section on industrial design. I’m sure that the iMac, at least the case, monitor and keyboard, would qualify for display in either of those places. Is there any computer program whose interface and usability (not its underlying code) reaches that level of style and elegance?

Here’s my perspective as a business applications programmer.

The programming I do is as much art as the graphics for an advertisement are art. For me, personal expression or interpretation really don’t enter into it. The primary purpose of most programming, unlike art, is practical and/or commercial, and good programmers generally try to program as efficiently as possible without being unnecessarily obscure (to make maintenance easier). IIRC, Donald Knuth has said programming is more of a craft (even though he published a series of books titled “The Art of Computer Programming” which were basically a collection of techniques). I’m perfectly satisfied to think of myself as a craftsman rather than an artist.

I suppose some might say there is a kind of “art” to finding the balance between function, efficiency, and clarity.

In my line of work just plain good programming can be hard to find, so when I do good work I get a great feeling of accomplishment. Most of the time I’m too busy just trying to get the freaking program to work to think about anything else! :slight_smile: In fact, problems tend to occur more when you start thinking about some unusual technique rather than getting the job done.

Finally, FWIW, the computer scientist Edsger Dijkstra said “Elegance in programming isn’t a luxury - it’s a necessity.”

Wow. Thanks everyone. This has been very enlightening.

I guess I can sort of relate (a little–just a little!) to the differences between the different kinds of “art” because of my pottery.

Pottery is, (in my personal view) often a “craft.” (But some of it can be very arty–I’ll get to that later.) A lot of the pottery I have done is throwing on the potter’s wheel. Now, there’s a certain amount of “talent” or “aptitude” that goes into throwing, but mostly it’s practice and technical skill. Later on, you can get more creative with how functional you want the pottery to be. How round should the bowl be, how thick should the lip of the mug be, how subtle should the curve of the handle be. You also choose which kind of glaze to use, to be attractive but also practical (not going to chip off, no lead in the glaze, etc.). All this stuff was very creative and fun for me to do, but also practical.

I’ve done pottery that was “creative” and I was very proud of it, but it wasn’t the same kind of pottery that I sometimes did–the “fine art” pottery. This usually involved me painting with glazes on a plate, mug or bowl. The “painting” could be of a very evocative or emotional subject. This, to me, was more than a “craft.” Throwing on the wheel and making a nice bowl was more of a “craft.”

A lot of friends of mine did pottery that were highly decorated and embelished. A lot of it was more like scupture than just “pottery.” One guy did a whole series of plates expressing his feelings about the Catholic Church (guaranteed to make any nun turn red in the face). Another lady did a piece that expressed her sadness that she would never have any children. Very, very emotional subjects, and very personal too.

I think there are, as some of you have mentioned, different kinds of “art.” The “craftmanship/creative” kind, and then the emotional personal story kind of art. I’ve done both, and they both are edifying in their own way.

The only type of software I can think of that would come close to the OP would be computer games. I know there are some game makers out there who put their heart and soul into a game and it very much reflects who they are. Some recent examples I can think of are American McGee’s (real name, honest!) Alice and Peter Molyneaux’s Black & White. The finished pieces can evoke a whole range of emotions if the proper steps to lead a user to suspend belief (and keep it that way) are taken.

Yeah, Horseflesh, I was thinking of that. That probably is the closest to what I am describing. But doesn’t that also require a collaboration between artists and programmers? (I’m not sure what goes into game design and programming.)

Yeah, but I’ve played a lot of games that looked fantastic and played like crap. The two examples I gave were instances where the lead designer was able to bring an entire team of people around to their vision and produce exactly what they had in mind. Not a small achievement IMO.

As far as the collaboration goes, well, do you consider the Statue of Liberty a work of art? I’ll bet more than one person worked on building it but it was still Bartholdi’s vision. You might also consider that an orchestral piece is a collaboration between the composer, the conductor, the musicians, and the instrument makers. All of them together produce a single piece of art.

Horseflesh, yes, collaborative work can be art! I have collaborated with my sister and other artists from time to time.

An interesting thing, though–I painted on a friend’s pottery (he could throw bigger pieces than I could). I did the painting, he did the pottery. Now, I can’t speak for him and how he feels about his thrown pottery, but as I mentioned before, I consider my thrown work to be more “craft,” and the work that is painted up (depicting some subject matter that is emotional or tells a story) to be more “arty.”

An interesting, interesting thing, collaboration.

Interesting question. I’m undecided.

On the one hand, the craftsmanship of good code is a strong indicator that it may get to be an art.

On the other hand, what is lacking is the basic mass appeal that all arts AFAIK used to have. An art only comes into existence because it is accessible to large groups of people. Later on it may get more closed (see modern art). Code, however, is something that most non-programmers are hardly aware exists.

I swear those five posts before mine weren’t there when I typed mine up. Hey, I take my time to think!

If we’re talking about the output, like in computer games, I wholeheartedly agree with Horseflesh that computer games can be art. Alice is a good example, it is the only commercial computer game I’ve played that evoked sadness or sympathy with me.

Within Interactive Fiction this is actually more common. IF is classic text adventuring gone open source: there is a core of avid IF fans who are mosely aspiring writers as well and make some very good adventure games. Photopia for one is a very moving tale, although less adventury and more like a story.

The reason it’s hard to compare software programmers to your classic “starving artist” is that programs are rarely created as a form of self expression. Games are sometimes the exception as I noted above. I don’t believe I’ve ever sat down at a computer and thought to myself, “Gosh, I’m feeling melancholy. I really need to express my feelings in VB” and proceed to bang away at the keyboard.


Dim strHorseflesh as Variant

Do Until strHorseflesh = "Satisfied"
  strHorseflesh = "Melancholy"
  strHorseflesh = "Angst-ridden"
  strHorseflesh = "Misunderstood"
Loop

:smiley:

Perhaps I can speak to this, somewhat.

I’ve been a programmer of one sort or another since '82, and I’ve thought for a while that programming is, for me, more an art than a craft. I believe also, that there are some accountants out there (particularly the income tax preparation kind) who believe that aspects of what they do are also an art.

Some few years ago, I was employed in programming games, with separate departments for game design and graphics. As the software person, I usually received the projects as the third stop of five - design, graphics, engineering, testing, release. It was my station which bore the weight of responsibility - if game design got some math wrong, I’m expected to find it before testing, and the weight of blame is strongest on me. If the graphics suck, I’m expected to notice this and bluster graphics into fixing it.

I hated waiting for game design to update a broken specification, or graphics to fabricate something silly. Often I did their jobs for them, in fact - the weight was on me, and while there was no overt competition in projects between programmers, my products somehow got released ahead of schedule, with very few “rebuild spins” against testing, when compared with those projects of my peers. So I made a change, showed it to the designer, and if he liked it he added it to the spec. I fixed a mistake on a graphic, and handed it to the artist to check in as a fix - then he didn’t have to take two days to fit my request into a schedule-break from his major projects to resize an image. I prototyped a new game off-schedule in advance of any specification at all, and a large percentage of my interface ideas somehow found their way into the specification. If I found an “issue” in one of my products which had been released to testing, I entered the bug into the bug-tracker software myself, so that I could have been sure that the testers would hit it doubly hard when the next build spun to them.

Sometimes I needed to rely on decisions from game design or new art from graphics - things I could not do for myself - and they weren’t doing their jobs. Intra-company email is better than written requests, because the IT department backed up every letter, every complaint, which passed through the company email server -forever-. And it was easy to cc: the VP, if days and weeks of reminder emails and requests got ignored.

The downside was that, with any mention any of my forays of interest into design and graphics in an engineering team meeting, all my peers would complain, seemingly worried they’d be asked to debase themselves into straying into graphics, or design. And I was thought of as “not a team player” because I refused to insulate and take no interest in what were ostensibly other people’s job functions.

I believed they had lost sight of the goals - not to “do the job”, but rather to “release successful product”.

I had inordinate pride in my products. Still do. I believe I am an artist. Will I cut off one of my ears one day in madness? Time will tell.