Traditional Design Patterns

The beauty of any pattern is its simplicity. Why are existing and traditional design patterns

hard to understand and comprehend?

[5] Keeping it Very Simple! [1, 2]

[5] Keeping it Very Simple!

Professor Dr. M.E. Fayad, SJSU, AITG, AEEH PRESS, i-SOLE, INCs

Success is nothing more than a few simple disciplines, practiced every day. Jim Rohn [3]

Current patterns are hard to understand and comprehend. The GoF had earlier mentioned in the preface of their book [4] (page xi): Don’t worry if you don’t understand this book on the first reading. We didn’t understand it all on the first writing! Even though many existing patterns are really worth the time to understand and comprehend, but with such a perceived difficulty, the likelihood of misunderstanding the pattern and not using it correctly in the right manner becomes very high. In addition, some of today’s patterns composed very hard to make it understandable.

There are quite a few numbers of reasons contributed to the difficulty in understanding patterns. One major source of such difficulty is due to the documentation of the patterns. Most of the documents that exist today are confusing and misleading. Choosing the right pattern name, describing the problem in clear way, and presenting the solution without missing any hidden assumptions or details, directly affects understanding the pattern and its reuse.


Describing patterns is hard job and requires careful and calibrated work, since a balance should exist between the pattern’s details and patterns depth. By a pattern’s details, we mean the amount of information presented to describe the pattern, while a pattern’s depth relates to the technical complexity of the solution the pattern presents. If the ratio of details to depth is either too great or too small, the user will be lost or left adrift and the pattern will be hard to grasp and reuse.

Patterns that are hard and difficult to understand are, most likely, harder to reuse as well! In addition, it is very important to remember that a pattern is usually a part of an overall project; thus, complex patterns will propagate and induce further complexity to the whole system. Another issue to remember is that the goal of having patterns is to ease the development of systems, for both the experienced developer as well as the novice ones. Therefore, complex patterns will serve more as obstacles or impediments to a novice developer, who will likely become frustrated and disappointed, when attempting to read and understand them.

For patterns to preserve their goal of reuse and to ease the development of software, they should be simple, clear, lucid, readable, understandable and easy to grasp by both experts and novices. Developers must develop their patterns, with a view to present all necessary pattern details and principles in such a way that, everyone will find the reasons, why they need patterns in the first place. Again, I think it is highly debatable that novices should find patterns easy to grasp and comprehend. At the very least, understanding why the pattern was used is not something I would expect out of a novice.

References

[1] M.E. Fayad. Stable Design Patterns (SDPs) (BASE)” Aeeh Press, Inc, San Jose, CA. December 2024.

[2] M. E. Fayad. “Stable Design Patterns for Software and Systems” Boca Raton, FL: Auerbach Publications, Taylor & Francis Catalog #: K24656, September 2017. ISBN-13: 978-1-4987-0330-7

[3] Emanuel James Rohn (September 18, 1930 – December 5, 2009), professionally known as Jim Rohn, was an American entrepreneur, author, and motivational speaker, Wiki

[4] Gamma, E. et al., “Design Patterns: Elements of Reusable Object-Oriented Software” Addison-Wesley Professional Computing Series. Addison-Wesley Publishing Company, New York, 1995.