Design Patterns
From StoneHome
Gang of Four is one of my favorite CS books; getting it changed me significantly as a programmer. The book isn't so much about the patterns contained within; most programmers will know 30-80% of these behaviors already (though the remainder are often eye-opening.) The book is more about learning to see generalized behaviors in a concrete format, giving you a good example format with 23 well-chosen examples. That said, almost every old dog will learn a few new tricks from the set of examples provided; the commonality of the behaviors listed in this book continues to surprise me years after its first read. Another major benefit of familiarity with this work is that it gives one a much higher-level vocabulary in which to discuss specific designs, though still in a language-abstract fashion. GoF isn't language specific, though its examples are mixed between C++ and SmallTalk. Many people consider this book one of the modern classics in computer science. Highly recommended. This book goes very naturally with Refactoring, and is almost a prerequisite to Modern C++ Design; the book is so influential that it has spawned an entire genre of books on patterns in a given field, and more than one series of pattern catalogs, including the notable Pattern Languages of Program Design series.

