system-design
Installation
SKILL.md
System Design
Principles for building reusable, maintainable coding systems. From "A Philosophy of Software Design" by John Ousterhout.
Core Principle: Fight Complexity
Complexity is the root cause of most software problems. It accumulates incrementally—each shortcut adds a little, until the system becomes unmaintainable.
Complexity defined: Anything that makes software hard to understand or modify.
Symptoms:
- Change amplification: simple change requires many modifications
- Cognitive load: how much you need to know to make a change
- Unknown unknowns: not obvious what needs to change
Deep Modules
The most important design principle: make modules deep.