00:19

Prefer simple over easy {{renderer :wordcount_}}

The distinction between these two is not always clear, but I have found this a useful schema for thinking about system architecture that I’ve also heard discussed in other contexts as well.

Simple here means choosing an architecture that gets from input to desired output in as few steps as possible. Easy here means choosing an architecture that can be built quickly, or is in some way convenient.

Simplicity and easiness are not mutually exclusive, but when they are not perfectly aligned, I believe always pushing for simplicity reduces the burden of maintenance and long-term costs.

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.