The document discusses different types of complexity in software systems, including code complexity, cognitive complexity, and code entropy. It provides examples of measuring complexity using various metrics and tools. The key takeaways are to start simply and make sure systems work, keep complexity in check, help others understand the big picture, and keep change and release entropy low to avoid issues. Managing complexity is important as systems evolve over time.
9. System growth is organic
“Everything is a system.
Everything is part of a larger system.
The universe is infinitely systematized.
All systems are infinitely complex.”
10. “A complex system that works has evolved from
a simple system that worked.
System growth is organic
11. “A complex system that works has evolved from
a simple system that worked.
A complex system designed from scratch
never works and cannot be patched up to work.”
Gall’s law, 1975
System growth is organic
14. “Any piece of software reflects the
organizational structure that produced it.”
Conway's law, 1967
Imposed things are
difficult to escape
15. “Any piece of software reflects the
organizational structure that produced it.”
Conway's law, 1967
Imposed things are
difficult to escape
“companies” and “guilds”
39. High entropy + frequent releases = bad combination
2.0.0-beta.0..1..2..3..4..5..6..7..8..9..10..11..12..13..14..15..16..17..
2.0.0-rc.0..1..2..3..4..5..6..7..
8.0.0-beta.0..1..2..3..4..5..6..7..8..9..10..11..12..13..14..
8.0.0-rc.0..1..2..3..4..
Code entropy
40. Code entropy
The more parts of the system you need to modify
the harder it is to implement that change.
41. Symptom of leaky abstractions and
tightly coupled dependencies
The more parts of the system you need to modify
the harder it is to implement that change.
Code entropy
42. Takeaways
Be pessimistic when planning
Start with simple and make sure it works
Keep complexity in OK zone
Help others to understand the big picture
Keep change and release entropy low
43. “Simplicity and elegance are unpopular
because they require hard work and discipline
to achieve and education to be appreciated.”
E. W. Dijkstra