Is Software Art or Engineering? (1999)
spectacle.org
spectacle.org
This is what happens in software. The code is the blueprint, the exact spec, and "building it" means running it through the compilation/deployment pipeline.
Software is a machine, but the main difference with other machines is not that you can't analyze it with math or can't approach it as classical engineering, is that it's not economically feasible to do so. The translation from the blueprint (the unambiguous, absolute and exact spec, the CODE) to the final product (the deployed working system) is "automatic" and basically free from material costs.
PS: And add to this the fact that most software is NOT "critical" (as in "if it fails in production people die").
Architecture can be simulated with high accuracy without actually building the blueprints (actually 3D models).
Software apps on the other side take considerable human resources to be tested. Simply running the software is a poor assessment of fitness.
Actuall contracts Michelangelo worked on do specify nature, size, coloration and relationship of objects: http://websites.rcc.edu/herrera/files/2011/04/Renaissance-Co...
That's a fun fact to know, but ancient word origins do not give any indication about the modern meaning of derived terms.
It might be the case that "art and engineering are not opposed", but this doesn't follow from their vaguely similar etymologies.
In this case they do.
- you can be artful (in two senses), neither of which is the same as "artistic".
- artifice and artificial
- artisan: not exactly artist
- trapeze artist
- con artist
- artifact: not necessarily a work of art.
Art used to mean representational skill. But that was a couple of millennia ago, and culture has moved on a little since then. There are plenty of artists with exceptional representational skill but limited visual creativity or psychological insight. They don't get a lot of interest because they're more like cover bands than original talents.
I tend to think of software as a brain craft. It's certainly not an art in the usual cultural sense of the word. When it's done well it's more like very good carpentry or metalwork.
But most of the time it is better compared with architecting malls and hospitals, bricklaying or roadworks.
The definition of Engineering as Wikipedia defines it:
Engineering is the application of scientific, economic, social, and practical knowledge in order to invent, design, build, maintain, research, and improve structures, machines, devices, systems, materials, and processes.
So based on these words the case is quite clear. Software development is engineering. We apply practical knowledge to invent, build, maintain, research, improve structures, machines, devices systems and processes. Our software applications.
The definition of Art as Wikipedia defines it:
Art is a diverse range of human activities and the products of those activities, usually involving imaginative or technical skill. In their most general form, these activities include the production of works of art, the criticism of art, the study of the history of art, and the aesthetic dissemination of art. [..] Architecture is often included as one of the visual arts; however, like the decorative arts, it involves the creation of objects where the practical considerations of use are essential
So again, we could say Software development is a product of an activity involving imaginative AND technical skills where the practical considerations of use are essential. Is software development part of the decorative/visual arts?
In terms of art and by drawing the parallel to Architecture we could assume that a software developer has enough freedom to choose from a variety of foundations, building blocks. Developers influence the "Gestalt" of the final product and no two systems will look the same. Software development can be considered a unique form of art with intricate nuances that follow simple concepts we find in engineering. [...]
The full article is at: http://www.artofsoftwaredevelopment.com/art-or-engineering/i... (I'm not sure if posting the link is appropriate, please let me know and I'll take it out.)
If it doesn't have to work, it is art.
I'd argue that it is far, far, far, far, far easier and takes far, far, far less skill to make a 1,000-line piece of code work than it does to make a 1,000-line short story 'work'.
I don't think there is any art in it, unless the software you are building it supposed to be an artistic project. But that is not unique to software, painting itself is a craft, painting in a novel thought-provoking way is art.
Software is usually too purposeful to be art. I think a functional intent or purpose belies its designation as art. Creation of software is, however, a mixture of both art and engineering.
Clearly some software is more art than engineering. And clearly some software is more engineering than art.
Everything else is in that muddy gray area people like to argue about instead of getting stuff done.
(Logical operators.)