Why Software are So Complex?

4 min readDec 31, 2022

Every time I start looking into the codebase of a software maintained by others, I feel disoriented because of the complexity of those code.

Why are software so complex anyway?

In software engineering, complexity refers to the number and variety of components or features in a system, as well as the relationships and interactions between those components.

A system with a high level of complexity may be difficult to design, develop, and maintain, because it may involve a large number of components that need to be integrated and tested, and because it may have many dependencies and interactions between those components.

Recognizing complexity is a crucial design skill because it helps software engineers identify potential issues and challenges early in the development process, and take appropriate measures to mitigate or resolve them. If a system is complex, it may be more difficult to design, develop, and maintain, and it may be more prone to errors and vulnerabilities.

By recognizing complexity, software engineers can make informed decisions about how to approach the design of a system, and can choose appropriate design patterns and techniques to manage complexity. In addition, the ability to recognize complexity helps software engineers better understand the trade-offs and costs associated with different design decisions.

There are several symptoms that may indicate that a software system is complex: