Software Systems Complexity Gap.
Current Practices and a Strategy for the Future
Over the last decade, business and technology leaders are facing a hard challenge: the paramount importance of software systems accompanied by their ever increasing size and complexity are undermining the ability of organizations to effectively manage their existing and future technology investments as well as to make the right technology-related decisions in a timely fashion.
It seems that we are now at a tipping point in this regard: software systems have become so large and complex that are notoriously more expensive to build and maintain; and not only are such complex systems expensive, they are also more error-prone, unreliable and much harder to safeguard and keep secure.
Traditionally, organizations have adopted 2 main approaches to deal with complexity and address what is often known as the “complexity gap” i.e. the ever-increasing complexity of software and technology systems Vs the capacity of organizational governance and management structures to deal with such levels of complexity.
The first approach is to attempt reducing systems’ complexity; for instance, by putting emphasis on well-designed enterprise and systems’ architectures, by standardizing technologies and interfaces and by adopting “divide and conquer” design strategies such as layering, modularization and patterns.
The second approach is to attempt improving the effectiveness and efficiency of governance and management structures; for instance, by putting in place frameworks such as IT Service and Program/Portfolio Management and by adopting new process models such as Agile software development.
The two aforementioned approaches, which are interdependent and complementary, have definitely produced a number of positive results in the IT complexity management endeavours of many organizations.
Still, at Morphis Tech we believe that those approaches alone do not suffice. Instead, they should be complemented with a third approach that is often overlooked: the increase and systematization of the organizations’ collective cognitive capacity required at all levels of systems’ development, operations and management decision-making. In turn, augmenting an organization’s cognitive capacity clearly implies the ability to capture, assimilate and process a magnitude of technology-related information and to have in place shared, well-organized and well-aligned mental frames and structures that enable appropriate collective and individual reasoning. It clearly implies readily available facts, systematized collective knowledge, common semantics and organization-wide learning capabilities.
Unfortunately, many organizations are at a very primitive state in this regard: they still rely on highly-fragmented information and disperse knowledge regarding their software assets, lack of or out-of-date software systems documentation that is rarely consulted, limited number of concrete and objective facts to drive decision-making, piecemeal approaches, ad-hoc usage of non-integrated software development toolsets, ontological and terminology gaps between the business and the IT functions, and a hero culture in software development.
We are convinced that organizations aiming to increase their level of maturity in managing the ever -increasing complexity of software systems should carefully take into consideration the third approach that we outlined above.
We would love to hear your thoughts regarding our standpoint and to work together in improving your current practices and preparing for the next era of software systems complexity.