Complicated and complex are different, and complex things can be made simple
In everyday conversation across technology, business, finance, markets, politics, there is over usage of word 'complicated'. It is baffling to see how a man-made thing can be complicated. Complication arises due to lack of information about it.
A complicated relationship .............., but a complex equation can be solved with mathematics.
Let me start this topic, with few experiences from my past in manufacturing industry and then bring it into the IT industry, where these terms are abused and point to the right way of making systems "simple"
Situation 1:
3 decades back, I was responsible for a shop floor with more than 700 machines involved in production of automobile gear boxes. I do not recollect any incident in which we were not able to identify the reason of a machine fault in less than couple of hours. [Resolving might have taken longer due to spare availability] But there was one thing that was done extremely well there, there was clear documentation for complete electrical circuit kept the separate compartment in the electrical panel (which could be even 15-20 feet long and 6 feet tall for each machine). There was never a discrepancy between drawing and the actual machine, and the drawing had all diagnostics instructions and test point in the large circuitry.
[Learning 1: System was built as per the design, no deviations or the diagram was updated should there be a change during the build process and maintainability was core design principle]
Situation 2:
In the same job, for some time I was doing the PLC programming (ladder diagram) for similar set of machine tools. My first design was outright rejected by lead then. (I was in the learning phase, and he was willing to coach & guide me) He gave two reasons (1) I had not build the boundary conditions and fail-safe mechanism first (2) the logic diagram was too complex; hence execution time would be higher, testability was poor, and maintainability was extremely bad.
[Learning 2: Understand the boundaries and ensure operations with safety limits, simplicity delivers performance, reliability and ease of maintenance]
Let me take those 3 key words, I started with on why man-made systems and processes become complex, I will dwindle deeper in the context of IT systems in enterprises to look what can be done
[I am not talking about digital natives like Spotify or Google or product companies like Microsoft or SAP]
Recommended by LinkedIn
Modularity
Though in the IT world, component-based architecture, SOA, domain driven design and more have been discussed for many years and decades, adoption and maturity are quite low.
Engineering
Engineer is there to solve the problem with the available tools and within the constraints. But understand the problem space clearly before getting into the solution space. Of course, there will be iterations of the solution, as the confidence in implementation (due to better understanding of the problem, the technology and the initial usage feedback) grows
Documentation
Start with the notion; as a creator, you are responsible for its lifetime usage. I am not referring to documentation as traditional documents (like a deployment diagram in Visio that has to perfectly align with the deployed application), but a means to understand why certain design choices were made, how was it build, how to understand its working, etc.
Bringing it all together, take modular approach, adopt best engineering processes and create adequate documentation, this would take away the clutter for any system, and make it simple.
Should one encounter a complex system, creating better understanding document, and progressively reengineer for modularity and make the system simple.
Industry Principal at Infosys.
1moVery well articulated and informative. When someone says an IT system is complex, (like in number systems in mathematics), I reflect, there is always a real and an imaginary component. The reality maps to knowledge and documentation. The imaginary component rather maps to the lack of imagination in engineering thereof! We then spend a lot of effort and cost in maintaining such systems adding layer after layer, generation after generation. Imagine a life system without ability of motor neurons for reflex actions or immune systems. Life cannot sustain without right telemetry and feedback. Observability cannot be an afterthought thought!
Seasoned Digital Transformation Leader & Enterprise Agile, DevSecOps, SRE Coach | Driving Digital Excellence in Global Enterprises | Proven Success Enterprise Integration, Enterprise Architecture, Engineering Mgmt.
1moExcellent Insight Madhan, descaling the complexity and keeping it simple is the norm.
The agile methodology in software engineering, while popular, faces a significant challenge: its focus on short-term wins often leads to myopic module development. This approach frequently results in developers and testers lacking a clear understanding of the product's overall vision. Additionally, the software engineering field has developed a tendency to rely on quick fixes or "hotfixes" to address immediate issues. As a consequence, end products undergo daily evolution, becoming increasingly complicated. This continuous growth can make long-term maintenance and scalability more challenging.