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.
"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.

