Friday, September 16, 2005

Code as Design or ????

An interesting conversation with my friend brought out a point of concern - what exactly is software design? I always advocated that programming is essentially designing software, but most of my colleagues differ. I feel that programming is not just building the software but a more *disciplined* process of writing "meaningful" code. There are (increasing)instances of people trying to keep away from coding after they have been conferred august sounding designations by their employers. Unfortunately, some of friends whom I respected tremendously for their coding ability are following this band wagon concept.

One item from such species drew an illustration of Turbine Production. What an example, Duh! His argument was that there will be a separate design team (sitting in plush air conditioned rooms gazing at their monitors and building models, and doing all sorts of simulations) responsible for coming up with design documents and the shop floor uses these designs for production. This model is convincing as long as it is the production of tangible stuff. But, when it comes to software development, the model completely fails. Can Oceanography be applied in the space?

I firmly believe a well written code is a testimonial for good software design. Many seem to differ and vote for designing as an abstract intellectual exercise. I don't want to impose my belief and conclude this entry, I'll update this entry with opinions from my friends and fellow developers.

1 comment:

Vijay said...

My 2 cents ...
The distinction between design and coding seemed to be blurred in terms of where design ends and coding starts ..
Though the concept of high level design and low level design activities does clarify to a certain extent . I believe as mentioned in the article there is no cut off point which indicates that the design is done .
In most cases , you would want to modify the design along side the coding phase either to tweak the mechanisms or find an another way to better the existing design .In such scenarios the design does include the coding phase, just similar to the Low Level Design phase which focusses on the implementation aspect of the coding .