Skip to content

Books & References

Core design and patterns

  1. Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides. Design Patterns: Elements of Reusable Object-Oriented Software. Addison-Wesley, 1994/1995.
  2. Martin Fowler. Refactoring: Improving the Design of Existing Code, 2nd ed. Addison-Wesley, 2018.
  3. Joshua Kerievsky. Refactoring to Patterns. Addison-Wesley, 2004.
  4. Craig Larman. Applying UML and Patterns. Prentice Hall.

Architecture

  1. Len Bass, Paul Clements, Rick Kazman. Software Architecture in Practice. Addison-Wesley.
  2. Frank Buschmann et al. Pattern-Oriented Software Architecture, Volume 1. Wiley.
  3. Martin Fowler. Patterns of Enterprise Application Architecture. Addison-Wesley, 2002.

Evolution and maintainability

  1. Michael Feathers. Working Effectively with Legacy Code. Prentice Hall, 2004.
  2. John Ousterhout. A Philosophy of Software Design. Yaknyam Press.
  3. William J. Brown et al. AntiPatterns: Refactoring Software, Architectures, and Projects in Crisis. Wiley.

How to read pattern books

Do not memorize diagrams. For every pattern, extract:

  • context;
  • problem and forces;
  • axis of variation;
  • dependency change;
  • consequences;
  • known misuse;
  • plausible refactoring path.