The Reading Is - Design Patterns: Elements of Reusable Object-Oriented Software
Tags: designpatterns, architecture, bestpractices, cleancode
Published: 2020-07-02 03:12:27

---
title: The Reading Is - Design Patterns: Elements of Reusable Object-Oriented Software
published: true
description: Think in a world without standards, think in a world where knowledge about software are powdered to isolated groups and everyone was struggling with your own homebrew solutions to solve the same kind of problems, this is the world that existed at beginning of 1990s and give origin to this book. 
tags: #designpatterns #softwarearchitecture #bestpractices #cleancode
cover_image: https://dev-to-uploads.s3.amazonaws.com/i/fuocn8nngtaxndn36gkc.jpg
---
:books:*__The Reading Is__ is a fortnightly series of articles about books that any developer should read, presenting the context they are written and why are important.*
>###Technical Book Reference :book:
>**Book:** Design Patterns - Elements of Reusable Object-Oriented Software
>**Authors:** The Gang of Four (Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides)
>**Publisher:** Addison-Wesley
>**Subject:** The more common design patterns at that time and ways to implement than, software engineering, software architecture, object-oriented programming, the first book to collect and publish design patterns.
>**Year:** 1994

###**The Age of Noise**

![The Noise](https://images.unsplash.com/photo-1580243117731-a108c2953e2c?ixlib=rb-1.2.1&ixid=eyJhcHBfaWQiOjEyMDd9&auto=format&fit=crop&w=1350&q=80)

 :postal_horn:  At the begging of 1990s, there's too much noise about object-oriented programming, noise that persists to our days with some ideas like to "design the real world" or "create things as they are" that are myths, more marketing than reality, hordes of structured programmers leaned over stacks of books trying to learn how use objects, how to do object-oriented design and how to solve problems with this paradigm.

We wrote software with procedural languages that are practically extinct today like Basic, Clipper, Pascal, Cobol (`desktop, since mainframe continue going well and beating languages like Java in performance`) and C (`C is not extinct and go very well, thank you`) and we are migrating to this paradigm with languages like C++, Smalltalk, Object Pascal, and Java (`at the middle of the 1990s that when I begin to learn to program`).

![Programing](https://images.unsplash.com/photo-1487058792275-0ad4aaf24ca7?ixlib=rb-1.2.1&auto=format&fit=crop&w=1350&q=80)

In this context, people write rigid software, since many programmers had no experience or have experience in a different paradigm, relaying in they own solutions without proper standards or approaches to solving day to day problems, in other hand is an era of heavy analysis and heavy design in a world dominated by the waterfall with unrealistic schedules and unachievable deadlines.

Erich Gamma, Richard Helm, Ralph Johnson, and John Vlissides writes this book directed to developers that have some experience with object-oriented languages and object-oriented design, but are searching for solutions that can solve problems with documented and well-tested knowledge that aim for great reuse and flexibility, the book is not centered to target only very experienced programmers since he explains ways to implement patterns concisely.

![The Design Patter Puzzle](https://images.unsplash.com/photo-1571397872194-0ad8fbafe058?ixlib=rb-1.2.1&ixid=eyJhcHBfaWQiOjEyMDd9&auto=format&fit=crop&w=1000&q=60)

It covers the three basics types of patterns, Creational, Structural and Behavioral, at that time Concurrency Patterns are not a priority to developers, because machines that use more than one processor are expensive and processors with more than one core are years a had, distributed computing are not a mainstream issue at that time too, covering the 23 classic design patterns that we know today, using examples in Smalltalk and C++ that can be used as a base and be written in any other object-oriented language.

Using an objective approach they explain what is a pattern, informing the reader about the problem that originates it, the solution approach to this problem and consequences of using this pattern, the book was published in 1994 and has a digital HTML version published in CD in 1997 `(This is the edition I have entered in contact in the 1990s)` that have the :laughing:` fantastic `:laughing: HD resolution of 800x600.

![The Object-Oriented Paradigm](https://i.imgur.com/Qg1dKtq.png)

Is a recommended read to developers that want to understand design patterns, their meanings and how implemented then, is a piece of history of our area and a simple essay of practicality allied with ingenuity, as everything in life design patterns attract criticism of many people but without a doubt, they change our way to write code and improve our abilities to solve problems in a way that any developer can rely on simple solutions to well-known problems.

# Attributions
Noise - Photo by [Pierre Bamin](https://unsplash.com/@bamin) on [Unsplash](https://unsplash.com/)
Code -  Photo by [Markus Spiske](https://unsplash.com/@markusspiske) on [Unsplash](https://unsplash.com/)
Puzzle -  Photo by [Gabriel Crismariu](https://unsplash.com/@momentsbygabriel) on [Unsplash](https://unsplash.com/)