The GoF book

There is also the question of the content and form of the GoF book[GoF94]. First published in 1994, it’s stood the test of time for a work on computer programming. No book other than Clean Code[CC08] seems to have sold nearly as many copies while also still being regularly recommended to new generations of interns and graduates. However, there’s never been an update. Even a later book on the same subject, Head-First Design Patterns[HFDP04], has a second edition. So, the first question must be, is there anything wrong with that? Are design patterns eternal, meaning the book does not need an update?1 Given the number of patterns, this cannot be right, can it? Therefore, we’re left with the questions: what needs updating, and what should an update look like?

There is also the question of why other books on patterns are not in the top ten of best-seller lists for software design and architecture. I had to get down into the 20s before I found another title at the time of writing. In the lists I saw, which offered rankings2 in accordance with estimated sales figures, Game Programming Patterns[GPP11] was only at position 27. If there’s such a glut of patterns and books on patterns, how come they sell in significantly different quantities? Did the GoF book’s success drown out other design pattern sources?

Some people have asked whether the GoF patterns are design patterns at all. In fact, more experienced people than me have called them out as idioms—while some individuals have stated the GoF’s patterns are not found in actual use anywhere3. Others claim their use only began because of the paper and the book—turning them into a kind of self-fulfilling prophecy. Why do people think the book’s patterns aren’t actually patterns? If this is true, what are they then? And what would an actual pattern look like?

Finally, there’s the question of form. There are some concerns regarding the way the patterns are structured in the book; some of them did not make complete or obvious sense when contorted into this mould, making them less practical than they could have been. The work also observes that there are significant differences4 to Christopher Alexander’s patterns and does not strictly adhere to the principles of his pattern language. This begs the following questions: why do some people think the movement could have been hurt by setting a theme and structure for patterns? What harm did this literary structure do to the power of patterns as both a device and a movement?

1

Even the original GoF believe some patterns need updating and others should be added, so realistically, the answer is a simple no.

2

One site was https://bookauthority.org/books/best-selling-programming-books; the other was digging into Amazon sales rankings myself. The rankings change regularly. Sometimes, there are no other design patterns books in the top 20. Other times, it seems Patterns of Enterprise Application Architecture[PoEAA03] can make an appearance.

3

This particular point was written up by David Budgen in a study at Durham University https://www.infoq.com/articles/design-patterns-magic-or-myth/

4

Page 356 mentions Alexander’s patterns have an order, emphasise the problems rather than solutions, and have a generative capacity. On the following page, they admit the work is not a pattern language but ‘just a collection of related patterns’.