Design Patterns, I don't get it
ACM's Special Interest Group on Programming Languages (SIGPLAN) recently awarded the 2005 Programming Languages Achievement Award to Erich Gamma, Richard Helm, Ralph Johnson, and John Vlissides (known as the 'Gang of Four') for their creation of 'Design Patterns' (the computer science book and the subfield at the intersection of programming languages and software engineering). The annual award recognizes an individual (or individuals) who has (have) made a significant and lasting contribution to the field of programming languages.
Slashdot - 'Design Patterns' Receives ACM SIGPLAN Award
I first read this book in '98, and as a relatively newbie developer I figured I should have gotten some use out of it. I didn't, I had already seen most of the concepts ("design patterns") before. I couldn't understand what was so important about this book. Now at the time, I figured maybe I was missing something or was just too dense to grasp the profound knowledge it was trying to impart to me. There are plenty of times I came across "the big new thing" and I didn't understand it's importance until I had more experience, but I've been in the software game for 10 years now, and I'm more convinced than ever the whole design patterns thing is an over-hyped crock of shit.
The ONLY benefit I see is the distillation of some common software design schemes down to a single word. Great, that's been a huge boost to my...my.. eh, my... wait, Ok, I know. I remember one time I was working with Ned and he said "Adapter" and I knew what he meant, no further explanation necessary. Read the book and you too may experience similar productivity gains.
Posted July 31, 2005 5:11 PM
Comments
Perhaps thats a little over-cynical. Some so-called patterns are so common that they're taught in computer class (Bubble-sort, quick-sort, etc).
I personally like the idea of Patterns, for nothing more than the dense-brained, no-development sort of developer I tend to meet in corporates havent had a single thought in a decade.
(I thought I'd try and out-cynical you.. :-) )
Feeding them the idea that even in Domino they can actually learn something new via patterns helps break the cycle of "dense though/bad code"..
:-)
Okay, a trivial example. But I do stand by my assertion. After all, science is incrementally developing ideas based on others. Why shouldnt we ?
---* Bill
Wild Bill, July 31, 2005 7:24 PM
I think you're under valueing the communication of concepts. Patterns are an engineering vocabulary. For someone such as yourself who works alone they offer no value, beyond the catalog of ideas, but if you have to write a spec or present a design to other engineers they give you words for large concepts of OO design. I agree they are over hyped and that knowing patterns is no substitute for development experience but I think you're missing the larger picture. Just because something doesn't help you personally doesn't mean it's not an important thing.
Pete, July 31, 2005 8:07 PM
When I came on in my current job, we had design patterns tech hour once per week, and it seemed magical. Like most, I'd run into these before (Singletons, Factories, etc.) but here were simple, rigorous treatment of patterns, the problems they solve, and the caveats to each.
The thing I dislike about Patterns 5 years later, is they are viewed as an end unto themselves; people will try to fit the problem to the pattern, instead of the other way aroud. Can't fault the GoF for that; it's just overzealous folks with a 'Golden Hammer'.
Harry, August 1, 2005 10:01 AM
I'm with Harry and Pete:
The value of patterns
Ned Batchelder, August 1, 2005 11:19 AM
Ok, maybe the whole "Design Patterns" thing isn't a "crock of shit", but it is way overhyped. The whole thing is just basically a formalized design "Best Practices". For this the authors call themselves the "Gang of Four"? (Like this is akin to the Cultural Revolution or something similarly important. Puhlease guys, get over yourselves).
The concept, while somewhat useful, just isn't groundbreaking, and not only that the much vaunted Design Patterns book is, IMO, poorly written in that it's very hard to read and lacks sufficient real world examples. Real world examples are important for newbies to understand the circumstances these coding structures should be used. But newbies (the ones who should benefit most from learning these patterns) read the book and start actively looking for places that can use a "Design Pattern", merrily thinking they improving their code when they are probably just making it more complex and harder to understand and thus harder to maintain (been there, done that). The book fails to educate in that regard, which is probably the most important aspect of "Design Patterns", improving the maintainability of code. Not only do I think the book isn't groundbreaking, I think the writing is mediocre at best and content is lacking.
We always had design pattens, they were coding idioms or best practices or just plain "designs" and many had commonly used names. But somehow four guys write a book about it and people act like it changed the state of software development. It changed nothing, it just made it slightly easier to talk about some types of code. Yeah, give them an award. And lets give the guy who coined "AJAX" an award too for advancing the state of web development too.
Damien Katz, August 1, 2005 11:42 AM
The real advance of the GoF was bringing the pattern format of exposition to software engineering literature. This led to lots of people writing up ideas they came up with, in a format that lets other people reuse it. And because of the example of Design Patterns, more people were inspired to do this, who didn't necessarily have any "academic" credentials. This has been a good thing, because it has encouraged more dissemination of advances in the art.
The fact that some patterns are useless isn't a reason to denigrate the guys who wrote the first software pattern catalog. This is like saying, "I hate this recipe, so the first person to write a cookbook is an idiot and should've stayed in bed". :)
Phillip J. Eby, August 1, 2005 1:35 PM
Hey all I'm saying is "Design Patterns" as a book sucked, and as a general tool it's only marginally useful. That's all :)
And most of the design patterns in their book are basically to work around the short comings of C++ and similar languages.
"The annual award recognizes an individual (or individuals) who has (have) made a significant and lasting contribution to the field of programming languages."
I don't think "Design Patterns" meets the criteria above. At least not before about 1000 other people get recognized for their contributions to programming languages.
Damien Katz, August 1, 2005 2:54 PM
Damien, I thought your point was, either you get it or you don't, as far as building software and using good design principles, or best practices, or patterns,or whatever you call them.
I have dealt with many colleagues over my long, tortuous career. Some of them got it, some of them didn't. I think it has something to do with the way your brain is wired.
The book simply formalized or codified concepts that you largely understand instinctively, so to your eyes, "duh! what's the big deal?"
However, I agree with Pete & Ned that giving us common terminology to discuss these concepts, and to get even those who don't get it thinking of software design in these terms is an important step forward.
Aw shucks, I just miss you Damien.
I saw a couple kids playing with an airzooka today...
kudla, August 1, 2005 8:46 PM
its not your fault, but at least one of your followers in OECD clown country No. 1 (Germany, I am german) might be misslead to even further exagerate, when you are exagerating. Hasn't members of the GoF been involved in Eclipse and Junit?
I now totally agree that the whole pattern thing can be overhyped. Myself might suffer a bit from an unproductive and over-arogant patternities by some fresh-from-uni co-workers.
Patterns are not everything, but they are a usefull mean to better how I am designing apps. Period.
Also it supports inter-subjective discussion about design. And we heavily need that inter-subjectivity. I have heard so much arrogant talks by coders who thought themselves to be briliant, but in the end missed some important points. We all are falible and thats why we do need a language to talk about design. At least to try.
Axel
Axel Janssen, August 2, 2005 4:17 AM
Thanks Kudla, the "I'm too smart for it to be useful" angle hadn't occured to me before, but I like it. From now on when I don't get something I'll assume its because I'm super-smart. :)
Joking aside, it does appear that some people do get significant value out of this stuff. And you may be right, maybe its just something that comes rather naturally for me while others benefit from a more formalized approach. I don't frown upon developers for using this stuff (unless they use it wrong), we all have our tricks to help us along.
But I also think maybe this stuff took off like it did because people read it and said "Hey, I've been doing this stuff for years, it's right on!" and they got enthusiastic about it because the patterns presented validated their own coding practices. Maybe.
Damien Katz, August 2, 2005 10:57 AM
I remember being all excited about patterns in my wee days of programming because it was... like... meta!
There are problems, and we have algorithms to solve those problems. But this whole idea of patterns, of these, like, meta-algorithms for your meta-problems...
Then I realized that it was mostly a bunch of C++ workarounds. Meh.
Totally over-hyped.
Chris Pine, August 3, 2005 2:54 AM
I think I ought to point out that the "Gang of Four" moniker was one that was given to them by others, and not by the GoF themselves.
Keith Gaughan, August 4, 2005 3:36 PM
Good point Keith, I shouldn't have made it out to be arrogance on their part. My bad.
Damien Katz, August 4, 2005 3:52 PM
Hello,
hyped or not some people are way too "pattern happy". Hello World using patterns - creating a scary complex thing to go and print a line into the screen (stout) - is SCARY.
wanabe, September 12, 2005 9:58 PM
Post a comment