IdealisticMessVersusLazyMess

Last edit October 1, 2009
In pondering "systems that went wrong", I've noticed certain patterns in how they go wrong and patterns in the symptoms. I'll propose a UsefulLie dichotomy between idealistic messes and "lazy" messes.

Idealistic, GoldPlating, and MentalMasturbation messes:

  • Difficult to figure out what any piece of code does
  • Difficult to trace the impact of a change due to too many layers of indirection
  • Wrong abstraction used, resulting in big DiscontinuitySpikes. Some changes that fit the abstractions are quite easy, others are nearly impossible.
  • Unlike lazy messes, you spend more time studying code than typing code to fix it.
  • Inconsistent use of different paradigms or techniques.
  • Lots of wasted code for dead-end or unfinished concepts.

Lazy messes:

  • Lot's of violation of OnceAndOnlyOnce, so prepare to type a lot to change or fix.
  • Generally a consistent pattern
  • Lots of code to do relatively little
  • Lots of similar-looking IF statements or viney, repetitious sub-classing for endless exceptions to the rule.