Venue: Internet
Johannes Thönes talks with Erich Gamma, Ralph Johnson and Richard Helm from the Gang of Four about the 20th anniversary of their book, Design Patterns. They discuss the following topics: the definition of a design pattern and each guest’s favorite design pattern; the origins of the book in architecture workshops; the writing of the book together with the community; the rock-star feeling at the release of the book at OOPSLA conference; the influence of the book on the industry; the evolution of the Observer pattern; and new patterns since the book was released. The interview closes with each guest talking about their current projects.
Show Notes
Related Links
- Design Patterns: Elements of Reusable Object-Oriented Software by Erich Gamma, Richard Helm, Ralph Johnson and John Vlissides: http://www.amazon.com/Design-Patterns-Object-Oriented-Professional-Computing/dp/0201634988
- Erich Gamma: http://en.wikipedia.org/wiki/Erich_Gamma
- Richard Helm: http://en.wikipedia.org/wiki/Richard_Helm
- Ralph Johnson: http://en.wikipedia.org/wiki/Ralph_Johnson_(computer_scientist)
- John Vlissides: http://en.wikipedia.org/wiki/John_Vlissides
- Episode 81: Interview Erich Gamma: https://www.se-radio.net/2007/12/episode-81-interview-erich-gamma/
- A Pattern Language: Towns, Buildings, Construction by Christopher Alexander A Pattern Language: Towns, Buildings, Construction by Christopher Alexander: http://www.amazon.com/Pattern-Language-Buildings-Construction-Environmental/dp/0195019199
- Kent Beck: http://en.wikipedia.org/wiki/Kent_Beck
- Grady Booch: http://en.wikipedia.org/wiki/Grady_Booch
- Episode 76: Special Episode on the Patterns Journal: https://www.se-radio.net/2007/11/episode-76-special-episode-on-the-patterns-journal/
- Episode 1: Patterns: https://www.se-radio.net/2006/01/episode-1-patterns/
- Chinese Gang of Four: http://en.wikipedia.org/wiki/Gang_of_Four
- Gang of Four, the post-punk group: http://en.wikipedia.org/wiki/Gang_of_Four_(band)
- Team Blog: Visual Studio Online “Monaco”
Erich Gamma
- Twitter: @ErichGamma
- Team Blog: Visual Studio Online “Monaco”
Richard Helm
- Richard Helm at BCG Website: http://www.bcg.com/expertise_impact/BCG_fellows/technology/richard_helm.aspx
- BCG Value Pattern: https://www.bcgperspectives.com/content/articles/value_creation_strategy_corporate_strategy_portfolio_management_value_patterns/
Ralph Johnson
- Metaficient: http://metaficient.com/
- Twitter: @RalphJohnson
Transcript
Transcript brought to you by IEEE Software
Johannes Thönes 00:00:34 Welcome listeners. We’ll use show of software engineering radio. My name is Johannes Thönes and today I want to talk with three gentlemen on the other side of the Skype connection, um, about their book, they wrote 20 years ago, which was, uh, the book design patterns, elements of reusable object oriented software. And, um, with me are actually Erich Gamma, uh, Richard Helm and Ralph Johnson. Welcome to the show you three. Um, so let’s first look a little bit about what those people did. Um, so Erich Gamma is of course, author of the design pattern book and therefore member of the so-called gang of four. Um, he holds a PhD from the university of Zurich and this, um, his degree was actually the, the foundation for, um, the design pattern book. Um, later on, uh, I heard he created J unit together with Ken Peck drinking, um, doodler on Austrian airlines. Um, and, um, also, uh, later on, he became a distinguished engineer with rational software, uh, later IBM rational, where he introduced the Java IDE and, uh, worked on a collab collaboration tool called Jess and since 2011, he’s distinguished engineer at Microsoft where he works on visual studio. So, um, welcome back to the show you have already been here in 2007 for show 81. Erich, I know you talked about everything about your life up until that point, then let’s try to talk about something different today. Um, so next on, uh, on the list of, of the four officers is, uh, Richard Helm, also an author of the book. Um, he holds a PhD from an informatics from the university of Melbourne. He has been involved in Oslo conference as a committee member, uh, worked for IBM research and was part of the team which worked on IBM Watson. Um, and really what have you been doing? I’ll be worked on patterns and we worked on, um, software technology. Watson was, I was that Watson research lab. Uh, okay. So I misunderstood the Wikipedia. I remember he worked on contracts protocols. So, uh, and, and they don’t, he became a consultant for the DM group and IBM consulting. And, uh, then actually he left the computer industry and today he is a partner and managing director at Boston consulting group. And, um, he also, according to the website of Boston consulting is it’s a fellow there where he works on the technology enabled transformation of companies and industries. Uh, yeah. Welcome to the show Richard. It’s very nice to have you here. Um, lastly we have, uh, Ralph Johnson, um, and he’s also also off the design pattern book. Uh, and he is today a research associate at the department of computer science at the university of Illinois at Urbana champagne. Um, his Wikipedia article States, he’s a pioneer of the smalltalk language. So he is the person who contributed all the small talk examples to the design pattern book. Um, he serves at, uh, several executive roles at UberConference and currently works on a financial accounting system in group prove yet meta efficient. Um, also welcome to the solar house. So, um, as I already said, that was the, the authors of this book have been called the gang of four. Um, but we are only three. Um, there’s a fourth person called John Richard. Can you tell us what happened to him?
Richard Helm 00:04:35 So John was, I loved colleague of ours. Um, he worked with me at, um, IBM Watson. Um, when we first started the book and I remember many times every morning walking down the corridor to shoot the breeze about, um, whatever was on our minds that day. And, um, he worked very closely with all of us as we put the book together and, um, very sadly and tragically, he passed away in 2005 of a, um, brain tumor. And, um, we, we miss him daily. Um, and his spirit is in the book everywhere. He did a lot of work to push us to finish it on time, um, and worked very, very closely with the publishers Addison wisely to do it. But there is lots of John, um, as all of us in the book. And, um, by certainly think of him often as, um, um, we come across the, um, examples of patents and even in the work that I do nowadays. And, um, a lot of the fact that the book got out is Testament to John’s hard perspiration, if you like. Um, after our collective inspiration in the last few months in, um, before we released it to get it through the quite complex and always challenging process to, um, get it pre published and printed, you actually did the memory,
Johannes Thönes 00:05:58 Right. It still would, as you open the book, you read one page and you see kind of, I see John, so that’s really good, but even so he passed away, he’s deep in our memory and he really was the master wordsmith and passionately till the very end, right. Squeezed the best words of our initial word to make it better. So that’s why it’s so funny, my memory, right. If I open on page and I reach on even, so it’s a joint contribution, right.
Ralph Johnson 00:06:21 Establishing it, which is great. Yes. Could definitely put a lot of his styling.
Johannes Thönes 00:06:26 So he, he is kind of with us in spirit today as well.
Ralph Johnson 00:06:31 Yes. Yes.
Johannes Thönes 00:06:33 Good. Um, maybe, maybe some, some detail about how we record this episode before we go into the start. So, um, Eli is actually sitting in Syria, I’m sitting in Hamburg, so we are on the same time zone, but Richard is in Sydney, um, a couple of hours before us. So right in the morning, uh, Ralph is in Illinois, which is a couple of hours behind us. So he’s in the afternoon. Uh, we are in the evening and Richard is in the morning. So a very different, uh, perspective, but still, uh, I hope it’s going to be an interesting episode. And I would like to start with like the very fundamental questions. The question is, what is the design pattern at all?
Ralph Johnson 00:07:19 When I describe it to people who aren’t computer people, I usually say that it’s a catalog of design techniques. My brother is a woodworker. He builds cabinets and tables and things like that. And he’s got a bunch of books, which he bought from somebody else, of course, and that described different woodworking techniques and every, and the books are divided up into chapters. And each one has a few pages that will usually show a picture of the finished article. So it’s like a dove tail corner. So they’ll show some, some article that has that in it, but then it shows how you make it and how you hold your hands while you’re cutting the wood. And then it teaches you how to do that particular technique. And one of the things that we talked about as we were writing the book was that there’s a lot of techniques.
Ralph Johnson 00:08:02 We have algorithms data structures that people write books about. There’s a lot of design information, software just was never documented. It was never cataloged. And so Erichcame to me and said, do you want to help us with this book? And I said, well, I’ve never worked on a catalog before. I think it would be an interesting project. So that was really what we were trying to do was to help catalog these design techniques. And we were focusing on an object joins and design techniques. And it was at the time when object programming was just beginning to be popular. And so a lot of people wanted to learn object doing programming. They were looking for, uh, for, for design information like this. And so it was a good time for the book.
Johannes Thönes 00:08:42 Can you make an example maybe of one of the design patents from the book so people can relate to it a little bit.
Ralph Johnson 00:08:49 We can each give our favorite one.
Johannes Thönes 00:08:52 Well, strategy is very popular, right? So you want to vary some
Erich Gamma 00:08:56 Particular behavior in your systems, or rather than just bake it into your object. You kind of come up with a structure and we describing a pattern how to make some behavior pluggable, and we have a format for doing that. And we describe you variations for doing that and strategies about really delegating some behavior to separate objects so that you can then plug in a different object and change the behavior dynamically in a flexible way. So it’s really about petitioning behavior using polymorphism in a way that improves your design. I think Ralph mentioned it’s about opportunity techniques. I think it’s about nice uses of option techniques. I would almost say it has to be cool. Otherwise it’s not a pattern, right? So we don’t describe how that an elemental class, but we describe how to use polymorphism to get plugable behavior out. He reviews, interface, decouple objects, things like that.
Ralph Johnson 00:09:48 So my favorite pattern is a composite and the composite pattern is about making it so that you can treat a group of objects as if they’re a single object. And you need to have an interface to find an interface that can either be the interface of a single object or an interface of a group of objects. And then you’ll have some classes with maybe just a class, which is this composite class, which is able to, uh, we’ll have a list or, or keeps it a group of objects in some way. Often there’ll be a number of different kinds of composite classes, but they all, all those classes they need. Of course you have classes that represent just a single object, uh, their, your, your base, and it’s that whole collection. That’s having the interface, the common interface. Then having these composite classes and having non composite classes all together that make up the composite pattern. And you see that in a user interface, when you have a window in a window, I have various parts, but you can grab the window and move the whole window and all the parts of the window move at the same time that you’re here thinking that just the single object that you’re manipulating, everybody is a bunch of them. And there’s a lot of cases in programs where you want to do something like that.
Erich Gamma 00:10:53 Hey, Richard, now please don’t pick Singleton as your favorite.
Richard Helm 00:10:59 I was just about to,
Erich Gamma 00:11:03 Yeah.
Richard Helm 00:11:04 Which probably speaks to, we shouldn’t talk about later about some of the patents, which should be voted out of the book. Um, I think for me, um, I always liked, um, um, uh, observer, um, cause I think for me that’s well, before we started the book, it was really the, how to think about the role of composition in building systems, um, as a PA. Um, and that’s about how you dynamically construct the fuel at the runtime architecture of systems and make the various parts, um, communicate with one another, um, versus what is often the static structure that appears in other languages in the software. And for me, that was where I finally, I think, um, got what, um, a lot about object oriented programming at the time and how to think differently about systems from a runtime perspective rather than a purely static code perspective. And that’s where you see some of the aphorisms in the look about book, about failing Tom favoring, things such as, um, composition over inheritance and this notion of kind of separating out the concept that varies. I think to me, that’s before the book, but I still like it, um, where I think that one of the big revelations could
Erich Gamma 00:12:23 And observer it’s interesting because it’s one of those patterns, which is, was in the small talk, right. And in a very simple form, it has evolved quite a bit, right then with Java listeners, how to use interface, the letter gated then, um, later on old data binding how you bind, which is to data. And then it synchronizes using observer and today, you know, reactive programming, how we can make it easier to deal with all these events that come along. So it’s,
Richard Helm 00:12:48 And also you see it in when, in my work today and that’s kind of in, within the code, but it also, um, in dealing with the companies I deal with nowadays in large enterprises, how you connect kind of lodged enterprise systems across a large corporates technology landscape, like various parts together. And you see variations of that in the lodge as opposed, and the system level, as opposed to within the Bacardi level.
Erich Gamma 00:13:13 Hmm.
Richard Helm 00:13:16 That’s awesome. One other observation I actually use when people talk to me about, um, ask me about design patents. I use exactly the same, um, example that Ralph does about kind of woodworking, but actually the history of patterns goes back way further than that. Um, I stumbled in Sydney for many of our listeners may have been to Sydney. There was a, a, um, sort of sculpture by looking at the Sydney opera house, um, which is in recognition of, um, the first governor of Australia in 18, 10 to 1821. He was governing the colony of Australia and his wife arrived with a book of patterns about how to, um, build certain types of neoclassical buildings. And I saw the sculpture and went to the, um, the museum of Australia actually, and, and asked the person who was in charge of, um, antique books, if it was possible to have a look at a copy of this book, did that headline.
Richard Helm 00:14:17 And they brought one out with white cotton gloves and laid it out special table on a pillow just to protect the, um, the pages of the book. And in there, there was, it was a book of patterns of buildings and, um, and those buildings were, um, solve particular design problems of, um, size number of families, purpose of building Polly, um, unsuitable for Australia, I have to add, um, because they were brought from England and the climate here and the temperature is somewhat different. But if you even today walk around Sydney, you can see examples of buildings, which reflected that original pattern book from 18 tending. When can you kind of,
Johannes Thönes 00:15:00 Can you imagine that someone will look at your book in the future somewhere like that?
Richard Helm 00:15:07 Well, I’m only very proud of it’s 20 years old and still in print. Right. So let’s, let’s celebrate that for them.
Johannes Thönes 00:15:15 I have a copy here it’s only five years old. Um, have you read it? Uh, I, I actually did. Yeah. Even in preparation to this episode, I read it cover to cover, uh, for the first time. Um, I think,
Richard Helm 00:15:28 I think it would be loved. It is quite, um, humbling and, um, to see that, uh, it’s, it’s still in print, um, and people actually still buy it. Um, I think like all of these sorts of books and there’s examples of pattern books in engineering as well, which was, um, uh, I’ve, I’ve seen discovered since I think all the, the patents in the book are somewhat universal. Cause you see them evolve over time. As the technology has changed in some software engineering and software technology and you see different variations of languages and ways to solve design problems. And Erichjust talked about some of them, um, but technology doesn’t does evolve and find different ways of solving design problems. And what thought people thought was a terrific idea at the time. Um, people sort of work out later on that, perhaps it wasn’t a great idea and or there are better alternatives and hence the laughter earlier on about Singleton.
Johannes Thönes 00:16:35 Um, maybe, maybe take us a step back before we go into how I develop. Um, I’m 30 years old. So I was 10 when the book came out and I didn’t read it on the first day. Um, so what was the industry looking when you were actually working on the book and uh, what triggered you to write the book?
Richard Helm 00:16:58 So the industry, right, I think there was the Uber conference was the coolest thing on earth, right? You go there and it was really, it was a very cool conference. And at the same time, there was a whole move on methodologies, how you design object, you systems.
Johannes Thönes 00:17:14 So a design methodology is not agile.
Richard Helm 00:17:17 Methodology is not about Della and process. So might have books about opportunity design and so on. There’s a lot about modeling, right? The amount, how you diagram destructors, how will represent the models. And at least to me, you know, I read lots of code at that time, working on my thesis, right? Reading small dark writing, our own code, reading interviews that John worked on, or I draw and it just kind of missed the coolness. I saw in small talking to libraries and code Bureau there. How use objects in this? It wasn’t captain new methodologies. Right. I think
Erich Gamma 00:17:50 They just talked about not the staff, how I think you can use optional techniques as, as a developer. So that’s why I found this deeper, more interesting structures and what happened then I met a feature for the first time. It looked like they had the same feeling, right. There is something here, which goes deeper dentures, the class hierarchies and coming up with some representation of persons and or accounts, whatever. Right. So that was kind of my thing. It was a lot of focus on design methodologies, which were little bit abstracting. They didn’t capture kind of, for me, some of the essence of objects, put them a face and what you can do with it. And so you, you said you, uh, first you Richard and Ellie, uh, worked together on it. How can the other two onboard?
Richard Helm 00:18:35 So I, I, yeah, I think it’s, I remember, um, Erichand I sitting in Zurich actually on refutes on a hot summer time
Erich Gamma 00:18:44 Liters of ice tea. Right. The creation methods. Can you please elaborate on the creation myth and all the interesting things have some creation myth, right. So in our creation is we drank lots of ice tea,
Richard Helm 00:18:56 I guess the various beads I recall too. Um, yeah, I think so. I think that’s where, um, Erichand I spoke a lot about exactly the point he made is that actually when, cause I was, um, working with interviews at the time, um, which is John’s, which came out of John’s PhD thesis, um, which was a, um, uh, a class library and frameworks, um, for, um, user interfaces, graphical editors, um, um, frame a called uni drawer at the time. And, and what struck me was two things. One was the, the John wrote fantastically fantastic code. Um, it was really elegant and simple to understand and read, but in that, um, in the software there, there was, um, some terrific design ideas and that’s where, and so I was looking at that and think, well, it’s exactly, as Erich said that you read the methods and nobody’s talking about this stuff.
Richard Helm 00:19:55 So Erichand I spoke a lot about this off the back of, um, trip that I happened to be in Zurich for. And there was kind of a meeting of minds there. And then at that time, soon or soon after John came to work with us at IBM Watson labs, um, and outside of New York. And that, that meant for me was actually, there was another kind of likeminded Saul nearby who we could talk about these ideas. And then, um, there was an, the sequence is not going to be perfect here. There was a series of, um, workshops held, oops, let me in the early nineties, which a guy called Bruce Anderson put together, which was titled towards an architecture, the software architecture handbook, where there were other people were starting to get glimpses of different of thinking about rather than a methodology, a methodological approach to software, is it alternative ways to kind of capture what people know how to do things?
Richard Helm 00:20:57 And so we participated in that and actually got to know Ralph, um, through that process and then sort of, I think that there was a, then it was a kind of recognition and certainly that Ralph expertise and experience in small talk at that, um, Tom, he was, um, very well respected and recognized and had kind of clearly a deep expertise at that time. I’m still does about small talk. Well that actually that was another source of engineering ideas or design ideas that we thought would be really helpful to, um, bring into the idea of this, um, Volcker handbook. Um, and in those days we wrote this and all of us, I think still have a copy of it somewhere in the, in our filing cabinets, 20 page version of the book, which had 20 patterns in it, one per page, which we put together as part of those workshops. And I think that was really the germ of the idea for a potentially this could be a book and it sort of grew from that. So, um, you first created a few workshops on
Ralph Johnson 00:22:08 Before you started independent there, I would say, yeah, the workshops were Bruce Anderson’s idea. He was pushing them in the ad. They were definitely not patterned workshops. It was what kind of literature does a software architect need? It was a much bigger goal to them. And there were there two workshops in particular because the first one I had met ErichA. Little bit before I had never met Richard, I think I had been in the same room with John, but had never talked with him before. So at this, um, we, we all were supposed to write what we thought ought to be in the architecture handbook and to write like a sample chapter of what we thought should be in the architecture handbook. And I remember that I was thinking frameworks, the frameworks were an important thing that ought to be in this kind of handbook. And so I wrote something about that, but I remember that, uh, that Erich and Richard had a joint presentation and when they got up and they went through these different patterns, I recognized that all the patterns they were teaching or all the patterns that they had were things I was teaching in my ongoing design course.
Ralph Johnson 00:23:17 I either gave him a different name or I didn’t even have a name. I often would teach them by example. But I knew right away that these are the exhibits where I’m teaching. So I came out of that workshop thinking still that important thing that ought to be on the architect is handbook. But that these design patterns was a whole important level of design information that I hadn’t been thinking about, but that ought to be there. So I recognized that it wasn’t like I didn’t, I knew them already, but I did realize that I knew them before. The other interesting thing that happened was I had been visiting Tektronix for a number of years and knew camps from there. And I was using one of his, uh, hot draw, which was one of the frameworks he had developed.
Johannes Thönes 00:23:57 Ken does come back in this case.
Ralph Johnson 00:23:59 Yeah. I kept back and word kind of ham. Uh, that was a project that there. So, uh, I believe both of them were at the, uh, but we were supposed to, at this workshop, we were supposed to, uh, work in small groups and make some sort of a poster that we present to everybody else. And Katz said to me, uh, I want to write a pattern language for pot draw. And I know you’ve been using hot draw, and I know that you read Christopher Alexander’s books and that’s cause he was twisting my arm to make me read the books, whoever I would see if he wasn’t, he would tell me I should read them. And so let’s write one and I was, I I’m always willing to try anything. Okay. So I, I, I won’t say I was, I was skeptical. I was definitely not a believer, but we sat down and we spent a couple hours and we wrote all of these and he said for our demonstration, we should teach it to somebody else.
Ralph Johnson 00:24:46 So we grabbed norm curve and we explained these patterns. There were like 10 of them to him. And then when it came time to do a demo of our, or do a presentation on our poster, what we did was we said to the audience, describe a graphical program of some sort of a graphical editor you would like to see built. And, and someone said, how about this? And so we said, we have written a pattern language and we have taught it to norm curve and he is not going to design it for you. And so he showed how you’d use the veteran language to design a, I don’t know how much he knew about Hydra already. Maybe he knew more, but it was a great success. And I was so impressed by that whole experience that, you know, breaking something down into patterns really, really can work. And that started me using patterns in my own teaching. And that was, it really was a year later, is that the next workshop was when they invited me to, uh, to join in with them. And John, by that time, John was working with them and I was the fourth one to join the project.
Johannes Thönes 00:25:50 Interestingly John’s PhD thesis was all about the drawing framework, a uni draw, which had all the similar concepts. I can’t join there. Um, yeah, maybe a note for the listeners. I’m like, not this time, I’m not jumping in on any term, um, regarding patterns because we kind of assume, you know, a lot about pattern. What is a pattern language, if you don’t, we have older episodes on design patterns, um, and I’m going to link them in the show notes, but I want to focus on this episode more about like the history, how it came to them and how they will evolve over time. Um, one thing I’m particularly interesting interested about because it’s, it’s nowhere documented is so we know kind of how you found each other. And it was, uh, based on ICS, as I know now, but, uh, how did this name gang of four came into place?
Richard Helm 00:26:46 Not really sure. I don’t know who did it first, but it’s helpful to have a name for a group. And somebody came up with that name, Brian Foote. It might’ve been Brian, but it’s exact sort of name that Brian Brentwood would come up with, but I’m not sure whether he actually invented it or anyway, you know, it was the Chinese gang of four was in the news. And so it was the sort of name that would stick.
Erich Gamma 00:27:19 And I liked it because it’s also the name of an English post punk band from Leeds that you liked a lot at that time. So that’s good. Good move. But you did, you didn’t do anything. He didn’t do anything like behaving specific specifically like a gang that people started.
Richard Helm 00:27:39 No, we didn’t
Erich Gamma 00:27:40 Walk through the Oakland conference with chains and in black leather suits. No, that wasn’t us four guys. It wasn’t us.
Richard Helm 00:27:49 Did you,
Erich Gamma 00:27:49 When you were writing, so you, you had this earlier Deere and then at some point you decided to turn it into, into a book. How did that come about? That was very important. Intermediate step, right? We said, okay, we have all these ideas. You want to do some things. I guess the first milestone was we did a paper for the European conference opportunity
Richard Helm 00:28:08 Programming, but by the time we had that paper, we had written like 70 pages. So we knew it was going to be a book because there was nothing else you could do with 70 pages. We had to extract stuff to make paper and let me start it. We weren’t necessarily thinking of book, but by the time we hit the concept pages, it was obvious. That was where it was going. Yeah. And I think the process from, from there was that, um, so I was living in New York at the time and there was a, um, I, a conference running in New York. Um, I think it might’ve been something called object world at the time. And I went, went to that and spoke to John White, um, the hotel where the conference was, um, running. And, um, I think I handed him a draft of the seven year old pages and said, look, we’re thinking about this, writing this book. Um, what do you think here’s what it’s roughly about the idea. It’s some kind of handbook of software engineering. Well, I’m just trying to design and um, and then John took that way, did a bit of diligence and spoke to a few people in the industry who he knew. And then, um, shortly thereafter, um, we, um, met with him again. I met with Allison Wesley again, and then we saw the, uh, the contract for the book. And then, um, the wheels were set in motion
Erich Gamma 00:29:36 From then on, no, we were never, we have only met once in person and we wrote it all by email. I guess there’s 3000 emails happen on the way to the book then 3000 demons. That’s a lot.
Richard Helm 00:29:46 Yeah, it was exactly. We were, we were in however many different countries. I was in Canada at Ralph was in the U S
Erich Gamma 00:29:54 Working for Apple Telligen.
Richard Helm 00:29:56 Yeah. And, but we never physically got together. We did it all electronically and sent chapters of the vocal patterns to each other and sort of had a weekly, um, development and release cycle if you like. Um, where we, um, slowly but surely added each of our thoughts, ideas to each section, um, made sure that all of us had clearly different ideas and inputs and, um, slowly but surely developed the, um, the book over the next year or so I think, um, to have eventually be put into production in sort of actually about this time. So it’s August now in 1994 for actually being printed to be delivered at, oops,
Erich Gamma 00:30:49 Wasn’t this, this time. And John told us, he told us the deadline is kind of August.
Richard Helm 00:30:54 That’s right. That’s right. That was the original deadline to begin in July. So we had like another month after we thought the first deadline that didn’t have another month or so before the real deadline and partly the reason, and nowadays they’ve even shorten those deadlines. But back then it was a very short deadline because we were giving them postscript, is it before PDF? So it was postscript. And John produced all the postscript and was, he was obsessing over every pixel. And so they didn’t have to change anything that he gave him.
Erich Gamma 00:31:23 You use LayTec right. So yeah, let’s interesting. It was a lot of evolution kind of insights. So we had fights about how things should go, right? Because you’ve worked different libraries. Now I work 80 plus plus with Andrew wine and from Switzerland, John was interviews with Richard and others, no standard, whatever. And it took us a while to understand there is no right or wrong way, right. So we could argue, no, that’s how you need to do it. And John was really quoting interviews and then was quoting other things and through Alf, the small Dick way and Richard, whatever. And it took us a while to understand there’s no right or wrong, it’s kind of variations and trade offs. Right. And I think there was a, it helped us to get to peace again, when you realize that there’s not right or wrong, right. It’s not, patterns are not prescriptive. Patents are about tradeoffs you make. And that for me was a deep insight so that there is no only right way a pattern can be implemented of that many variations. Right? Yep. Yep. That’s the richness of patterns. What I like today. Right. And I also look at the history of how they evolve have observed the wealth, all the variations. Right. That’s what’s, I’m still, I feel like patterns even after 20 years. Right. I still see them everywhere and yeah, I still liked them. Was it at that time that you had an idea,
Richard Helm 00:32:36 The impact of the book. So did you want start a movement
Johannes Thönes 00:32:40 Or was it just that you saw, we have four guys and we want to share this and we probably don’t want to, it’s going to read it.
Ralph Johnson 00:32:48 It was the one thing was interesting. So be very, actually scared what we have. Right. So Richard, wasn’t shy at all. He gave it to whoever wanted it. Right. I guess on the street you were handing it out, Richard, right now we are scared. And then I don’t know, you, you gave it to, everybody has a name in the, in option to circles. Right. And got feedback and you’re already happy matching something. The people on the REIT, that’s kind of, we have a really happy that the eco paper got accepted at eco, which is a scientific conference. Right. So have any idea what the going to be when we started it. And it wasn’t like it was all carefully planned. And so that it would be selling for 20 years. It was just not. But we, in retrospect, we did a lot of things, right.
Ralph Johnson 00:33:31 One of them was getting a lot of people to read it. We had a, I set up an FTP server. This is before the worldwide web. Okay. So we had FTP server and a mail server and people could join. And we had like 500 people on our mailing list. And, and when you read the first page is acknowledgement. The long list of people who made comments. A lot of those people were people on the mailing list who would make comments. And so every, every two weeks I think we’d put two patterns out. And then we went to bait them for a week or two. So this was, it was by this time it was fairly mature, but we got a lot of feedback from people, found a lot of things wrong that we wouldn’t have found otherwise. So we were pretty serious about trying to make it good.
Ralph Johnson 00:34:10 And we weren’t trying to make it good so we can sell a lot. We were just trying to figure out what was right. I mean, that was a lot of the fun was writing the book was these arguments that Erichtalked about because we got to learn from it. It, wasn’t just, we’re going to explain to everybody what we know it was, we’re trying to understand why do we see these patterns everywhere? What is it about them? And what’s the best way to do it. We were, even though there isn’t a best way, we were trying to figure out what the best way was. And so, so we weren’t, we didn’t invent these one things. We invented ourselves. So it wasn’t like we had a particular ax to grind a lot to force everybody to think our way we really were trying to figure it out that made it a lot of fun. And that’s what helped make it be good in the long run.
Johannes Thönes 00:34:47 Okay. Let’s, let’s make the two final months. Um, so, uh, the book came out at Oop slur and apparently there was a long queue for, uh, getting the book signed. Uh, Linda rising talks in one of the previous episodes of this book, they’re queuing there and really eager to getting the four signatures on it. How did it,
Ralph Johnson 00:35:07 It could be described as the rock star feeling of yeah.
Johannes Thönes 00:35:10 Yeah. Can you, can you describe a little bit the rocks to feeding your head at this moment?
Ralph Johnson 00:35:15 Well, first of all, it was very tight thing because it was a rush at the end to get the, um, the book to be at books left for the opening of the exhibition. And so we were quite nervous and the publisher was certainly quite nervous and the books, um, that got there, um, literally were hot off the press. And, and so the conference opened and,
Richard Helm 00:35:38 And they opened the doors and there was a, um, John White, the, our editor said that he thought there was a fire alarm. It was such a rush of people to understand that we may have done. Yeah. I can’t remember. I could have guessed Republican Ralph, you know,
Ralph Johnson 00:35:56 Well, I was, uh, well on that particular day that you three started signing before me. And so maybe like an opened at 10 and you were there and I had a tutorial to teach and I couldn’t be there until 12. It was something like that. By the time I got there, every book was sold and they were mostly signed. And you had a whole bunch of people trying to get their fourth signature because I hadn’t been there. But, uh, they had all been sold by the time I knew
Richard Helm 00:36:28 Directly the truck too. Yes, that’s right. No, I, I, it’s a rumor. I have right. Redirect to the truck and the, the local bookseller who was actually had the stand, um, was trying to get as many copies of the book. It was a local Portland bookseller, which actually ran the stance. It was the silence essentially for that bookshop. And they were trying to get copies from all over the U S to, um, kind of fulfill the demand. Cause remember, in those days it was a thousand people there. It was that big of conference. And, um, the point about being hot off the press, as I also remember, was that, um, if you were lucky enough to get a book on the first day, um, you will notice that all the covers, um, have, would have warped slightly because when printing the books, you have to let them sit and be pressed in stacks so that the glue hardens profitably, and they settled down properly leaving for at least a day or two. So they mature after being bound and glued together. And the books were almost still warm. And so the first set of books sold that week, um, all the covers walked. So they, and they have started, if you’re lucky you have 44 signatures and walked color.
Ralph Johnson 00:37:42 So one of the things you had said was, um, about starting a movement and we really didn’t have any plans for that. We were just trying to write a book. We weren’t necessarily looking for bigger ideas beyond this book. There were people who were in particular, Kent Beck had been interested in Christopher Alexander for a long time, and it was in patterns in a bigger scheme. And so he, um, one of the things he had run a workshop, uh, a previous year. I’m not sure where that, when that was exactly, it was in the summer, it was in Colorado in the Rockies, but he had gotten a number of people in particular Grady Booch, uh, at this place and, and trying to convince them of the importance of pens. And some of the people who came were already pretty interested. Uh, I think I was the only one of us for the four of us who was at this, but, uh, one of the things that he can’t succeed, it wasn’t convincing Grady, Booch.
Ralph Johnson 00:38:37 That patterns were a great idea. And since our book was the ingredient decided that the next year he was going to, uh, promote the idea. And since our book was the only one on the horizon, I had come to this with a graph that I could share to people. Cause like had said earlier, we were sharing graphs with anybody. We could, um, he basically, uh, advertised our book for the next year, for the, for the year before it came out. And there were other people who had seen drafts who got enthusiastic about it. And so you had a lot of people who were talking about the book and that really made it a beta takeoff. And it’s really been other people I’ve been involved in an organizing conferences on patterns. And I’ve been happy to push patterns in a bigger, my interest in that really happened more after the book rather than for the book.
Johannes Thönes 00:39:24 So you, you used the technique today. You would call viral marketing. Yeah.
Ralph Johnson 00:39:29 We had viral marketing, uh, sort of by accident.
Johannes Thönes 00:39:33 Okay. Um, so maybe we can talk a little bit about what, like how this movement started after this, this book was there, what changed in the industry because of the book,
Ralph Johnson 00:39:50 But one of my complaints about the computer science academic community just in general was that there’s a lot of important design information that never got written down. And there wasn’t a good place by a place. I mean, there were conferences there weren’t journals. There weren’t places that wanted that kind of information. So a lot of stuff fell through the cracks. And I think that, that the patterns having these, there’s a number of books that have been told, well, ours, isn’t the only one, but ours is the most prominent of them, but this has given a place. And that’s one way where, where people write about more concrete design information. Uh, but there’s the Yukon, uh, I guess that’s the website, right? There’s these conferences and they have, uh, they have, um, like architectures you you’ve always wanted to know about, they have people from different companies talking about the architecture of their software. So there’ll be somebody from Facebook or there’s some, some, some places you’ve heard of talking about the architecture system. I don’t know whether that really is influenced by patterns, but that’s the kind of concrete information that just that 20 years ago never got out. And now it’s very sought after, and companies are happy to let their people talk about it. And, and certainly programmers love to hear about that.
Johannes Thönes 00:41:17 Actually reach it produced this time, this book timelines, light, where he added all pattern books in miniature form, copied, whatever the book cover over from, from the eighties. Now, Christopher Alexander Copely in whatever he coped and our book and all the audits was amazing.
Erich Gamma 00:41:34 You see a funnel right? Going opens up at, uh, at what was it in the nineties or 90 all kind of all the books. No. When system design, software architecture analysis, uh, that and processes and Richard, I saw, I was looking at this slide recently, we used stopped the 2004 Reflect more. Right. That’s and use this, this forum.
Richard Helm 00:42:01 Yeah. It does things like the whole open source movement has meant that if you want to get people to use your software, if you want to grow your community, you have to explain it. You have to talk about it. And so you’ll get all the conferences where people come up and explain what the key ideas are in their software, which they needed to do that in order to attract users back in the old days, when all the software was commercial software, you didn’t have to talk about the internal system that you bought at first. And once you bought it, then you can take courses from the vendor on the internals that now things are just much more open and it’s not just pattern patterns. We’re part of that whole process. The only thing I think Ralph makes a really, really important point there. Um, we way back then, um, and I think it was Brian who in his classic way talked about, um, software archeology, um, when we were at the period in the early nineties, I think for people who are starting out, um, you use great software.
Richard Helm 00:43:05 Um, but it’s very, very hard to actually understand what makes it great. Um, you can look at if you’re lucky you get access to the source code, um, but actually on the whole, um, the engineering, if you like at the core of many great pieces of software, I recall we used to use Emacs a lot and it was great patient software, highly configurable. It was difficult to understand how it worked. And there were generations before that, as you go from operating systems or compilers. Um, and I think what, um, to Ralph’s point, what it gave people was permission to actually describe the design and the architecture of software systems, which, um, wasn’t really done before because of the commercial nature of it. Um, it was closed. And from that build a body of knowledge about how to design software in the small, if you like, which is what design patterns are really about, but also they’re much more macro level to some of the points that Ralph was saying earlier on about actually describing the architecture of some of the software systems that we use, um, all of us day to day to actually understand and take that lessons and learning to take elsewhere.
Erich Gamma 00:44:17 Okay. Patents are not only about CDC before research was looking forward. What’s the next thing, right? And, um, patents more look backward, right? What, what worked and open source gives you such a wealth of material to look at the loan from, right. And I think that really opened this door and the anecdote I have, no, Richard was a researcher at that point. And when we had this iced tea drinking party right in the evening, when we separated, I said, well, let’s write a paper. And so me do conference. I know Richard, you were very skeptical during your research hot, but it does even make sense. Right? You might not remember that you were a scholar. It’s a point I disappoint, right. So we have, we have done something cool, but you have to research all done. And I think this has changed and we can set up a little bit. That was really good. Maybe, maybe ask more confrontative question. Do you think patterns have made software better these days?
Ralph Johnson 00:45:12 So they haven’t made it better as much as we had hoped, but they certainly haven’t made it worse to the extent that people use them. Again, I know cases where patterns made things worse. If you can certainly look, one of the things that happens is people read the book and they get excited about these patterns. And they seem to think they’re magic. That the more they use the patterns, the better their software is going to be instead of figuring out where they should be used and the right way of using them and how to adapt them. So I’ve seen some systems that were really over-designed and a lot more complicated than they needed to be because of misusing patterns. But that’s usually just a stage. It’s a young person who is still learning and it’s a stage they’re going through, um, which will either, they’ll either drop that stage or they’ll mature, uh, leaves it immature. And overall though, it provides the vocabulary for people to talk to each other about their designs and people, not too many people anymore who do blindly follow what design patterns say they use the vocabulary and they use the issues that are talked about.
Erich Gamma 00:46:19 So I think that relevant and important point in old patterns are not a measure of, of goodness. Right? So more patterns doesn’t mean more good. I’m must say from my own experience, right. Has, have pattern helped me now when I use them myself. So I had the opportunity to, you know, when I jumped ship from Java to.net platform to learn C-sharp then to learn old HTML, and I’m gonna say it really helped me because I looked at the other system with the understanding of parents and it helped me to understand them much faster. And also it’s also kind of, I find it helps, helped me understanding software much better than without having had this kind of framework of patterns with me in.net. Some argue, there are already like patterns in the language. Do you think, um, it is good that parents become part of the language when it makes them more productive, more expressive. What can you say against that? Right. So imagine if somebody discussed his abstract class pattern, right. That was really happy to see that actually the language is supported direct notion of abstract class, like a C plus plus, and then all the other languages that came after. Right. It’s a good thing. So you don’t have to work at the low level how to emulate the pattern. You can just express it directly.
Ralph Johnson 00:47:36 Yeah. We actually talked about that for the book. Should we put abstract class? The reason why we didn’t was because almost every other pattern built on top of, of abstract class. And if we had decided that abstract class was a pattern, then we would have had to talk about, well, this pattern includes that pattern and we didn’t want to do that. We didn’t want to like make an algebra of patterns. We didn’t want it to get too complicated. We just wanted to talk about the parents themselves. So the reason that we didn’t include abstract class as a pattern in design patterns was because pretty much every other pattern used it, but we all agreed that, yeah, this is a kind of a pattern because the language is don’t support it directly, but they probably should
Erich Gamma 00:48:17 Small book at that time, they didn’t drag it over. I implemented abstract method, right?
Ralph Johnson 00:48:24 Oh, that’s wow.
Erich Gamma 00:48:27 Let’s not go into this discussion because I have C plus plus, right. Is this far away? Is that be careful what I say here?
Ralph Johnson 00:48:34 The point is that in Java and C sharp is very clearly supportive. Know it’s not, it’s not a pattern it’s directly supported by the language in it. People keep the list of people will argue and say that all your patterns are directly supported. And that’s a bit of an exaggeration. It’s true that many of them are, but not all of them. And even, but the point is when you, when you decide that these patterns are important, then the next thing is how can our languages support them better? And should we change our language so that we can support the better? And maybe we just include them in the language in some way, that’s, that’s quite reasonable to do that. But on the other hand, what’s happened is, you know, there’s a sense of which patterns are the things that you aren’t going to get either learn them. And you’re not going to have them directly in the language where they’re gonna be built on top of your language. There’s always going to be something that’s going to be built on the language. Even if the particular patterns in our book end up being brought into languages, people will just then have patterns on top of them. So the need for patterns is not going to go away.
Erich Gamma 00:49:30 We help people learn optic thinking how to leverage polymorphism, Bellin this with responsibilities, delegation, compensation, that’s in there. I think we made a contribution to education. People sync to leverage objects in this way. When you look at the new languages coming up, JavaScript, not necessarily new, but beginning becoming more and more popular, a very functional language, also dangerous like sharpen and scholar. Do you think there are new patterns, uh, which should be discovered for functional languages? Oh, absolutely. And JavaScript. No. When I learned calf JavaScript, when I got deep in HR program, nine weeks, you look at Shakespeare, you and do find beautiful patterns like the fluent interfaces, how they change methods, how they deal with managing call backs, right. Deferred or promises, all the things. So I think, yeah, I can never stop thinking of harvesting patterns for all this code. That from, from elegant code and JavaScript is a good source. Uh, no, the library is very rich libraries. Angular shows us dependency injection, right? Once you understand dependency, injection, as a pattern, you go to angular and you know, Oh yeah, sure. It depends Jackson. That’s what it is. Right. So absolutely JavaScripts is rich source of patterns. And
Johannes Thönes 00:50:44 I heard another podcast who was, who was tending that JavaScript is a, has to be put into the straight jacket of packet patterns to be usable.
Erich Gamma 00:50:53 I see one problem with JavaScript is you need to have what we talked a little bit about before for JavaScript to make it really use. You have to use some patents to even get two modules, right? How do I do model, which encapsulates a manage the scope of things, right? So you have four, four. If you use JavaScript as is, you actually need to invent some patterns for how to modules, how to do classes, right. And how to do inheritance because Java script gives the kind of that infrastructure to do that. The nice thing about another language relating this one, which I’m also using a lot these days, TypeScript and TypeScript does exactly what he taught before it codifies. The patterns you have to use for JavaScript into language defines you, gives you modules. It gives you interfaces and gives you a how to do classes, right? So that’s two weeks, a nice evolution, right? JavaScript, you need to use plan and make it using. And task is an example that then codifies this patterns into a language and supports it directly. So that’s why I find it more pleasant to program TypeScript because they don’t have to use these conventions for getting to multiples anymore. That’s going to be many other interesting things like structural typing and so on. But that’s another topic.
Johannes Thönes 00:51:58 Yeah. Maybe now coming back here, you’ve mentioned it a couple of time, the evolution of the observer pattern. Can somebody describe me? Um, the evolution? Uh, so what, what was the observer pennant in the beginning and how did it evolve from over swing and angular and whatnot over the years?
Erich Gamma 00:52:22 So a observer started as a, as a way to express dependencies among courts conduct a credit model. You control this, the more, most popped around model changes in not defy the view and it refreshes and so on. And, uh, it was kind of pretty core screen, right? Then I think Java libraries to add it, the listener mechanism very, to make it maybe more type safe, right? You describe at least three interfaces. You get the events that came into our old typed editor, typing notion to make more flexibles yet listeners. Then you had the whole new UI toolkits are based on data binding, right? Where you bind, which is to get it that he actually, it’s more declarative. You don’t have to deal with sending this notification itself. That’s kind of the level below, right? That’s what’s the next step I see.
Johannes Thönes 00:53:06 So the data binding is kind of the, the observer’s done by the framework.
Erich Gamma 00:53:11 Alrighty. Just to clarity for say, yeah, bind me to switch it to this new model or whatever. Right. And then when it changes, they will own the niece use notifications to keep this in sync. So what comes to mind then? I guess the last is, hold this reactive programming. That is about how we can make it even easier, right. To use observer that demands become more first-class right. So even the whole discussion to see deep pre-K observer in favor of this reactive programming style
Ralph Johnson 00:53:38 And in a very detailed way, when in the original observer, there was a single update operation. And if you, if an observer was going to observe a particular subject, it would register itself as dependent, but that subject might change in a variety of different ways. You’d be given an update operation for each one. You would then end up in your, your, uh, update. You would have to, uh, figure out what kind of change was it. And so it would be a case statement often trying to figure out what had really happened. And not only that, but you could, uh, be interested in observing several different logics and then all of them would be calling the exact same update operation on you. And so figuring out which one of these objects that actually notified it was all possible, it was just sort of complicated. But what happened in the observer pattern is there’s now lots of different, uh, notification interfaces.
Ralph Johnson 00:54:32 Every listener, every listener defines a different interface. And with even within a single listener interface, you need to have a number of different kinds of events that can occur. And so by splitting those interfaces up into smaller, more granular, as you say, more granular, then you get, uh, you get better. Um, you don’t have to have all the case statements over on the side of the code you’re writing. So you don’t have to, I guess, reverse engineer the detail. But an interesting thing is that both small talk and C plus plus we’re using the similar type of observer, um, design and Java. I always think of Java as being a halfway in between small talk and C plus plus. And so you say what it was good for small talk. It was good for C plus plus why didn’t the Java folks stick with that?
Ralph Johnson 00:55:20 Well, in fact, the very first version of Java came out with the observer pattern pretty much in the original way, but then they discovered that it was a problem and they developed the whole listener variance. Um, instead of that, uh, I think one of the things is this small talk because it was statically, it was dynamically tight. Um, it was easier to reuse the single mechanism and the C plus plus world people. Didn’t actually try to have a single implementation of observer that you would use everywhere. Every library would sort of do its own. And partly I think it was that Java was both statically typed and they really were trying to make it be very reusable. And so the only way it was just too rigid, but it’s, it was the sort of thing that when we wrote the book, we were pleased with what we did. We weren’t saying there’s something wrong here and they’re bound to improve this in the future. And it was, I think, not completely to be expected that it would evolve as much as it did this happen. Was other parents in particular. Well, let’s see, there were kind of language mechanism came in that
Erich Gamma 00:56:24 We didn’t have at that time. Right? Lots of things have changed since we wrote design patterns. Right. We had C plus plus lady John within inexistent. So interface has got added, right? So interfaces give you also a way to express things better that we couldn’t. Then we wrote it and wrote our examples.
Ralph Johnson 00:56:38 Well, a lot of the patterns interfaces like, like the composite pattern, if interfaces fit into the composite pattern very easily, it doesn’t mess it. I would say that creational patterns we’ve been making comments about Singleton, but in fact, the, all the creational patterns are not used as much as they were back when we wrote the book, because, because of dependency, injection, that’s sort of an alternative pattern that was sort of a better way of doing things. There’s still cases where the other patterns make sense, but they just make sense a lot less frequently because because dependency injections is often a better way of doing things.
Erich Gamma 00:57:16 So you, you mentioned it in the beginning, so I’m just saying the word of the pattern single. So we added it and this was an example, everybody understood, you’re writing C plus plus how you do Singleton have a static member and whatever. Right. So everybody got that immediately. I think there was a great way to tell somebody what he talk about. But if you think about it, doesn’t have a lot of coolness Singleton, right? You add something global, which is kind of against objects, which are more about distributing things and not having this centralized thing, which will, at some point hurt you because you want to have multiple of these things or whatever, right. It’s often a design shortcut to me, it’s this single as often as is, and shortcut, you have a well known place to get to another object rather than reaching to other objects to get this space. So that’s why it often hurts, but with time. So that’s my, it’s not a, my top favorite, my favorite list of patterns. Right? So to me, it’s one of the things which should be voted off the Island Singleton.
Ralph Johnson 00:58:10 Yeah. In small talk, a Singleton has not been the problem that it isn’t C plus plus, and what people have used it for and installed the lock is, uh, you try to eliminate global state. And when you can, when you just can’t get rid of it, then, then you manage it. And it’s a good way of managing it. But the problem is, I think in C plus plus is a lot of people instead of using it as a way to manage global state, you can’t get rid of, they instead use it as an excuse or something that would make it okay to have global state that’s about the justification justification for having global safety. It’s a pattern. So it’s okay because the pattern then global States bad, you want to get rid of it as much as you can.
Erich Gamma 00:58:53 And my rule is, it’s very easy to add global state, but it’s very hard to take it out. So do you think in retrospect, I shouldn’t have put it into the book. I see. I love all the patterns that we have in the book. Right. So that’s why I made peace with them. I mean, I think so.
Ralph Johnson 00:59:12 So I’ve got a Singleton that I’ve rewritten and I wrote it in a way to make it really clear that global state is, and this
Richard Helm 00:59:22 Is only what you do when you can’t get rid of it. So we could have written it in a way that would have made that more clear. It’s just, we didn’t realize how people were going to interpret it. We didn’t realize that people were going to take it as a justification for global state, except you put the book out there and see what people do with it. I think that, I mean that the book was I a collective view of many people about what was kind of practice at that point in time, but the industry evolved and we’ve discussed people look and discover better ways or design or work out better ways to solve design problems. And the language has evolved. And I think the, like Erich, there’s a lot in the patent and I recall fondly many arguments discussions explaining them to people, but they weren’t there a view of the world at a point in time.
Richard Helm 01:00:17 And, um, the world industry, software engineering languages, the types of problems that people are solving have changed. And it’s a natural evolution that, uh, the relative importance, applicability, usefulness of art, small set of patterns versus others which have, or design techniques, which people have come across in more recent times, um, uh, perhaps better choices. And so, and some of the ones that we wrote as Ralph was saying, uh, need to be tuned up, um, reevaluate it in terms of current practice, some few you would think in particular about, well, you mentioned using language mechanisms, right? You mentioned, um, using modern human, more modern languages, how to represent that patterns. We didn’t include black dependency injection because they came later. Right. So I think the book still teaches you with opportunities thinking that there are many things you could do to modernize it or make it yeah. But a probably will you, will you modernize it or is that something you want to pass on to the new generation? And do you have someone in mind to do that? We’ve been talking about doing it for a long time. Yeah. We’re supposed to be doing it.
Richard Helm 01:01:46 It’s a very difficult question because I think it’s, um, the, it, it was a product at a point of time and a group of people. Um, I think the combination of the four of us, um, Ralph, John and I, um, at that point in time was, or unique or unique point in time. And, um, uh, is there will be a challenge I think, to, um, uh, and every point in time as a unique point in time, that’s true. I think it’s a challenge,
Ralph Johnson 01:02:20 Always be challenged to do it. It requires a lot of work, do a clause, a significant amount of thinking any books from lots of people. And, um, we’ve talked about it over many years and we were talking about it. I’m going unfortunate. John passed away. And, um, that was, uh, um, uh,
Erich Gamma 01:02:37 It was for us. And so the magic that I think we had there has gone forever. So we’ll see Outline with John, right. This was when we all met John showed before we met him there. And we talked about the outline. Yeah. That was 2005.
Ralph Johnson 01:02:53 Yup. Okay. Um,
Erich Gamma 01:02:59 Gives you the final chance to answer to a question I should have asked, which I forgot to ask.
Ralph Johnson 01:03:06 Well, one might be, what other patterns work do we like? But one of my favorite patterns, books is the one by Erich Evans. That’s domain driven design. And, uh, it’s not the name, doesn’t say patterns, you know? So you don’t people don’t that who say, I’m looking for patterns, books, I’m gonna go buy a domain driven design. But, uh, Erich, uh, he structured his book around patterns. That was a way he was thinking. It helped him to, uh, to control, to, to figure out what he was going to say and figure out what needed to be said. He came to patterns, conferences and, and had a lot of feedback. And that’s in public, went through chapter by chapter, not all the chapters with any of his chapters. Uh, he took them to patents conferences to, uh, and anyway, it’s substance, it’s a product of the patents community, a really great book.
Ralph Johnson 01:04:00 Uh, the topic of the book is I think object programming often gets thought, uh, too much from a, a purely, uh, technique and programming point of view. But it should also that originally we talked about ops drain designs as being a model of the problem as well. And so he focuses much more as the name says, um, um, the donut, the problem domain, and how do you make your system be a domain model as well as being an executed program, but ties it to refactoring lots of other more modern ideas. It’s like, Hey, the books,
Erich Gamma 01:04:38 I think what’s important to me about when it comes to design patterns, there is much more, it’s much richer the community than just what we have in our book, right? So We’re lucky to be kind of the first one, but now you want to really get the full richness. There is much more than just, we have, we’re a small contribution to the whole richness of the pattern,
Ralph Johnson 01:04:58 But I really do wish the functional programming people would get their act together and write that books on the patterns of functional programming. Because I mean, you made this comment about that. There’s, there’s so many patterns in, in that style. Uh, but it doesn’t, it’s hard for people to learn it. I hope some people will that,
Johannes Thönes 01:05:18 Um, I would like to close by asking you, um, so what are you working on now? Uh, and where can people find out more about you, upcoming books, videos, blogs, upcoming talk somewhere. Um, maybe we, we, we start again with Ailey. I still work on tools. Right. And, um, I loved them and I love to build them. I love to use them. So see, see stuff from me in the tools space.
Richard Helm 01:05:53 Yeah.
Johannes Thönes 01:05:53 That’s what I would say here. Um, are you on Twitter or do you write a blog? I’m on Twitter. I have a team blog. Right. So because of, not that I don’t frequent posts, we have a team block on the stuff you do. Right. So it’s a, the project right now. We work on this kind of what we have recently limited system visual studio is called, which also yawned and Monaco. Right. And if you Google for that, then you find some of my recent work and also talks about large scale JavaScript. Right. I will link to that in the show notes, um, which is where can people find out more about you?
Richard Helm 01:06:28 Um, most of my work is actually, um, proprietary and quite confidential. It’s just the nature of the, um, the company Boston consulting group will basically do I work for ’em or we don’t really talk about what we do, but the work that I tend to spend my most of my time doing nowadays is working with, um, some of the larger companies in Australia and around the world. And, um, the last few years I’ve been spending a fair amount of time in applying technology to, um, banking, which most people will experience day to day, but also in the mining industry about how to use technology to automate and operate mines in Australia quite differently. So think of national NASA mission control as a way to operate large mines or those large yellow mining trucks. How do we make those running into mind without people? And more recently I’ve been doing some work in the, um, social services space, actually.
Richard Helm 01:07:25 How do I think about the, the payment of benefits for our country and thinking different ways to tackle that problem using technology around payments digital devices. So I don’t do much work in the software engineering world anymore. I spend most of my time working in large corporates, helping them use technology to solve some of the big challenging industry or corporate problems. They’ve um, um, so you might have experience in different parts of the world, some of what I do, but unfortunately I can’t really talk about it. Right. I do still have one of that. One of the things which I think is that we worry a lot in our company about, um, corporate strategy. How, how do companies succeed or fail and why do they succeed or fail? And there’s some interesting work on, um, which you can access it on, uh, Austin confined groups, um, perspectives website on what we call value pattern, which for different types of industries and different types of competitive situations where the industry is either very static industry.
Richard Helm 01:08:23 It doesn’t change. It was a lot of dynamism in the industry. Um, so the difference between operating a, an energy company utility versus a retailer, and what we observed there is that there are different patterns of strategy, which, um, what we call value pattern, which how those large corporations can, um, kind of winning their markets. And it looks a lot like design patterns, different ways for the companies to tackle issues of strategy, how they play in their markets, um, how they compete to win over the long term. And we’ve not me, but folks in our company have written them down, which resisting things called value Titans. And you can read a bit about those on, um, basically his website,
Johannes Thönes 01:09:06 Right. And I’m locating that and put it in the show notes, um, and, uh, drive, uh, where can people find more about you and your work?
Richard Helm 01:09:15 Well, you started off by saying that I was at the university of Illinois. I actually just retired, uh, have, um, I’ve retired so that I could be working with a startup called efficient, which is a very small at the moment. Our goal is to make accounting systems that accountants can customize and have complete control over. So we want to build things that are scalable, um, and fairly, um, quite, quite customizable we’re were originally working in the investment area. So back office systems for hedge funds and things like that. Uh, but, but the idea is that often these, uh, small groups are run off the spreadsheets. And I think that the reason why they like to use spreadsheets is because they understand them and they can control them instead of buying some software package, which might do the right thing or might not do the right thing, but you never know, but the problem with spreadsheets is that they’re, um, and they’re not very scalable. And if somebody else comes in and starts changing the spreadsheet, it’s hard to know whether they get it right. It’s not, uh, very auditable. Um, it’s hard to know what changes people have made to them and so forth. They’re a real system. You want to have something that, uh, where, you know, who made changes and you keep a complete audit trail of what’s happened. So any way we are, that’s sort of the area that I’m working in. I’m not hard to find. Um, I go to conferences and do things. So,
Johannes Thönes 01:10:46 Um, are you on Twitter or do you have a block?
Richard Helm 01:10:50 Um, I have a Twitter account. I don’t use it too much. I have blogged in the past. I started running a start up again more, uh, but I’m not active right at the moment.
Johannes Thönes 01:11:08 Um, thank you for all of your, um, participation for me, it was a very interesting episode and was honored to speak with you three guys. Um, goodbye, goodbye. Uh, Richard and Cooper life was fun. And talk to you again in 10 years. Um, you will find all those things mentioned in the show notes. I will prepare them for you. Um, we would actually like to have feedback for our se radio episodes. So they get as good as the design pattern book was. So if you could write a comment to the block or write a review on iTunes, we are really looking forward to them. Tell us what you liked, tell us what you didn’t like. That would be very helpful in this instance, I say goodbye. I’m your host.
[End of Audio]
This transcript was automatically generated. To suggest improvements in the text, please contact [email protected].
Great episode, listening to them after having their work be such a large component of development in recent years. My only complaint was that the audio quality needed some work — very difficult to hear/understand/follow the conversation.
Something is different (technically, in the RSS feed) about this episode than all the others. My Podcatcher (Podkicker for Android) shows it as “404 Unavailable”. Any chance it could be reposted? Thanks.
[…] If you are into serious software development, then this is a 75 minute PodCast you must listen to: Episode 215: Gang of Four – 20 Years Later : Software Engineering Radio. […]
[…] Episode 215: Gang of Four – 20 Years Later : Software Engineering Radio […]
[…] software engineering radio podcast has a very interesting interview with the Gang of Four members, from “Software Design Patterns” fame. It is roughly 75 […]
[…] Reference: se-radio.net […]
[…] Gang of Four – 20 Years Later […]
[…] Intervista di Software Engineering Radio a Erich Gamma, Ralph Johnson e Richard Helm, tre degli autori del libro Design Patterns, che nel 1994 aprì la strada al movimento dei pattern e contribuì alla diffusione delle tecniche di design object oriented. […]
[…] Software Engineering Radio. The podcast for professional Software developers. Sponsored by the IEEE Software society. They put out a show about once a month. Very long, deep, and very technical. Loved Episode 215: Gang of Four 20 Years Later. […]
[…] Erich Gamma, Ralph Johnson & Richard Helm – Gang of Four – 20 Years Later – Episode 215 […]
[…] is an episode of the “SE-Radio” Podcast where Johannes Thönes interviews three of the GoF members about their book and the evolution of […]