Patterns of Good Design
The classic design patterns — what problem each one solves, when it's the right tool, and when it's not. TypeScript and Python.
Start reading →01Chapter 1: Why Patterns Exist — Vocabulary, Not a Checklist02Chapter 2: Patterns and SOLID: How They Relate03Chapter 3: Creational Patterns I: Factory Method & Abstract Factory04Chapter 4: Creational Patterns II: Builder, Singleton, Prototype05Chapter 5: Structural Patterns I: Adapter & Facade06Chapter 6: Structural Patterns II: Decorator & Proxy07Chapter 7: Structural Patterns III: Composite, Bridge & Flyweight08Chapter 8: Behavioral Patterns I: Strategy & Template Method09Chapter 9: Behavioral Patterns II: Observer & Mediator10Chapter 10: Behavioral Patterns III: Command & Memento11Chapter 11: Behavioral Patterns IV: State & Chain of Responsibility12Chapter 12: Behavioral Patterns V: Iterator & Visitor13Chapter 13: Anti-Patterns and Overuse: Recognizing "Pattern Fever"14Chapter 14: How Dynamic and Functional Languages Solve These Problems Differently15Chapter 15: Architectural Patterns I: MVC/MVVM & Layered/Hexagonal Architecture16Chapter 16: Architectural Patterns II: Event-Driven Architecture & CQRS17Chapter 17: Architectural Patterns III: The Repository Pattern18Chapter 18: Recognizing Which Pattern Fits an Interview Design Prompt
Other tracks
Python DSA — CoursePython DSA — Interview PrepPython DSA — BeginnerPython Syntax & DSA ReferenceGit MasteryCognitive Skills & Mental ToolsCode Optimization RulesObjects First: OOP FundamentalsUnder the Hood: Operating SystemsHow the Bytes Travel: NetworkingData at Rest, Data in Motion: DatabasesSharing Time: Concurrency & MultithreadingClean by Default: Coding StandardsThe Review: Code ReviewFrom Idea to Production: the SDLCDesigning at Scale: System DesignWhiteboard to Blueprint: HLD & LLDBuilt to Last: Reliability & ScalingTell Me About a Time: Behavioral Interviews