I've found an intersting post on Twitter: You are NOT a Software Engineer. While I don't agree in general, it can bring us to a question: is programming an art?
Let's start with defining what is art. For me, art is a process of creating something where, at any time, you have full control of the output. For example, designing bridges is not an art, because you can't just remove a pillar here and add an arch there.
In more IT terms, subjectively:
- Doing 2D in Photoshop is an art. Even with multiple layers involved, you can always add another one on top and paint over to achieve pleasing effect.
- Sculpting in Z-brush is an art. At any moment you can add additional tentacle to your model, even since most of the time you shouldn't.
- Modelling in 3DS-max is an engineering. You need to maintain good topology, corrects edge loops and proper smooth groups. You can't easily modify finished model.
Of course I'm not telling that 3D artists are not artists. :) Art can (and usually does) involve engineering, and vice versa. It's just subtle yet important matter of balance. And we can observe that due to reduced technical complexity of doing ,,art'', it's more accessible to traditional artists. I mean, give talented painter a tablet and Photoshop and he will succeed. And Z-brush sculpting is just adding another dimension to it. On the other hand, there is no ,,off-line'' version of polygonal modelling.
So how can we treat programming with such definitions?
Unfortunately, programming is not an art. Most of the time you can't change features without effort. It's very apparent in gamedev where cost of code changes (esp. last-minute code changes) is much bigger than design/art.
I would love programming to be an art. But we need much better languages and tools to achieve it.
Comments:
-
Interesting...
For the purposes of discussion, what would this make, say, physical sculpture in a solid, (single-piece) medium like rock? If the sculptor etches away too much rock, does he or she still "have full control of the output"? Gluing chipped off rock back on to the base isn't exactly a sign that things have gone well. I don't think chisels come with a CTRL-Z :) So, with that in mind, does that make the planning stage of the physical sculpture pure "art", but the physical creation/implementation an engineering task?
Now thinking along those lines, could the same potentially be said of programming? The design of a complex program architecture is somewhat of an art and the actual coding is an engineering task to match that design with accuracy? Certainly with a mythical "perfect" specification, programming is pure engineering - but such specifications (as far as I've ever seen) don't exist. Is there an art to programming to fill in the blanks to capture the *intent* of the design, even as the sculptor probably has not drawn out every last detail of the sculpture before striking the rock?
A possibly useful definition of art versus engineering might be how easy it is to define the intent / objective / purpose of the work. In the case of pure engineering, the intent is clear (e.g. 2+2 must equal 4, the bridge needs to hold support N tons of weight, etc.). Art is a bit more about solving a problem that does not have fully well-defined parameters. Maybe programming is a bit of an art in this regard, especially in large projects, when the design is huge, contains many unknowns, and must be ready to evolve for yet-to-be-known requirements of future releases? I'm certainly hesitant to call programming an art, but I wouldn't completely deny there's still a certain art-like "feel" and intuition that goes into high quality code.
Thanks for the thought-provoking post!
08.05.2011 06:26:19
-
Although I have completely no knowledge of sculpting, I thing that sculpture in rock can be be a metaphor of using wrong tools. You could sculpt in clay and then make a concrete casting to achieve similar effect with easier and more error-forgiving process.
And I think that good software must have well-defined goal(s), just like a bridge. Game engine must hold 30 frames per second, web server must serve 300 requests per minute etc. And there is certainly some magic inside, but is it an art? I would rather compare making software to civil engineering than "real" art with no practical purpose (like painting). After all, bridges and skyscrapers can also be beautiful. Yet their main purpose is the practical one.08.05.2011 20:24:53