Whenever you want to develop a software, one of the common mistakes is to be over ambitious. Aiming to be mother of all designs, trying to address too many aspects of a problem. For example in this current era, when memory and cpu cycles are very cheap, sometimes there is no point in wasting too many gray cells, trying to put in best possible optimization.
First and foremost, most of us need to realize that, we are here to ship product and deliver value to customers, not to write code. Do not mistake me, I am not implying that we should write a bad code, within shortest possible time.
We need to take a middle road here. For example, you may come up with a nice looking design of classes with multiple inheritances, multi threaded, asynchronous data messaging. But there is no use, if it's very hard to understand for others and implement. Software development does not end with writing a code which does the job. There needs to be enough documentation, so that others can understand, maintain it and enhance it.
Let's be honest here, it's hard to read some one else's code, than writing your own. That's the reason, if you have 5 people in your team, each guy will have his own way of parsing XML file. It's hard to get above said features like multiple inheritance, generic templates and multi threaded frameworks to work with out bugs. Unless you are a super star programmer, who is able to keep all multiple context information in his head, you are bound to make mistakes which are hard to debug.
So before venturing into software design think about what exactly customer needs, time line, then come up with a simple design which works well and easy to maintain in the long run.
No comments:
Post a Comment