Object-Oriented Design Patterns
is one of the classics in object-oriented software. Some parts might be dated, but should give me common terminologies when working in large codebases. Some of the patterns have been folded into languages as built-in primitives, .e.g., iterators.
- Design Patterns: Elements of Reusable Object-Oriented Software. Erich Gamma; Richard Helm; Ralph Johnson; John Vlissides. Oct 21, 1994.
- Design Patterns | Hello Interview Low Level Design. www.hellointerview.com . Accessed Sep 16, 2026.
I’ve also encountered the “you aren’t gonna need it” (YAGNI) school of thought that aims to minimize writing code that anticipates too far into the future, as such guesses usually don’t pan out. Design patterns seem like they exist somewhere between designing for now, and designing for a possible future. A design pattern solves a specific problem being encountered now. And even within a design pattern, one could still adhere to YAGNI, and add pieces when needed. When it does come to the point where the design needs more features, at least the design pattern provides a mental framework that is consistent with the initial design of the system.
...