Accepting Complexity: The Ultimate Test of Modern Software

CarderPlanet

Professional
Messages
2,556
Reputation
7
Reaction score
588
Points
83
How does complexity shape the future of software?

In an era of rapid technology development and the constant search for ways to automate and improve productivity, the importance of understanding and accepting complexity in software often takes a back seat. However, as the Thoughtworks team points out in their semi-annual Technology Radar review, complexity is a key aspect that needs to be not only recognized, but also used to its advantage.

With each new release of Technology Radar, the list of technologies that are discussed continues to grow, reflecting the increasing number of ways to solve problems. This is certainly a positive development, as the market offers technologists many options. However, it also increases the cognitive load: there are more things to learn and evaluate.

One example of the reallocation of complexity is the transition from a monolithic architecture to microservices. Microservices solve many of the support and development problems that arise in monolithic architectures, but at the same time they impose new requirements on engineering teams, requiring more mature practices and processes. This highlights that each technological solution only redistributes complexity, not eliminates it.

It is also important to note that technical solutions tend to re-organize complexity, which requires careful complexity management to avoid serious consequences for the productivity and efficiency of engineering teams. One of the ways to manage complexity is to use "reasonable defaults" in projects, which helps keep teams from being tempted by the novelty and hype associated with new technologies.

Interestingly, the tools that help you deal with complexity aren't always new. For example, the latest issue of Technology Radar mentions a risk-based failure modeling technique derived from failure modes and effects analysis (FMEA), a practice dating back to the post-World War II period.

The key challenge in software today is to embrace complexity, rather than trying to minimize it at the expense of processes, practices, and management. The main question is whether the industry is aware of this.
 
Top