Simply Simplistic

SimpleIsntEasy. There exists EssentialComplexity in most situations in life.

The EinsteinPrinciple states that theories should be AsSimpleAsPossibleButNoSimpler. If you violate the latter clause ("but no simpler") in any system, by not capturing the EssentialComplexity, you make it SimplySimplistic. You cannot be rid of EssentialComplexity (it being 'essential'), so simplistic solutions, models, and theories end up foisting the complexity they didn't capture upon their user.

One example is AddingEpicycles. A SimplySimplistic model placing the Earth at the center of the universe required that users of this model that observed the universe create complex, epicyclic orbits for the planets.

Simplistic protocols and models and language features can end up becoming complexity multipliers because the complexity is duplicated by each and every user of the model or protocol. They are also effort multipliers. Fortunately, one can sometimes solve this problem by wrapping or refactoring the protocol or model or language feature within a library to utilize it, thus capturing the EssentialComplexity into the library and thus creating the feature/language/model that should have existed in the first place. (If a language cannot refactor this model/protocol into a library, or must expose implementation details to do so, it suffers from the MissingFeatureSmell.)

Another example, since YouCanSolveAnyProblemWithAnotherLevelOfIndirection, many consultants unwittingly add complexity after decision makers buy into an attempt to find AsimplerWay using indirection.

On the other hand, there are indeed SimpleSolutions? at times. Without these, the SimplySimplistic arguments would not have existed.


Related: CategoryComplexity CategorySimplification

EditText of this page (last edited March 12, 2009) or FindPage with title or text search