In Worse is Better-design simplicity is held above all other traits of development. Wikipedia summerizes the traits:
- the design must be simple, both in implementation and interface. It is more important for the implementation to be simple than the interface. Simplicity is the most important consideration in a design.
- the design must be correct in all observable aspects. It is slightly better to be simple than correct.
- the design must not be overly inconsistent. Consistency can be sacrificed for simplicity in some cases, but it is better to drop those parts of the design that deal with less common circumstances than to introduce either implementational complexity or inconsistency.
- the design must cover as many important situations as is practical. All reasonably expected cases should be covered. Completeness can be sacrificed in favor of any other quality. In fact, completeness must be sacrificed whenever implementation simplicity is jeopardized. Consistency can be sacrificed to achieve completeness if simplicity is retained; especially worthless is consistency of interface.
There have been many development methods that have been hyped lately but I’ve never heard about this one before and yet I think that I’ve been involved in several projects where the values of this approach have been used. I dare say many website projects have had this overall strategy. Most of all I think this is a valuable approach while learning a new programming technique (such as a framework or programming language).