software engineering > modular design > symptoms and causes of complexity

Symptoms and Causes of Complexity

This article is based on John Ousterhout's lessons on software design, specifically his book "A Philosophy of Software Design". He speaks on what can cause a system to be complex and what ways complexity can manifest itself. A software system doesn't have to be large in order to be complex. It is very much possible to write a very confusing 100 lines of code. It is also possible to have a code base with 1000's of lines that are easy to pick up and manage.


There are two (2) causes of complexity in a system:


There are three (3) ways to identify a system that is complex:

Being mindful of how we manage and remedy complexity in our software systems is an essential skill if we are to have them last for years and treated with care by those who will work on them in future.