Design Principles
The rules of thumb behind good boundaries, testable code and evolvable systems.
SOLID Principles
Five object-oriented design principles that keep code open to change — single responsibility, open/closed, Liskov substitution, interface segregation, dependency inversion.
KISS, DRY, YAGNI & Rule of Three
The pragmatic trio — keep it simple, don't repeat knowledge, don't build what you don't need yet — and when each one actually applies.
Coupling, Cohesion & Separation of Concerns
High cohesion inside a module, loose coupling between modules — the single most important property of a maintainable architecture.
The Twelve-Factor App
Twelve rules for building cloud-native services that are portable, scalable and deployable anywhere — config in env, stateless processes, logs as streams.
Idempotency
Doing an operation twice has the same effect as doing it once. The foundation of safe retries, at-least-once messaging and reliable APIs.
API Evolution & Backward Compatibility
Change APIs without breaking clients — additive changes, tolerant readers, versioning strategy and explicit compatibility boundaries.
Architecture Decision Records (ADRs) & Trade-off Thinking
Capture each significant decision — context, options, decision, consequences — so the "why" survives people leaving. Plus how to reason about trade-offs.