Tuesday, January 10, 2006

The Downside(?) of Simple Design

I was chatting with this friend of mine and he was telling me about his project. He was saying that the software that they (his team) are working on has evolved to a stage where adding new functionality to their application has become very simple. Probably it might at the most, just involve implementing an interface with a few simple methods.
The design is so simple that on a day-to-day basis, they wouldn't need to use any brains at all for working on that software. That set me thinking...

Is it really possible that you can arrive at a stage where the design is so much maintainable, flexible, and whatever?
Maybe.
But is it the time to stop thinking about the design of the software?
No.
I think That is the time to sit back and look at the design from one level higher. That might be the time to try to bring in some domain language. That might be the time to figure out a way to automate the day-to-day tasks. That might be the time to bring in a new paradigm to the software. Maybe AI, maybe functional programming. I don't know the possibilities.

Bottomline: It is the time to take "The Next Step".

1 comment:

Prashanth Guha said...

I think automating everything is the intention of most of the software development initiative. If you understand the processes very well and provided the process does not change drastically, with proper planning and foresight, designing a software with less maintainence is not far away. More often, the maintainence costs are high because the design would not have taken into account the changes that might happen at a later stage. If that flexibility is incorporated by investing some time into predicting the changes that might be needed, future maintainence will be simpler.