The visual cortex, the largest system of the human brain is a remarkable computer. It corrects the 30-100 ms delay of the visual system and estimates the future. It compensates for the blind spots, and hides the images of the blood vessels running on the surface of the retina. The cortex automatically removes the blurs when the eyes move and coordinates with other sensory centers.
The visual cortex does all this and more without any conscious effort. It removes the complexities from our daily life by encapsulating them and only involves the conscious mind when it is necessary. However, with clever tricks ( Blue field entoptic phenomenon, Blind spot test, Stopped clock illusion ) some system glitches can be revealed. The visual cortex handles the vast majority of common situations, but ignores a few special cases.
My smart phone is also a remarkable computer. Although I haven’t read the manual, I was productive within 10 minutes of opening the box. My phone’s A5 processor contains over 1.000.000.000 transistors, yet the complexity is so well encapsulated that I never have to think about it. The designers put a significant extra effort into the development creating a Maтрёшка in order to save a few extra clicks for me.
Information technologies introduce a tremendous level of complexity into the Enterprise. Both the breadth and the depth of Information Technologies continue to explode.
Many CIOs list IT complexity among their top concerns. Complexity makes IT expensive to run and slow to adapt to changes. Increasing complexity makes systems more prone to cyber and integrity/availability threats.
For customers the complexity is one of the reasons to view IT as a useless money drain. Most customers consider themselves reasonably smart. When something is difficult and complex, they will consider it to be the fault of the system and the fault of the people who developed, configured and implemented such a complex system. Even if the customers provided the low quality requirements at the beginning.
So, the question is: what can we do to manage complexity? Here are some ideas:
- Decompose complex systems to less complex components and set up rules for the interaction
- “If it gets so complex that you can’t remember everything all at the same time, you have to write it down (Architecture)” -John A. Zachmann
- Follow SOA principles (appropriate granularity, reusable, discoverable, self-documenting)
- Use Integration Platforms (point-to-point to hub and spokes, BPM, composite apps)
- Move the complexities to the right level and encapsulate them
- Expose the cost of the features
- Do not automate exceptions
- What really matters is what has been left out
- Focus on core values, let the experts deal with commodity (IaaS/PaaS/SaaS)
On Monday program your tricoder to detect complexity hot-spots. The higher the hot-spots are in the stack, the more harmful they can be. Eliminate them or move them to the right position on the Consumer/Provider chain of customer/power-user/business analyst/application experts/infrastructure folks/external professional services.
Live long and prosper.