Design Patterns and the Tower of Babel

This is the story of the Tower of Babel from Wikipedia:

According to the biblical account, a united humanity of the generations following the Great Flood, speaking a single language and migrating from the east, came to the land of Shinar, where they resolved to build a city with a tower “with its top in the heavens… lest we be scattered abroad upon the face of the Earth.” God came down to see what they did and said: “They are one people and have one language, and nothing will be withholden from them which they purpose to do.” So God said, “Come, let us go down and confound their speech.” And so God scattered them upon the face of the Earth, and confused their languages, and they left off building the city, which was called Babel “because God there confounded the language of all the Earth.” (Genesis 11:5-8).

There is a very clear message in the story of the Tower of Babel: When people speak a common language, they may succeed in very challenging projects. If, however, everyone speaks a different language, the project will surely fail.

The catalogue of Design Patterns in the Gang-of-Four book was a very important contribution to the software development industry worldwide. Many programmers improved their object-oriented design skills, learning from the examples collected in this work. But, in my opinion, the book’s main gift to us was the creation of a common language on a higher level of abstraction.

Before this book, software engineers tried to express their ideas using the basic concepts of Object-Oriented Programming (OOP): inheritance, composition, encapsulation, dynamic binding and abstract methods. There were very few names to capture a portion of the design, i.e. the relationships among several classes in a system. One of the few examples was Model-View-Controller (MVC).

Then, when the Design Patterns book became popular, as an immediate consequence a common vocabulary was created. Suddenly people were able to talk about Singletons, Visitors, Factories and Strategies. Today, when you mention any of these names, you expect other developers to understand exactly what you are talking about, without any further explanation.

We know that it is a characteristic of each profession to have its specific vocabulary, which allows work to be done more effectively. In this sense, I believe that the Design Patterns book was a big step for the maturity of software engineering as a profession.

About Hayim Makabee

Veteran software developer, enthusiastic programmer, author of a book on Object-Oriented Programming, co-founder and CEO at KashKlik, an innovative Influencer Marketing platform.
This entry was posted in Design Patterns, OOD and tagged , . Bookmark the permalink.

2 Responses to Design Patterns and the Tower of Babel

  1. Its a noble cause, but is it really working?

    check out:

    • Hi Lior,
      I really like your article: good ideas and an interesting comparison between learning foreign natural languages (grammar and vocabulary) and software architecture concepts. For this is what patterns are: architectural concepts and the names that go with them.
      First remark: just as you don’t need to know English to build a house, you don’t need to call the pattern the same name as other people to apply it properly. Patterns (the actual architectural concept, not its name) can be discovered by anyone provided that they build on sound principles. The naming thereof is only required for communication purposes – and this is great, it helps a lot but is separate from the actual architecture feature.
      So you are right: many people will apply design patterns as they used to apply math formulas at school: because they recognize a problem form to which the formula applies but without necessarily understanding what is to be gained by it. Hence useless application of patterns and over complication of the design, sometimes.
      Still, patterns, just as maths, are never primary languages as they cannot be used to ask for salt. They have to be learned.
      Yet you are right: just as math or opamps are now taught early in the cursus, so should patterns. Engineering schools in France have been teaching them for some time as I am sure other universities throughout the World.
      As for the good usage of patterns in design, don’t despair. First it is not mandatory – you can get good designs without applying patterns by the book. Then, just as your English is really good (it is) but you are yet to state all the possible sentences, knowing your patterns will allow you to have the tool at hand when you need it.
      All in all your article got me thinking. Thanks.
      And for the records, chalk it up to my using C but I am right with you and never have applied a pattern in its pure form.

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s