Chapter 2
Software Design Principles
Build maintainable systems through cohesion, dependency control, and pragmatic simplicity.
What you will be able to do
- Explain the architectural purpose of SOLID Principles.
- Evaluate trade-offs across SOLID Principles, DRY, KISS and YAGNI, Separation of Concerns.
- 1
SOLID Principles
Five class-level design principles, taught by the failure each one prevents — and an honest account of which of them actually changes an architecture.
0/3 lessons6 questions45 min - 2
DRY, KISS and YAGNI
Three heuristics that are quoted more often than they are understood: what DRY is actually about, why simplicity is a budget rather than a style, and where YAGNI is dangerously wrong.
0/2 lessons6 questions31 min - 3
Separation of Concerns
Separating by technical layer is the version most teams get. Separating by reason to change is the version that makes a system modifiable — and cross-cutting concerns need a deliberate home either way.
0/2 lessons6 questions33 min - 4
Coupling and Cohesion
Coupling is not a single quantity to minimise. Learn to name which kind you have, how strong it is, how far it reaches, and which kinds are worth keeping.
0/2 lessons6 questions33 min - 5
Composition and Immutability
Why assembling behaviour beats inheriting it in most systems, why constraining where state changes pays off far beyond thread safety, and what both habits genuinely cost.
0/2 lessons6 questions31 min