Monday, February 25, 2008

What would you prefer?

Was just thinking about what a person would chose in case he/she wants to chose certain thing? The choices are
- a clean design, sturdy, effective system but with limited functionality,
- a system clogged with features but not that effective (sewn bits n pieces together)
Lets call the first system system1 and next one system2.
The answer clearly depends on a number of factors. The need of consumers is the driving factor. Thus even if most of us would favor the clean design system, in practical life, the system2 might be useful/effective. I would favor the clean design system as well. The ideology is to build a good foundation and use the outputs of this foundation to develop new things. The same way a building is constructed or code is (should be) written. Because such systems are easier to maintain, easy to reuse and sturdy. On the other hand, the system2 is usually not good as a standalone system, neither can it scale very well. It can lead to unused code/resources and clog up your workspace. It can make your system heavy, verbose and might lose the very cause of its own existence.
Even after starting with a clean design, keeping it clean is the toughest job. A focused team of engineers can do the job better than a thousand people be it software or any other field for that matter. In short, keeping integrity of the project while dealing large number of people really becomes hard. It takes hard work, enthusiasm and innovative mind to keep up the integrity of the project. Thats why startups succeed and are able to do things that might take big corporations a lot of time and a lot of money.