Embracing Complexity

This is a collection of information that seems important. Most of this is from a LinkedIn post by Tony Seale.

This is not about creating complex things. This is about looking at things as a system. This is about embracing and managing the complexity.

A kluge is a term from the engineering and computer science world, it refers to something that is convoluted and messy but gets the job done.  Anyone can create something that is complex.  Anyone can create a kludge.  But it is hard work to create something that is simple and elegant.

It takes hard work to create something that is simple.  Not simplistic, simple.  Simplistic is dumbing down a problem in order to avoid complexity.  Simple is about embracing complexity, but then understanding the complexity and then hiding complexity from users.

Simplistic is dumbing down a problem in order to make the problem easier to solve.  Simplistic ignores complexity in order to solve a problem which can get you into trouble.  Simplistic is over-simplifying.  Simplistic means that you have a naïve understanding of the world, you don't understand the complexities of the world.  Removing or forgetting complicated things does not allow for the creation of a real world solution that actually work.

Simple is something that is not complicated, that is easy to understand or do.  Simple means without complications.  An explanation of something can be consistent with the real world, consider all important subtleties and nuances, and still be simple, straight forward, and therefore easy to understand.

Per the Law of Conservation of Complexity; inherent complexity cannot be removed from a system, but the complexity can be moved.  Is the platform dealing with the complexity, or the software application, or the user of the software application?

Irreducible complexity is explained as follows: A single system which is composed of several interacting parts that contribute to the basic function, and where the removal of any one of the parts causes the system to effectively cease functioning.

So for example, consider a simple mechanism such as a mousetrap.  That mousetrap is composed of several different parts each of which is essential to the proper functioning of the mousetrap: a flat wooden base, a spring, a horizontal bar, a catch bar, the catch, and staples that hold the parts to the wooden base.  If you have all the parts and the parts are assembled together properly, the mousetrap works as it was designed to work.

But say you remove one of the parts of the mousetrap.  The mousetrap will no longer function as it was designed, it will not work.  That is irreducible complexity: the complexity of the design requires that it can't be reduced any farther without losing functionality.


An area of knowledge can be characterized in a spectrum with two extremes.  This article calls the two ends of the spectrum "kind environments" and "wicked environments":
  • Kind area of knowledge: Kind environments, characterized by clear rules, repetitive patterns, and unchanging tasks. Specialists whose jobs are at risk fall under this category.
  • Wicked area of knowledge: Wicked environments, characterised by obscure data, no rules, constant change, and abstract ideas. Generalists who can adapt and excel across different skillsets fall under this category.

Comments

Popular posts from this blog

Relational Knowledge Graph System (RKGS)

Graph Hairball

PLATINUM Business Use Cases, Test Cases, Conformance Suite