Featured Post

Almost Alive

Technology is steadily invading realms that were formerly the exclusive domain of living systems. As a direct result of steadily increas...

Saturday, August 20, 2016

Fuel On The Fire

As I mentioned in the previous post, there are specific factors and conditions that, when present, trigger increasing costs and decreasing efficiency in your systems and software. Addressing these factors is critical.


Specific Factors


What are the factors that cause software to become unmanageable?

Luckily, the same factors are at play in other systems besides software.  This allows us to develop a more comprehensive understanding of the problem, as well as adapt solutions from these other systems.

What other systems show this type of progression toward unmanageability?  Consider these examples:

  • Government
  • Legal System
  • Tax Code
  • Large Companies

What do these have in common?  First, they are all large.  Second, they all have a lot of complexity. So, we can conclude that Size and Complexity are major factors.  But, more interestingly, why? Why do these systems have a lot of complexity, and what do we mean by "large"?


Size


What is size?  For our purposes, we will define size as:

Size = The number of entities comprising a system.



Complexity


What is complexity?  The meaning tends to be a bit fuzzy:

  • "Hard to understand"
  • "Has a lot of parts"
  • "Unpredictable"

In order to make headway, we need to do better than this.  Here is a much more useful definition of complexity:

Complexity = The number of dependencies within a system.


This immediately explains why larger systems would tend to be more complex: Larger systems have the potential for more dependencies.

This also explains why older systems tend to be more complex: Older systems have had more time to accumulate both entities and dependencies.

So, it stands to reason: systems that are both old and large would tend to be the most complex - which takes us back to our original list:
  • Government
  • Legal System
  • Tax Code
  • Large Companies

All of these are both large and old, host a lot of dependencies - and are therefore complex.

Note: A benefit of these definitions for Size and Complexity is that they are suitable for mathematical treatment and analysis.  Later, we will use this to examine the relationship between complexity and various methodologies for addressing it.


Software


How does this relate to software?

It turns out that software is the perfect environment to host complexity, because:

  • It is easy to create entities (get large)
  • It is easy to create dependencies between entities
  • Because the above is so easy, software ages rapidly, in other words "changes per day" is highly accelerated with software and related systems, effectively "accelerating time" for software-based systems.

Interestingly, complexity is both the "Fuel" and the "Fire", which is why actions taken to fix "out of control systems" often have the opposite effect.



Next


This understanding of complexity points the way toward specific methodologies we can use to control it.

In following posts we will discuss these methodologies and ways to implement them incrementally and in a non-disruptive fashion.



1 comment:

Unknown said...


Good day! Would you mind if I share your blog with my facebook group? There's a lot of people that I think would really appreciate your content. Please let me know. Many thanks capital one credit card login