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
Software should be designed to last
As the scale grows, a system becomes stronger against external threats but more vulnerable to internal corruption and distortion. Before building a large system, first think about how you would prevent it from being corrupted or hijacked later.

Seonglae Cho