Monday, June 7, 2010

The Complexity Cycle

Dan Ward has a nice treatment of complexity in a oft-cited paper: "The Simplicity Cycle: Simplicity and Complexity in Design".  In fact, Dan writes a lot and his other stuff, more or less is collected on a separate site.

Dan's main points are built around this diagram that plots "goodness" vs complexity.  Of course, there's no precise definition of goodness, but it could encompass everything from functional usefulness to design maturity.

Progress along the complexity slope is defined as learning and creating.  At point 2, the path reaches a point of divergence.  Driving to the upper left is more complexity but less goodness, a path called "complicated".  In this paper, complicated is "unnecessary complexity".  This is where non-value added components creep in: either unneeded redundancy or not needed parts.

In the other direction is the simplicity slope.  The idea here is to prune and pear, and to tighten up cohesion and coherence, and introduce looser coupling.  This is not to suggest that an optimally simple object is not complex; indeed, the simplest implementation may still be complex on any objective scale of complexity.

Winston Churchill: "Out of intense complexities complex simplicities emerge".


Are you on LinkedIn? Share this article with your network by clicking on the link.