System Design
- To reduce coupling and increase cohesion, and to be flexible wherever possible to inject
- Any system depends on many things below it. Know what they are.
- Ability to change decisions outweigh the importance of the decisions
- Introduce only essential complexity
Software Designs
System Architecture Notion