28 August 2005

elegant software design

An impression others often have of my insistence for. Upon further thought when this term was used on me again recently, I realised the usage of the word "elegant" is erroneous.

"Elegant" is used to describe an idea, plan or solution that is clever but simple, and therefore attractive (http://dictionary.cambridge.org/define.asp?key=25143&dict=CALD). Elegantly designed things takes effort. But the magnitude of elegance in the end-product is subjective. Different people hold differring views of what constitutes elegance and how much a particular factor affects elegance. Almost just as beauty is in the eye of the beholder.

However, software design is less of an art but more of a science. There are design patterns to help solve common problems; even if one is ignorant of patterns, an effective solution usually mimics an existing pattern. There are also general rules one should follow; the most common but most difficult to adhere to is the simplicity rule. (I'll write on SIMPLE software design in a separate posting.)

Given that there are rules which should be followed, this makes a good piece of software design to be described as proper more than elegant, which is the point that I want to get at. It is proper design that makes for easy usage, debugging and maintenance. In fact, this applies not just to software, just as a properly designed car makes for ease of handling, low maintenance and efficient motor transmission.

The catch is: it takes a certain amount of understanding to appreciate the proper-ness of a design in any domain-area. Only when proper-ness is attained can one perhaps debate over its elegance, beauty and all other things subjective.

No comments:

Post a Comment

Related Posts Plugin for WordPress, Blogger...