Or is it a perspective? is it the result of the human ego? or is it just a communication problem?

If you look at biology, evolution has found a way to design its systems in a way that each component has a defined interface to communicate, and more importantly, each component is free to “experiment” or evolve independently from each other by random mutations.

When changes in one component require a new interface it propagates those “requirements” to the other components in a trial-and-error mechanism. Thus, allowing a more dynamic evolution.

However, not all good changes are permanent, and not all bad changes are discarded. The environment and the capacity to adapt are the two factor that dictates if this iteration propagates into the future.

So far, this has worked ok for biology.

In the software world, we tend to avoid nature’s trial and error approach, or at least is frowned upon, in favor of a more logical one because we have other tools at our disposal for example, we can think, we can predict, and test outcomes, and more importantly, we can work outside our brain and collaborate with other individuals to leverage other people’s experiences.

Because of human collaboration, complexity starts to grow. Now interfaces not only for software but for communications need to be in place. And these interfaces must be updated as fast as possible to allow a free flow of communication between everyone involved otherwise silos of information begin to form in each brain.

When these interfaces are not implemented or are broken, mutations on each component start to occur and act independently from the whole system. This can lead from small failures to system wide failures or even worse, to corrupt the system into thinking it’s working as expected when in reality not.

But why do these human communication interfaces fail? Is it because they are difficult by the very nature of human communication? is it because a lot of context and information that is explicitly required is assumed instead?

Also, there is another factor that humans have but nature doesn’t… Human ego.

When ego is introduced in systems it often prevents discarding what doesn’t work and those systems end up carrying a lot of garbage until that person leaves or someone else with more authority cleans it.

Then, there is the other side of one of our tools, prediction.

We often try to predict how the system will behave in an unknown future that we start adding complexity to handle unknown behaviors that simply doesn’t yet exist. But why? Human ego? Or communication issue?

And this leads to a cascade of decisions that now people need to think of and wrap their brains around this.

Regardless, Complexity has consequences.