Design Patterns: Elements of Reusable Object-Oriented Software

Every week, I ask my friends, colleagues, and acquaintances that are part of my social networks (Twitter and LinkedIn) a simple question:

"What is the book that changed your life? (not novels or religious texts)"

I think it's a wonderful way to connect in a less superficial way and learn a little more about each other. It's also a wonderful way to discover new books worth reading.

This is one of them (the full list is here):

Design Patterns: Elements of Reusable Object-Oriented Software
Erich Gamma

From Amazon:

Capturing a wealth of experience about the design of object-oriented software, four top-notch designers present a catalog of simple and succinct solutions to commonly occurring design problems. Previously undocumented, these 23 patterns allow designers to create more flexible, elegant, and ultimately reusable designs without having to rediscover the design solutions themselves. The authors begin by describing what patterns are and how they can help you design object-oriented software. They then go on to systematically name, explain, evaluate, and catalog recurring designs in object-oriented systems. With Design Patterns as your guide, you will learn how these important patterns fit into the software development process, and how you can leverage them to solve your own design problems most efficiently.

Goodreads reviews