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 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
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.

1 comment:
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
Post a Comment