Design Patterns: Boondoggle or State-of-the-Art?
Everyone’s talking about methods and concepts helping in making the development of sofware easier and more fruitful. Design Patterns are supposed to help as well. But there seems to be a discrepancy between academical research activities and practical use of patterns in pofessional software development.
In academia, patterns are a hot topic producing uncountable publications and creating highly-paid chairs. In industry, my observations and interviews indicate a *slightly* different picture: Nearly none of the object-oriented developers uses patterns. And if, then the easiest of patterns to be known. Frameworks injected in a company’s software product deliver Design Patterns to some extent. One reason might be that framework developers are usually more competent than “ordinary” developers or programmers doing their job.
SAP world introspected
In case of SAP developers the situation is even worse. Having programmed with ABAP all night and day, ALMOST NO ONE of them basically knows what a Design Pattern is. Am I wrong? Then give me a comment on this blog. But most probably my assumption should be correct.
On the other hand, patterns play an important role in NetWeaver, as for WebDynpro the concept of UI patterns is being introduced to develop applications more intuitively.
Getting on it
I’ll tell you something concrete about my strong assumptions being covered by many interviews, references and personal impressions on several software projects:
- 90% of all developers don”t know about the existence of Design Patterns.
- 10% of all developers use Design Patterns.
- Only 1% of all developers (or one tenth of the 10% mentioned above) invent new Design Patterns or variations from known ones.
The journey into success
As John Vlissides (member of the Gang of Four, GoF) said, there are six phases to climb the hill of being able to successfully (in our words: profitably) use Design Patterns. After having understood what they are, you begin to work with them, play with them. After a while you know more than two or three patterns. After that you even understand why they are implemented in their specific way. But only the last step brings you into a position embracing you to use them to your advantage. Before that everything you do is – more or less – a waste of time (or boondoggle, like this word).
The concept behind Design Patterns has been proven useful. It has been adapted from the well known architect Christopher Alexander, who invented the concept for use in architecture. Now we are searching for ways of creating mechanisms and tools to help us to cope with Design Patterns more effectively. The effort in learning them up to the point that enables us to use them as a daily tool is not acceptable. The community of developers needs something to overcome this antagonism. Here, we need academia to lay ground and industry to sponsor projects and give feedback and new impulses as well!
Here are some links in addition to the one at the top of the article concerning Design Patterns:
- Links to many resources, including basic descriptions
- Dissertation about using design patterns in source code and refactoring
- IBM Developerworks: Pattern categories
- Object Mentor: Excellent articles
- Microsoft”s page about Patterns
- Introduction to Design Patterns