Solve Problems Upstream {{renderer :wordcount_}}

When looking to design a system architecture, one will inevitably be faced with some problem that needs to be solved. This principle highlights the need to not stop at attempting to solve the symptom of the problem, but to also go “upstream” up the causal chain and discover the root cause of the problem within the system.

This aligns with preferring simple over easy architectures, as the work a system has to do to prevent a symptom is not always simpler than preventing the cause from occurring in the first place.