Software construction.. is it an art?

Is software construction an art?

  • Yup, sure is.

    Votes: 23 82.1%
  • Heck no, it's just a process.

    Votes: 2 7.1%
  • Huh? I have no idea.

    Votes: 3 10.7%

  • Total voters
    28

wyrd

Senior Contributor
Joined
Aug 23, 2002
Messages
1,405
Location
California
From architecture/design all the way to coding/debugging. Do you think in this day and age that software construction is an art or just a mechanical process?

I have yet to come up with a concrete answer of my own, but am curious as to what others think.
 
I pulled the definition of art and mechanical from www.m-w.com to help those who may not understand exactly what I'm talking about.

EDIT: I bold/italic'd the important parts.

Art
"Pronunciation: 'ärt
Function: noun
Etymology: Middle English, from Old French, from Latin art-, ars -- more at ARM
Date: 13th century
1 : skill acquired by experience, study, or observation <the art of making friends>
2 a : a branch of learning: (1) : one of the humanities (2) plural : LIBERAL ARTS b archaic : LEARNING, SCHOLARSHIP
3 : an occupation requiring knowledge or skill <the art of organ building>
4 a : the conscious use of skill and creative imagination especially in the production of aesthetic objects; also : works so produced b (1) : FINE ARTS (2) : one of the fine arts (3) : a graphic art

5 a archaic : a skillful plan b : the quality or state of being artful
6 : decorative or illustrative elements in printed matter
synonyms ART, SKILL, CUNNING, ARTIFICE, CRAFT mean the faculty of executing well what one has devised. ART implies a personal, unanalyzable creative power <the art of choosing the right word>. SKILL stresses technical knowledge and proficiency <the skill of a glassblower>. CUNNING suggests ingenuity and subtlety in devising, inventing, or executing <a mystery plotted with great cunning>. ARTIFICE suggests technical skill especially in imitating things in nature <believed realism in film could be achieved only by artifice>. CRAFT may imply expertness in workmanship <the craft of a master goldsmith>."

Mechanical
"Pronunciation: mi-'ka-ni-k&l
Function: adjective
Date: 15th century
1 a (1) : of or relating to machinery or tools <mechanical applications of science> <a mechanical genius> <mechanical aptitude> (2) : produced or operated by a machine or tool <mechanical power> <a mechanical refrigerator> <a mechanical saw> b : of or relating to manual operations
2 : of or relating to artisans or machinists <the mechanical trades>
3 a : done as if by machine : seemingly uninfluenced by the mind or emotions : AUTOMATIC <her singing was cold and mechanical> b : of or relating to technicalities or petty matters
4 a : relating to, governed by, or in accordance with the principles of mechanics <mechanical work> <mechanical energy> b : relating to the quantitative relations of force and matter <mechanical pressure of wind on a tower>
5 : caused by, resulting from, or relating to a process that involves a purely physical as opposed to a chemical change <mechanical erosion of rock>
synonym see SPONTANEOUS
- me·chan·i·cal·ly /-ni-k(&-)lE/ adverb"
 
Okay.. I have my opinion to my own question now. Is it an art or mechanical process? I'd have to say art.

In this day and age it's definitely starting to become more of a mechanical process, with reusing objects (either through libraries or buying), great IDEs such as what .NET provides, error checking that is done for you by compilers with the new languages compared to the minimal checking that was done back in the day of old C compilers. Heck, we even now have visual aids where we can just drag-n-drop components on to our form and hit compile to finish. All of these things are related to machinery or tools, they are produced by a machine and tool, are manual operations, done without thought or emotion, and definitely are "petty" (seriously, most things seem to be done for you).

However, that's just not the case. Sure, to an untrained newcomer to the world of programming this may seem so. If we look deep into the world of software construction, we'll see that it all comes down to the power of choice, which ultimately in the end gives us skill which is produced by experience, study, or observation.

Sure there may be class libraries full of premade classes and objects for reuse, but which ones do you use that best fits the problem at hand? How about deciding how these objects interact with one another beyond the basic abractions of which they were built upon? Only experience can tell you, and that's the art of design.

Compilers may detect more "mechanical" errors for you, but what about the human errors or simply doing a wrong calculation of 1+1 instead of 1+2, which gives you incorrect results when running the program? Past experience is involved in knowing and figuring out how to easily find and fix these pesty human errors. The art of debugging so to speak.

There is the art of coding, which can never be done by a machine no matter how high level the language is. Choosing the right variable names, method names, or class names, the choice of making one long method or breaking it into several highly cohesive methods, and coding in such a way that changes can be made with ease without having to rebuild half the program.

Last but not least, there is the true guru artistist which can not only solve the current problem elegantly, but also do it in such a manner that they can reuse parts of the current solution in another problem.
 
Following your definition I must admit it is an art.

Some people can "see" algorithms, some can't.

What I dislike about the art metaphor is the underlying notion of "total freedom of expression". In (the fine) arts, there are no rules. Art is an expression of individualism. I don't wan't to see that much art in my projects :-)
 
Well, if you call it art, then it is art. You might be challanged by non-programmers, but your thoughts are all that really matter anyway.

DiverDan.MFA (master of fine arts)
 
My code is easy to read and efficient - but it's more of a means to ends than an art. Maybe the process of getting the code in the final state (production code) is an art. But that's more the process as an art (including debugging, UI design tweaking, etc.), not really the code itself.

I've changed my mind over the years. Once upon a time I thought of it as sculpting - carving out a program using nothing but the IDE's text editor. Now I see it as more functional - a process more than art. But it's a fine line, in my opinion.

I don't really care what it's called anymore (artist, programmer, developer, architect), as long as I have fun and the client loves it (more or less my two rules).

-Nerseus
 
It's definitely an art.

As far as being Art (which is how some people have interpreted the question): It's a strange kind of art that no-one should see.

Then again, if Tracy Emin can call it art, then so can we.
 
In my opinion, this is close to art. Of course, figuring out how to compile C from the command line and/or interpreting the code itself on that site is also an art (though one I'd rather enjoy from afar, like a movie).

-Nerseus
 
Umm as far as Art goes I am more autistic than artistic. IMO I would say that coding is just a logic thing and as long as you can make decisions and learn a little syntax, you will go far and earn a lot of money.

If you are no good at learning syntax the hardest thing is knowing which bit of code to knick!



:D
 
Think of it as building a house.. could be a shack (a simple utility) he he, or mansion.

You have to starthe from the foundation and build up.. that's where the human mind can get creative.

Well.. let's see.. where do I start? What is the foundation of the program what do I build upon?

Also like:
- Building a car (parts as classes, engine code, compents, and interface)


Well.. you get the picture.

Software construction is more of an art in the mind than on (white) paper. The results are just instructions, design outlines, comments, and structures, but they way they got like that came from a mind or group of minds that imaged a specific format or way on how to build a program.. now that's creativity!!
 
It's close to art, but not exactly.
More or less, it's a collection of skills in most cases.

I voted for "Yes", but it's a little bit sarcastic, actually.
I wanted to say, "My life would be easier if software construction were truly engineering"
 
Lets ask What is art?
Somting you creat, With your ahnd(keybaurd) and it come out of inspiration,
so 'id say yes :p
 
I believe it is an art. Or, I believe we strive to make or work functional art. It seems that most experienced developers I know strive for "elegant" solutions. Elegance inherintly speaks to taste, polish, beauty, form and style. That sounds like art to me.

Here's the real question? What sort of artist are you? Baroque? Minimalist? Impressionist?
 
Back
Top