# Software Design (MoC)
## Overview
Notes about software design.
## Notes
<!-- QueryToSerialize: LIST FROM #software_design AND !#type/quote AND !#type/creation/quote WHERE public_note = true SORT file.name ASC -->
<!-- SerializedQuery: LIST FROM #software_design AND !#type/quote AND !#type/creation/quote WHERE public_note = true SORT file.name ASC -->
- [[Atomicity]]
- [[Barrel Pattern]]
- [[Bertrand Meyer]]
- [[Composition over Inheritance]]
- [[Composition Root]]
- [[Convention over Configuration]]
- [[Dependency Injection (DI)]]
- [[Dependency Inversion Principle (DIP)]]
- [[Design by Contract]]
- [[Don't Repeat Yourself (DRY) principle]]
- [[Fail Fast]]
- [[High Cohesion]]
- [[Idempotency]]
- [[Interface Segregation Principle (ISP)]]
- [[Inversion of Control (IoC)]]
- [[Keep It Simple Stupid (KISS)]]
- [[Liskov Substitution Principle (LSP)]]
- [[Loose Coupling]]
- [[Malleable Software]]
- [[Mark Seemann]]
- [[Observer Pattern]]
- [[Open Closed Principle (OCP)]]
- [[Organize Everything With The LIFT principle (Article)]]
- [[Pure Function]]
- [[Rich Hickey]]
- [[Service Locator]]
- [[Single Responsibility Principle (SRP)]]
- [[Software Architecture]]
- [[Software Design Patterns for AI Skills and Agents]]
- [[Solid architecture principle]]
- [[SOLID Principles]]
- [[Strategy Pattern]]
- [[Template Method]]
- [[You Aren't Gonna Need It (YAGNI)]]
<!-- SerializedQuery END -->
## Quotes
<!-- QueryToSerialize: LIST FROM #software_design AND (#type/quote OR #type/creation/quote) WHERE public_note = true SORT file.name ASC -->
<!-- SerializedQuery: LIST FROM #software_design AND (#type/quote OR #type/creation/quote) WHERE public_note = true SORT file.name ASC -->
- [[Don't try to find the best design in software architecture. Instead, strive for the least worst combination of trade-offs]]
- [[Think first, code second]]
<!-- SerializedQuery END -->