Some principles
Solve Problems Upstream
Prefer simple over easy
Minimal moving parts
Minimal connections
No domain specific knowledge required, easy to pick up management of the system
Under-engineered, leaving flexibility for future technology improvements and unforeseen issues.
Designing changes the future that is possible
A good system stimulates insight that pushes us forward
A good system is one you can trust to offload mental burdens to
A good system optimizes our mental resource allocation
Abstracted
Technical components have direct representations in a clear, abstract mental framework.
This means that the system can be described accurately without reference to the technical components.
The levels of a system
Interface
the layer that is visible to the user of the system
Backend
Is this essentially Functional Design?
<- part of
Question