Recently, the GoF came up in a discussion on Twitter. They were talking of design patterns, and Joel Ross actually had to refer to the book for some reason.

Now to a seasoned programmer, the GoF is well-known. But some programmers out there are not aware of the GoF or their book. They didn’t mention it in my data structures classes in college, and we never did look at it in programming paradigms either. For me, I learned about it firsthand at OOPSLA ’99.

The GoF was the Gang of Four, referring to the four authors of the book – Erich Gamma, Richard Helm, Ralph Johnson, and John Vlissides. The GoF is also used in reference to the book, so take the abbreviation in context. The book came out in late 1994, and it was first made available at OOPSLA ’94. (Side note: I use the term “was” – sadly, John Vlissides died on Thanksgiving of 2004.)

At OOPSLA ’99, the GoF was on trial for crimes against computer science. The trial description can be found at The Show Trial of the Gang of Four For Crimes Against Computer Science panel description. After having spent some of the day coding in Java, a language I was cramming to learn on our off moments, I was glad to get a break and to witness this.

On Wednesday, November 3, 1999, the GoF was found guilty of their crimes. This was probably the best part of OOPSLA ’99, in terms of bringing in experts with a great sense of humor. Although I don’t remember all of the details of the trial, I do remember John Vlissides kept it interesting. That’s what made me curious about the GoF.

After seeing them at OOPSLA, I had to see what their story was. What is a design pattern and why was there such a big deal about it?

A design pattern is a reusable solution to a common software design problem.
Some pattern references can be found here:

The more I had read about it, the more I wished that they would teach as a followup to a data structures course. The data structures teach the basics – loops, clauses, classes, and other building blocks. A class on design patterns would show just how to use those building blocks in real world applications. Sometimes, you need that extra step to show just how everything comes together.

Then again, it could just be the engineer in me that likes to see building blocks being used to build something in the grand scheme of things.

Links for this entry were gathered via a collaborative search on Tafiti, which was recommended by Jeff Blankenburg.