Complexity
The world is complex. But sometimes humans can come together, leveraging the power of agreement, and agree enough to create something useful in meeting some specific important aim and satisfying some agreed upon set of goals and objectives.
A kludge is an engineering/computer science term that defines what is best described as a workaround or quick-and-dirty solution that is typically clumsy, inelegant, inefficient, difficult to extend and hard to maintain; but it gets the job done. The nautical term for a kludge is jury rig. By contrast, elegance is beauty that shows unusual effectiveness, grace, and simplicity.
The alternative to being a kludge is elegant simplicity. Elegant simplicity is achieved through complexity via hard work an, clever ideas, etc.
It is easy to create a system that is complex. It is hard work to create a system that is simple. People commonly confuse the terms "simple" and "simplistic". They do not describe the same thing.
- Simplistic is dumbing down a problem in order to make the problem easier to solve. Simplistic involves removing essential complexity in order to make a system easier.
- Simple is something that is not complicated, that is easy to understand or do. Simple means without complications. Simple involves removing all unnecessary complexity but still retaining essential complexity. When something is simple it looks elegant and tends to be easier to make use of.
Irreducible complexity (a.k.a. essential or inherent complexity) is a term used to describe a characteristic of complex systems whereby the complex system needs all of its individual component systems in order to effectively function.
In other words, it is impossible to reduce the complexity of a system (or to further simplify a system) by removing any of its component parts and still maintain its functionality objective because all those component parts are essential to the proper functioning of the system. 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 per the use case of the mouse trap to catch mice:
- a flat wooden base,
- a spring,
- a horizontal bar,
- a catch bar,
- the catch,
- the bait,
- and staples that hold the parts to the wooden base.
But say you remove one of the parts of the mousetrap. The mousetrap will no longer function as it was designed to function, it simply will not work. That is irreducible complexity: the complexity of the design requires that it can't be reduced any farther without losing required functionality.
There are different types of essential complexity a.k.a. irreducible complexity a.k.a. inherent complexity. By distinguishing between the different types one can better understand a system:
- Organized simplicity
- Unorganized complexity
- Organized complexity
The same thing is true for a problem solving system. Whether the functionality is provided using computer based functionality or manual effort; all the pieces need to exist in some form in order for the problem solving system to function effectively. You could have specific levels of functionality. For example, in financial reporting there is a difference between a "compilation" and a "review" and an "audit" of a financial report.
There is a difference between a "complex system" and a "simple system that is complicated". Most software applications tend to be simple systems that may be complicated. Fred Brooks No Silver Bullet points out that complexity comes in two forms: essential complexity and accidental complexity. Essential complexity is what is irreducible. Irreducible complexity = essential complexity.
The challenge when constructing a problem solving system is making sure you avoid or eliminate the accidental complexity. Accidental complexity refers to challenges someone unintentionally make for themselves as a result of trying to solve a problem.
The Law of Conservation of Complexity states that, "Every software application has an inherent amount of irreducible or essential complexity. The question is who will have to deal with that complexity: the application developer, the platform developer that the software runs on, or the software user."
The Law of Requisite Variety states that in order to effectively regulate a system, the regulator of that system must possess a sufficient range of actions to counter act the variety of important potential disturbances that system might encounter. The principle of requisite variety ensures that the system's internal state remains as close as possible to the desired goal state of the system.
Every system has a level of complexity. There are two groups of complexity: complex and non-complex. Non-complex systems are computable, they have computability. Complex systems are not computable. And so, a system can be simple (i.e. computable), complicated (i.e. computable), or complex (i.e. not totally computable, but some tasks may be computable). This outline distinguishes and explains the possible alternatives:
- Non-complex (computable)
- Simple system: The system is "non-complex" and therefore computable; clear and obvious for a non-subject matter expert to understand, and the set of elements, categories, and interaction patterns are fully understood. Control techniques can be used to eliminate all risk from the system.
- Complicated system: The system is "non-complex" and therefore computable; clear and obvious for a subject matter expert in the area of knowledge to which the system relates to understand, and the set of elements, categories, and interaction patterns are fully understood. Control techniques can be used to eliminate all risk from the system.
- Complex (not computable)
- Complex system: The system is "complex" and therefore NOT computable; tend to lack clear boundaries, tend to be constantly changing and evolving, there tend to be large numbers of elements, categories, and interaction patterns which are not completely understood, the system seems to contradict itself on occasion, and the number of forces impacting the system tends to be large and the dynamics are not well understood. Control techniques cannot be used to fully eliminate all risk from the system.
- Complex systems with non-complex subsystems: A complex system with some simple or complicated subsystems which can be separated and some aspects made computable.
- Complex systems which can be simplified to simulate non-complex systems: A complex system which can be "dumbed down" to a degree to enable the system to be computable but also adequately meet the goals and objectives of system stakeholders.
Additional Information:
Comments
Post a Comment