Someone recently posted in here “Simple is great if your needs are simple” implying that KISS is not always good. I would like to disagree, and point out that KISS is always good.


Teaching design is hard, and that is why it takes experience to do good design. For a first few years in IT, I too was proud that I could design complex things. Now (15 years of IT) I spend effort to try to simplify, especially when I do project recovery.

In general, programmers (primates?!) like me, can deal with a limited maximum complexity. If the framework is complex, I can only do simple projects with it. If the framework is simple, I can tackle complex projects with it. (It ends up not beeing a business application otherwise, just pure R&D that only works in lab conditions, and not in production)
-If it is complex, it is hard to maintain, or find a bug.
-If it is complex, it is hard to communicate what people should be doing on a large (complex) projects. KISS!
- When learning a science, like math, they teach us “… and now we simplify”. There was some TV History show, where a famous scientist (forget the name) ended the letter saying: “Sorry I wrote a long letter, I did not have time to simplify this”.
- We spend time to make our code more readable.
- We know that adding more resources to a complex project does not help (“Mythical Man Month”), it only makes it more complex.
- I think one reason open source projects are more successful, is that it is done quickly by limited resource (thus limited complexity). Struts was “done” by one person over a weekend for example. (Vendors have teams that consider lots of requirements via a committer. I ran away from those complex frameworks to things like Struts).


One approach I do teach is to design for the rule (and not for every exception); and only consider 80% of what is needed (because that last few % makes the design complex. Things that happen by exception can be deal with as exception.

That is all I can think of now on why KISS is better than complex.

.V



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



Reply via email to