InfoQ Homepage Complex Systems Content on InfoQ
-
Producing a Better Software Architecture with Residuality Theory
Software architecture is tough because it blends coding, math, and business systems. Due to surprises, architectures tend to become irrelevant over time, Barry O'Reilly said. He presented residuality theory, where he suggested stressing naive architectures to reveal hidden “attractors” in complex business systems. This allows designs to better survive change and uncertainty.
-
How Amazon Uses Guardrails in Software Development
Carlos Arguelles spoke about Amazon’s inflection points in engineering productivity at QCon San Francisco, where he explained that shift testing left can help catch issues early. He suggested using guardrails such as code reviews and coverage checks. Your repo strategy, monorepo or multirepo, will impact the guardrails that need to be in place.
-
How a Sociotechnical Approach Can Help to Deal with Complexity
Today’s software professionals navigate a maze of technical, business, and social complexity. According to Xin Yao, thriving in this environment requires more than just technical and business expertise. We need fluency in decoupling systems for maintainability, reconnecting them for business value, and working with the messiness of organizational dynamics.
-
How to Build Large Scale Cyber-Physical Systems
To build large-scale safety-critical systems, we need to decompose the system into smaller solvable problems, resolve what is known, and resolve unknowns through experiments, Robin Yeman argued. She suggested investing in test environments for both software and hardware early to enable being test-driven early to increase the safety, security, reliability, and availability of the systems.
-
Making Software Development Boring to Deliver Business Value
Given there’s a limit to our cognitive abilities and our comprehension of complex systems, Corstian Boerman argues that software development should become boring. He suggests moving infrastructure out of the way so that it does not burden the day-to-day development process, and focusing on delivering business value in a predictable and repeatable way.
-
Adopting Agile in Specific Business Domains Using Domain-Driven Agility
According to Nikola Bogdanov, the real challenge in agile transformations is adapting to business domain specifics and industry constraints; understanding agile is not the problem that needs to be solved. He presented domain-driven agility which utilizes design thinking to visualize agile adoption and make it empirical.
-
How to Create a UI That's Both Robust and User Friendly
The key challenge in building UIs is balancing ease of use and maintainability, with scale and complexity. It requires thoughtful component design and an understanding of common usage paths to create a UI that's both robust and user-friendly. Automation can be a game-changer when it comes to improving efficiency and consistency in your codebase.
-
Embracing Complexity and Emergence in Organisations
Focusing on the actual emerging organisation and the work people are doing can make a difference in embracing complexity and dealing with it a bit better. Psychological safety is critical for people giving feedback without fearing retribution or negative consequences. Fred Hebert spoke about embracing complexity at QCon New York 2023.
-
Embracing Complexity by Asking Questions, Listening, and Building a Shared Understanding
When dealing with an environment that feels complex, people commonly look for ways to reduce variability and increase control for dealing with complexity. An alternative approach is to embrace complexity by acknowledging that it exists, asking questions and listening, and constructing a shared understanding based on different perspectives. This lets us improve how we adapt on an ongoing basis.
-
Sustainability for Software Companies: Reducing Impact by Deciding What Not to Do
Small and medium-sized companies can contribute to sustainability with emissions reduction, mental health offerings and inclusion. To support sustainability, software engineers can think about “what not to do” to reduce complexity and make solutions smaller, resulting in a smaller carbon footprint.
-
Volkswagen’s Journey towards a Software-Driven Company
Volkswagen is changing their working methods for software development, where they focus on regaining their own development skills and developing new products based on new technologies and methods. The technologies used are decided on by the teams independently.
-
Organizational Topologies and Their Impact on Quality
August Lilleaas recently wrote about the correlation between organization complexity and software quality citing a paper by Microsoft. Rapid Software Testing Methodology creator James Bach has also recently written about how we should interpret quality metrics. The authors of Team Topologies shared insights into how adapting organizational structure can improve the health of software.
-
Testing Complex Distributed Systems at FT.com: Sarah Wells Shares Lessons Learned
The complexity in complex distributed systems isn’t in the code, it’s between the services or functions. Testing implies balancing finding problems versus delivering value, said Sarah Wells at the European Testing Conference. Testers often have the best understanding of what the system does; they have a good hypothesis about what went wrong, and are able to validate it pretty quickly.
-
Author, Teacher, and Consultant Jerry Weinberg Passed Away
Gerald M. “Jerry” Weinberg, author, teacher, and consultant, passed away August 7, 2018, at the age of 84. Weinberg published about 100 books on computer programming, systems thinking, leadership, change, consulting, and writing.
-
Fred George on Solving Fuzzy Problems
In the Digital Transformation day at the Agile India conference Fred George gave a talk on how the way we solve programming problems needs to change when dealing with what he calls “fuzzy problems” where the speed of response is more important than any other factor. The development “team” in those environments consists of a single developer working directly with a customer deploying frequently