Industrial Logic
![]() ![]() |
Story Of The Design Patterns Study Group
August of 1995 was a time of great change in my life. Six months earlier, I'd given notice to my client and consulting firm that I would be setting off on my own in exactly six months. So when August rolled around I was very excited to start life as an external consultant - I'd been doing internal consulting for a large international bank for years. Towards the last few days before my last day, some collegues asked what I would be doing with myself. I explained that my girlfriend and I would be heading to Greece for three weeks and that after that I'd just have to see. As I prepared to leave my place of employement and set off for an extended vacation, I found myself wondering what book to take with me. I read a lot - in fact, as it relates to my consulting practice, I live off of books, particularly good ones that help improve me as a professional. So I was wondering what book to bring on vacation. A collegue suggested that I don't take any books. She said, "You're going to Greece - go enjoy yourself and don't think about computers for a change." I took her advice. Three and a half weeks later, and very tanned, I walked into a Barnes & Noble in New York City. I was by now ravenous for some good reading. Yet I was not planning to buy anything - I merely wanted to browse, and possibly find a candidate book worthy of study. I ambled over to the advanced computing section and saw a book that I'd never seen before on the shelf: Design Patterns: Elements of Reusable Object-Oriented Software. Skimming through the book, I knew that this book was different. I glanced at the price tag and groaned a little and then went back to reading. Wow, this book was well written - a rarity among software books. As I continued to read I new I'd be dropping $50 bucks. I simply couldn't put this book down. Leaving B&N with my new book, I walked over to a park and continued to read. For the first time in many years, I was aware that I had a truly great book in my hands. In addition, I became aware that while I thought I knew pretty much everything there was to know about object-oriented software design and programming, I discovered that I had a lot more to learn. After spending a few wonderful hours with the book in the park I went home. I continued to peruse the book. I soon realized that I'd get quite a bit more out of the book if I stopped reading it. By this point it was clear to me that this book contained some deep knowledge and I harkened back to my college days when I studied the great books of the western world - books by Homer, Plato, Aristotle, Euclid, Aquinas, Lucretious, Virgil, and so on). Our study at college followed what is called a seminar format. I'll describe this in detail later, but in a nutshell, a group of people read something and then get together to discuss it with a knowledgeable group moderator.
|
  |
![]()
|
  |
I knew that I'd get more out of the Design Patterns book if I studied it
as I had the great books at college. So I wrote a letter to all of my friends and collegues,
explaining what I had stumbled upon, and how much I thought it could help us
become better designers and programmers. I said that I was forming a study group
that would initially be focused on studying the design patterns. We would meet once
a week and I invited all interested parties to attend.
|
  |
|
  |
I then decided to create a web page for the new group, which I called the
Design Patterns Study Group. It wasn't fancy, but
it captured my enthusiasm and layed out a possible course of study.
|
  |
|
  |
Our first meeting was held in my Manhattan studio in early September,
1995. About 5 friends showed up. We decided to begin with the Decorator
pattern. A few days earlier I'd written a very small C++ example of the Decorator
pattern, to help in our group study. I decided to be the moderator for the group
since not everyone had a lot of Object-Oriented experience, and I'd been doing
Object-Oriented design and programming since 1990.
|
  |
|
  |
We spent two hours going over the Decorator pattern - with a small break in between. I
had a white board that we drew on and I asked lots of questions, especially
about the finer details of the pattern. We were a little confused when we
read about how the Decorator compared to the Strategy pattern, since we had not
studied the Strategy pattern yet. So we decided to study Strategy the
following week.
![]() By the end of the two hours, everyone was very excited with our results - we had gotten over some kind of hurdle and truly increased our understanding of the pattern. For me, while I had certainly learned the pattern fairly well during my individual preparation for moderating the discussion, I was happy to see that I learned even more from studying the pattern in a group. It was particularly interesting to see how I grew when I had to explain the finer points of a pattern to other people. It forced me to really know what I was talking about. |
  |
|
  |
After our session ended, we all went out for a few beers at a local tavern. I was extremely enthused by the outcome of the first meeting. When I went home, I worked into the early hours of the morning to improve the web site for the patterns group. I added a Quote of the Week section, and I took the C++ Decorator example I wrote and placed it on its own page. Then I decided to email a few of the authors of the Design Patterns book to let them know about our new group and to thank them for writing such an excellent book. |
  |
|
  |
We continued to meet in my apartment, but a few of the members of the group had to come quite a long way to make the meetings (and they had to find parking in my busy neighborhood). So we decided that we would not make the location fixed, but that we'd move the group around a little. So we held one meeting in a guy's living room in central New Jersey. That meeting went ok, but we ended up doing most of the meetings out of my apartment. |
  |
|
  |
Since I had the most experience programming and designing objects in our small initial group, I tended to moderate most of the discussions. But I encouraged others to take on the moderation role, and we rotated moderators on occassion. I also encouraged the other members of the group to write examples programs with the patterns we were studying - since it really helped to understand a pattern by writing some code the demonstrated the pattern. But it took some time to write these examples and few people did it. |
  |
|
  |
I was very surprised and delighted one day when I recieved an email from one of the authors of the Design Patterns book, professor Ralph Johnson. He had written to comment on an example of a pattern I had posted on the DPSG web page. The example came from some C++ code in Microsoft's Foundation Classes (MFC). Since I had been working with MFC, and MFC was (in theory) a framework, I had decided to go "pattern mining" in MFC, to see if I could find uses of the design patterns. After many hours of fruitless searching, I finally came upon an example use of the Strategy pattern. I had been building up a collection of example uses of patterns, so I created a new web page for this MFC Strategy example, and posted it on the web. Now Ralph had seen my posting of the Strategy example, and had written to inform me that it was not actually a case of the Strategy pattern, but was infact an example of the Bridge pattern. I was a little surprised to hear this opinion, so I studied Bridge and re-studied Strategy, and pondered the MFC example, and then began a reply to Ralph explaining why I still believed the example was a Strategy. Well, we sent a few emails back and forth and finally I understood the differences between the pattenrs, and why the MFC example was indeed a Bridge. This email exchange was very enlightening to me, and I started to get the DPSG to look very closely at how the patterns differed from each other. The DPSG continued to meet weekly, and I deligently updated the DPSG web site, adding a members list, expanding the Agenda, and encouraging folks to begin reading the works of a fellow named Christopher Alexander, who had inspired some people in the software community to begin writing patterns for software. As Winter descended on NY, it became harder and harder for folks to attend meetings. One meeting had only three of us. Then, one really cold, snowy evening, no one showed up, so I studied the pattern alone. As time went on, the group would grow and shrink. But I was beginning to see that we needed a bigger space, that would be easier to get to. We had many folks from the financial industry in our group. One worked at Earnst & Young and he volunteered to try to get us a meeting space in some conference room in his mid-town office. He was able to find a room, but to use it we need to preannounce visitor and that sounded like too much work. It would have also meant that we'd be in a very corporate location, under fluorescent lights - something I had left behind in August. So I determined to find a better, bigger, comfortable location. My friend Daniel Gross had a huge loft in mid-town that was home to his software company and him and his wife. Daniel had an interest in patterns but had not been able to attend our meetings due to his schedule. I approached him with the idea of holding our sessions in his loft and he accepted. So we began to meet in Daniel's very cool mid-town loft. Our group size expanded as some of Daniel's employees began to join us. The trouble was, Daniel couldn't always guarantee us use of his space. So we had to shuffle between my apartment and his place and that wasn't great. So I began to look for another home for the DPSG. I soon found just the place, down in the ultra cool, model spotting sectino of Manhattan called SoHo. The place was called Space Untitled, a soothing, gallery espresso bar, with good tunes, wood floors, extremely high-ceilings, exhibits on the walls, and fairly good (but expensive) food and drinks. The place had many tables, different sized chairs, sunlight streaming in from a section of the roof made of glass, and best of all, no one at the cafe seemed to mind if we stayed for several hours to chat. So the DPSG's new home became Space Untitled, and the group has been using this location ever since about March of 1996. As I continued to explore and study the book "A Pattern Language" by CA et al., I learned that Space Untitled was a composite of many of the patterns described in "A Pattern Lanaguage". I knew that these patterns contributed to the dynamics of the group and personally, I rather enjoyed the place. I've spent many years of my life in NYC and have come to know that certain parts of the city give your different feelings. In SoHo, I feel like an artist. In mid-town, I'm a business man. On the Upper West Site, I'm a resident. In the financial district, I'm a computer guy helping to make the money flow from them to us. Space Untitled was also quite large, so it allowed the DPSG to grow. The core group that had launched the DPSG in early September had changed quite a bit by March. There were new "regulars" and some of the early folks showed up only occasionally. When the initial group finished the GoF book, we went on to study pattern papers from the PLoP 1 book. We also began having presentations in which someone would prepare a story about how they'd used to patterns to improve their systems or frameworks or projects. One night we studied a paper that Ralph Johnson and a few others had written about their experience writing ATM software. I had previously known that John Vlissides, one of the four authors of the Design Patterns book, was planning to attend our session. However, I did not draw attention to this fact. At college, the moderator was always the most experienced individual in the room, but they would not lecture - they would participate, just like everyone else. So as we had just commenced our discussion of this ATM paper, John walks in and I introduce him very quickly as a new guy who is named John. No one recognizes him. So we continue to talk. Ralph's paper describes how they migrated a white-box framework into a black-box framework and is filled with insightful ideas about how to use many of the Design Patterns in concert to solve a real problem. It is a great paper (see chapter on what to study after GoF) and it made for a great discussion. Now John was doing a great job of participating in the discussion. Only he was saying some very erudite things and people began to realize that we had a very bright new member of our group. About an hour into the discussion, my friend Sterling began to smile at me and then reached for a copy of the C++ Report, which another member of the discussion happened to have with him. Sterling flipped to John's column (which has a picture of him), then looked at John, then looked at me, and then smiled. Sterling remained quitye, but he placed the magazine on the table, with John's face still showing. I quickly placed a coffee mug over John's face and did my best to not look at Sterling - (who would most certainly have made me laugh). When our two our discussion rolled to an end, I announced that if anyone had thier GoF book, John Vlissedes would be happy to sign it. It was about this time that other groups in the NYC area began to take notice of the DPSG. They wanted a piece of the group - more specifically, they wanted to fold the group into the other groups they ran. I was very uncomfortable with this idea. For one, I didn't want the DPSG to be subsumed by a larger group that might compromise the way it ran. And two, I simply didn't see what being part of a bigger group could do for the DPSG. We had a good amount of members and our discusssions were always lively and educational. So I resisted all offers to take over the group, and only agreed to occasionally co-sponser events. The trouble with these co-sponser deals was that the bigger group always wanted to lecture. They wanted some important people to come and lecture and they wanted to publicize the fact that an important person was coming so they could get more members to attend. The DPSG didn't and doesn't run that way. We certainly like when important folks show up, but we don't want them to lecture. We'd rather engage them in a discussion, perhaps based on their own work. Somtime in the early Summer of '96, Ralph sent me a email asking if the DPSG would like to throw a party around the theme of patterns. It was really an invitation to make a conference on patterns happen. He asked us to come up with the theme. The DPSG discussed the idea and we finally decided that we would all like to learn more about using patterns. We had studied the Design Patterns book quite heavily and we had gone on to study many interesting patterns and pattern languages. But we now wanted to know how some of the master patterns people were combining and using patterns in real systems. So we wrote a proposal to the Hillside group describing the kind of conference we wanted to hold, and we gave it the name UP (for Using Patterns). The Hillside Group accepted our proposal and the arranegents for the first international workshop on Using Patterns went into high gear. It was clear to me that the patterns conferences had a tradition of selecting beautiful, patterns-dense locations and lodgings --- BAR89 Bringing the group to SoHo also meant that we had many more cool options when it came to finding a place to relax after our 2 hours meetings. This relaxation time became another powerful part of the group, as it allowed us to separate our study time from our casual conversation and networking time. In addition, as we met weekly, there were times when members could not join us during out study time, but would get off work later and join us for some food and drinks. We would often conclude our study sessions and head to a place called Bar89 - a spacious, industrial-chic restaurant and bar a few blocks away from Space Untitled. We frequented Bar89 so often that we started to get special treatment from the staff- for instance, the cool balcony overlooking the space was often reserved for our group. I very much enjoyed our time both during and after the study group. Sometimes one would be better than the other. And sometimes our conversations would continue from Space Untitled into Bar89. Other times, we would discuss our jobs, our clients, and quite often, our love lives. But the feeling was always warm - always of a community. And we laughed a lot. My girlfriend had grown accustomed to my being out on Monday nights - she knew that that was my night. But what continued to amaze me was the charge I got after nearly every Monday evening. I could be down or uninspired, and forcing myself to go to the study group always seemed to boost my energy and reinspire me. Plus, I always had some paper or book to read and that disciplined me to constantly refresh and augment my learning. This incremental learning was incredibly helpful to my consulting practice and it also gave me a lot of knowledge about the folks in the patterns commmunty. So the charge I got each week was perhaps one of the reasons I so enjoyed meeting regularly. Sure, there were weeks when I could not make it to the group, but the weekly frequency gave the group a sustained energy that was wonderful. It was also quite strange that I, who had avoided most software conferences for years, was suddenly at the center of a group that met regularly. And I actually liked it and learned that it *is* important to get together with other members of my profession and just talk. ----- MEETING WITH A HEAD HUNTER Since the DPSG listed its members names and email addresses on a web page, occassionally head hunters would email all of us with "hot" job ideas. One of these head hunters approached me through another channel and seemed to be a nice guy (a rarity amound this crowd). He had learned about the DPSG and expressed some interest in it. He wanted to attend one of our sessions - clearly, I thought, to meet DPSG members and perhaps enlist some in jobs. I told him that he could not join us during the study group hours but that he was welcome to join us afterwards, at Bar89. So this fellow did infact join us one evening for food and drinks, and when we had were all about to pay our checks, he volunteered to pay for one round of drinks. It was a classy move. He had spent some time with us talking about what we do and what kinds of skill he was interested in and we never felt uncomfortable - they way people often do when head-hunters interrupt them in the middle of a working day to question them or fish for a resume. So I began to think that head hunters would be much better off if they arranged for similar little getogethers such as ours, where they could talk with 5-10 individuals in a relaxed environment, and pay for a part of the evening. ------ DIVERISTY IS GOOD It was always very interesting when new members joined our group. I vividly remember when a rather experienced fellow from Bear Stears joined us. We were discussing Bobby Wolfe's Null Object pattern and for some reason, this fellow wasn't buying it. In other words, he just didn't think the pattern mattered that much. I was silently annoyed by this - so I used all of my powers to convince this new fellow that he was wrong, that the Null Object pattern was very important, in so many ways, and I hopped around the paper reading passages and explaining my perspective till I believe I made him understand. In any event, his opposition to the pattern was my opportunity to really make sure I understood all facets of it, in order to be able to explain to another, rather skeptical individual. As time went on, this fellow continued to join us and always had another way of looking a things - often a way that made people really think - either disagreeing with him or opening up their minds to his perspective. Many of realized that this fellow brought a lot to the group, even though we tended to disagree with him a lot. ----- HR CENTER As I continued to form frienships with the regular attendees of the study group, I would occassionally have business opportunieties arise, that required more than just what I could provide. Since my company was very small (uh, just me) I obviously did not have any HR dept., but what I found was that the members of my study group, who happened to be very talented individuals, made for perfect candidates for my business. So when I began to pursue a very exciting project for MTV, I asked a few of the strongest members of the team if they wanted to participate with me on the venture. So while I had never formed the study group with the intention of meeting folks who could work for and with me, this was a very pleasant realization when it did happen and I've since remarked to folks that having the study group is a great way to meet folks who might be ideal for their businesses. --------- RESUMES Another interesting development was that people began to tell me that they were putting the DPSG on their resume and getting many questions about it. Appartently, the interviewers were intrigued about the DPSG and wanted to know more about it. Folks began to put the DPSG on their resume to show that they were hip to patterns. This was interesting to me - until some folks who had barely come to the DPSG, and who did not understand patterns started telling me how much having the DPSG in their resume was helping them. And then I realized that this could actually make the DPSG look bad. But I had no control over their actions.
|
  |