These factors have improved programmer productivity slowly. This is fortunate, since we are also designing software systems which are far larger than they were ten years ago. This continuing cycle of fads in the software community provide rich opportunity for consultants who claim that they can come in and save corporate software organizations if only they will follow the course put forward by the consultant. But each time the proposed silver bullets have proven to be illusion. But other fads have real value at their core, accounting for their wide spread popularity.
Design patterns provide a useful way to describe and view software.
The observation made by the authors is that software applications and application components follow certain design patterns. These range from simple patterns like iterator and visitor patterns, which iterate or traverse over a data structure, to complex design patterns like an interpreter which processes a language. The authors show how a number of design patterns fit into the design of this larger piece of software. Design Patterns is well written and the examples are generally clear. I found the book enjoyable to read and in several cases it got me to think about the software I was writing in a different way.