Chapter 2

Software Design Principles

Build maintainable systems through cohesion, dependency control, and pragmatic simplicity.

173 min5 modulesBEGINNER
Start module

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. 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. 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. 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. 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. 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