dec-software-principles
Installation
SKILL.md
Software Principles
The engineering half of design engineering — how code stays maintainable.
- SOLID:
- Single responsibility — one reason to change per unit.
- Open/closed — open to extension, closed to modification.
- Liskov substitution — subtypes must be usable wherever the base type is.
- Interface segregation — many small interfaces over one fat one.
- Dependency inversion — depend on abstractions, not concretions.
- DRY / KISS / YAGNI: Don't repeat yourself; keep it simple; you aren't gonna need it. YAGNI is the antidote to speculative abstraction — don't generalize until you have concrete uses.
- Conway's Law: Systems mirror the communication structure of the org that builds them — team topology is an architecture decision.
- Principle of Least Astonishment: Components should behave the way their name and appearance imply. Surprise is a defect.