Written by: Azkar Choudhry, Vice President, CG Infinity Inc.
 Rapid advances in technology have brought a great deal of convenience, simplification, and immediacy to our everyday lives.
 Disruptive technologies are emerging with accelerating frequency, customer demands are changing at breakneck speed, and new competitors are relentlessly entering the market.
 Companies are challenged to add new features, new rules, and new processes to remain competitive and yet keep their products simple.
 Simplicity for the end-users is causing the backend technology systems to become ever more complex.
 The large-scale enterprise platforms such as ERP, CRM, CMS, EAM, PLM, PDM, BPM, SCM, SRM, MDM, HRM, and many others have undergone major technological changes driven by the new capabilities of technologies that have created new virtual workplaces, virtual reality (VR), embedded Internet of Things (IoT), machine learning (ML) and artificial intelligence (AI), to new augmented systems that transform the customer experience (UX) and new capabilities.
 Complexity is everywhere and being created constantly.
 Complexity will grow over time if no specific action is taken.
 Complexity is generally underestimated and often misunderstood.
 “Simple Design” and “Simplification” are probably the most common leitmotifs in CIO talks.
 The roots of “simple” are sim and plex which means one-fold or braid. The word “complex” comes from two Latin words “com” (“together”), and “plectere” (“to entwine”). Complex thus means braided or folded together, just like a rope.
 Complexity is about entwining many parts together, becoming harder to understand them as a whole because of their increased amount, as well as individually because of their entanglements.
 Complexity is a relative concept, and what may be complex to an individual, team or company may be perceived as routine by others.
[Some] Complexity is beautiful.
 You don’t have to expend all resources going after any amount of complexity.
 Like two sides of a coin, there is good complexity and there is bad/unnecessary complexity.
 Low/No complexity reduces costs of operations, maintenance, procurement, change, etc. but diminishes the value and compromises customer experience.
 High/Good complexity provides higher robustness, customer and business values, and reduces external vendor dependence.
 Good complexity improves business performance and contributes to sustainable competitive advantage (making it hard for competitors to replicate an organization’s success).
 Good and bad complexity can be distinguished by asking a simple question, “Does this complexity add to customer value or subtract from it?”
[Generally] Complexity is bad news
 Complex organizations are far more difficult to manage.
 Complexity causes unintended consequences.
 In a complex environment, even small decisions can have surprising effects.
 Complexity prevents understanding and makes it very difficult, if not impossible, for an individual decision-maker to see the entire complex system.
 And if a lack of understanding for the end-user means difficulty to use the product, a lack of understanding for the team means difficulty to change/improve the product.
 It’s harder to predict what will happen because complex systems interact in unexpected ways.
 Complex systems require a larger set of skills and effort to maintain and thus drive up the operational cost.
 Complex systems have lower reliability due to the intertwined nature of systems and poor understanding.
 Complex systems are more vulnerable to espionage and security attacks.
Where does Complexity come from?
 Complexity comes from several internal and external drivers. [source]
- People – Due to a highly iterative and collaborative engagement model between customers, suppliers, and employees.
- Processes – Highly complex internal business processes, manufacturing operations, reorganizations, migrations, acquisitions, and other interactions spanning the entire global supply chains
- Periphery – The external drivers such as market opportunities, new business models, innovations, regulations, economic turbulence, globalization, hyper-competition, war, terrorism, or things that are simply beyond the company’s control
- Planning – The complexity of strategic choices and decision-making in terms of Who (resources), What (to do), When (to deliver), Why (it matters), Where (to focus) and How (to win) in the dynamic marketplace
- Products – The complexity resulting from the size of the product portfolio, diversity of customer demands, and development of new products
- Projects – High amount of engineering cost and effort in design, development and installation requiring selective project segregation of the entire value chain—from proposal and contract management through supply-chain and project performance monitoring
- Pricing – High complexity due to multiple pricing models, pricing schedules and discount structures
How to manage enterprise complexity?
 Effective complexity management is based on four pillars: alignment with the overall strategy of the company, transparency of overall costs and benefits of complexity, identifying the optimization benefits, related measures, and managing the trade-offs between parts of the total value chain (the totality of all the company’s activities), and sustainable infrastructure such as IT tools, incentives, and processes.
 Here are some tips I have collected to help you manage complexity in the enterprise:
- Know and accept that it’s there. Complexity is really bad if it isn’t known. Gaining transparency and visibility across the IT enterprise is the first critical step towards getting control of complexity. A high-level logical picture of the enterprise would help all stakeholders see the same enterprise picture and components.
- Enterprise Architecture addresses the complexity of information technology systems and when done right, develops models and abstractions that remove irrelevant complexity and allows better decision making.
- Using Enterprise Architecture principles such as modularization, encapsulation, decoupling and SOA, etc. group functionality and standardize interactions through interfaces that hide the implementation complexity and technology.
- Don’t outsource thinking. Keep control of your IT thought leadership in house and select vendors who help grow your teams’ skills.
- If we go back to the initial definition of complexity (“many” parts “entwined” together), it seems that there are two very high-level ways to prevent it: one is to fight the “many” by reducing the number of parts to the core essential, the other is to fight the “entwined” by untangling those remaining essential parts – in other words, to make the parts as few and as independent as possible.
- Complexity produces unpredictable events. Using decoupling and redundancy shields parts of the organization from the risks of an unexpected event, and it preserves parts that may be needed to mount a response.
- Engineers/SMEs are your friends. You don’t have to know every single technical detail of all systems. High complexity situations are simply too complicated for one mind. Partnering and being included in the high-level system architecture design discussions will allow you to better understand and manage the complex interactions.
- Non-experts and laymen are also your friends. Seek diversity of opinion across organizational and professional silos. Learn how to explain complex systems in simple words. This will force you to look at systems with a different angle and fresh perspectives. Seek input and incorporate that into your simplification efforts.
- Upgrade skills where needed if you consciously funnel complexity into new locations or “design in” new elements that create added complexity
- “You don’ have to eat the whole ox to know if it is tough”. In some less critical situations, accept partial and temporary truth as you may never have enough money, knowledge, or cognitive ability to understand ALL of the system complexity. Sometimes “Good enough” and plausibility are just fine substitutes for precision.
- Avoid analysis paralysis and start doing. Sometimes action can be a better way to understanding and find solutions than analysis. In complex or low-experience situations, muddling through and trial and error often work better.
You won’t succeed in getting rid of all complexity and neither should you try. Aim to minimize the bad complexity and manage the rest of it as a competitive advantage.
Monologue: If someone were to ask me what keeps me awake at night, I would say “complexity”. It’s not the cyber threats, skills or capacity of my team, availability or reliability of my systems; It’s the “unknown unknowns”. I am of the opinion that if I am able to tame the complexity beast, the rest is easy peasy. Complexity is my favorite subject for research and continued education. I will be writing more on this topic in the coming weeks (hint: “Complex Decisions Made Easy” and “Design Philosophy of Complex Enterprise Architectures”).