Review of Patterns of Software

Patterns of Software
Richard Gabriel
Oxford University Press

Reviewed by Nick Christenson,

August 19, 1998

I was deeply impressed by my first encounter with Richard Gabriel's writing. He had written an excellent article entitled Lisp: Good News, Bad News, How to Win Big discussing, among other things, how it is often better to settle for an 80% solution than to spend the extra effort necessary to create something perfect. An abbreviated version of this article appears as an appendix in the Unix Hater's Handbook.

Therefore, when his Patterns of Software came out in 1996, I made a promise to myself that I'd eventually get around to purchasing and reading it. In the summer of 1998 this book was released in paperback, and out of excuses, I finally got around to purchasing it and read it while traveling this summer.

As the title suggests, one of the main topics discussed is the now fashionable notion that it may be fruitful to adapt architect Christopher Alexander's pattern languages to programming. In fact, he devotes the first section of this book to exploring this topic in depth, including a careful examination of how useful the concept of pattern languages has been in architecture. I won't spoil the reader by divulging his thoughts on this matter here, but I found his arguments to be acute and well articulated.

The second and third sections cover programming languages and programming where Gabriel tries to get us to understand what it is that programmers really do, tries to find a silver bullet for productivity (and comes up with a surprising result), and provides a fascinating perspective on the history of programming languages. Again, these articles are quite thought provoking.

I expected the essays narrating key parts of his life story in section four to be a slow point in the book. On the contrary, these passages were highly interesting and, dare I say it, quite inspiring. Anyone who feels that their career may have gotten irreparably off track would do well to read these chapters. Gabriel provides us with an unobstructed look into his successes and failures, and he exposes himself far more than most of us would dare.

Finally, the book ends with a section chronicling the rise and fall of Lucid, Inc., a software company founded by Gabriel. This section provides a remarkably candid look into what can only be called the failure of this corporation. One can still feel some of the sadness and even bitterness in Gabriel's writing, yet he painstakingly reports every turn where he thinks the company went wrong. I imagine not everyone involved in Lucid agrees with this assessment of its history, but this is still a remarkable chronicle of the death of a software company. This is a view we don't often get to read about, yet as is often the case, we can learn more from failures than from successes.

I can't help but be impressed with Gabriel's writing. Not only are his insights keen and his perspectives fresh, even when the topic is almost numbingly familiar, but he is one of the most skillful writers in all of Computer Science. His ideas are a joy to encounter, his writing is a pleasure to read, and I recommend this book highly.


Richard Gabriel is one of the most skillful Computer Science writers that I have encountered. In Patterns of Software, now available in paperback, he communicates a lot interesting ideas on both new and familiar topics. While I may not agree with every conclusion he comes to, Gabriel never fails to get me to think about a problem in new ways, and I believe that nearly every computing professional would benefit from reading this book.

Click here to return to the index of reviews.