The principles and patterns that keep software changeable as it grows — OOP foundations, SOLID, the Gang of Four patterns (creational, structural, behavioral), UI separation with MVC/MVP/MVVM, Domain-Driven Design, and CQRS. Examples are TypeScript, but the ideas are language-agnostic.
Before you start
This is a design course — no setup required. The examples are in TypeScript for readability, but every principle and pattern applies to any object-oriented language. Some development experience helps; the roadmap assumes you can already build software.
OOP & Why Design Matters
Good design is what keeps software changeable as it grows. Revisit the OOP foundations — encapsulation, abstraction, inheritance, polymorphism — that every pattern builds on.
The SOLID Principles
Five principles that keep object-oriented code flexible and maintainable. SOLID is the shared vocabulary every architect uses to spot and fix rigid, fragile designs.
Creational Patterns
How objects get created shapes how coupled your system is. Factory, Builder, and Singleton control object creation so the rest of your code depends on interfaces, not constructors.
Structural Patterns
Structural patterns compose objects into larger structures while keeping them flexible. Adapter, Decorator, and Facade solve the everyday problems of integrating and simplifying code.
Behavioral Patterns
Behavioral patterns manage how objects collaborate and how responsibility flows. Strategy, Observer, and Command turn tangled conditionals and callbacks into clean, extensible designs.
MVC, MVP & MVVM
Separating presentation from logic keeps UIs testable and changeable. Understand the family of MV* patterns and what each one is really trying to protect.
Domain-Driven Design
For complex business software, the hardest part is modeling the domain itself. DDD gives you a language and building blocks to align the code with the business.
CQRS & Event Sourcing
Reads and writes often have opposite needs. CQRS separates them; event sourcing stores changes as a log of events. Powerful tools — and easy to misapply.