Software construction.. is it an art?

wyrd

Well-known member
Joined
Aug 23, 2002
Messages
1,408
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.
 
It is, in the more old-fashioned meaning of an art :- that which is practiced by artisans not that which is practiced by artists.
 
I pulled the definition of art and mechanical from www.m-w.com to help those who may not understand exactly what Im talking about.

EDIT: I bold/italicd the important parts.

Art
"Pronunciation:
 
Okay.. I have my opinion to my own question now. Is it an art or mechanical process? Id have to say art.

In this day and age its 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, thats 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, well 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 thats 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 cant.

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 dont want 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 its 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 thats more the process as an art (including debugging, UI design tweaking, etc.), not really the code itself.

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

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

-Nerseus
 
Its definitely an art.

As far as being Art (which is how some people have interpreted the question): Its 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 Id 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.. thats where the human mind can get creative.

Well.. lets 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 thats creativity!!
 
Its close to art, but not exactly.
More or less, its a collection of skills in most cases.

I voted for "Yes", but its 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.

Heres the real question? What sort of artist are you? Baroque? Minimalist? Impressionist?
 
Back
Top