Unresolved Forces

An exploration of the unexpected consequences of design patterns in the realm of software development

In almost every book on Design Patterns, from the famous Gang of Four book to modern titles, whether about programming or not, the basic definition of a pattern has remained unchanged, unchallenged, and quite wrong.

Wherever you see the claim design patterns are common solutions to repeating problems you know you have found another example of a misconception embedded in the minds of the vast majority. When you encounter a text claiming that design patterns are general or reusable solutions to common problems, you can be sure they won't have provided the information you need to use them in their most potent form.

While validated by evidence of the damage design patterns caused, sceptics of patterns have remained powerless to correct the fault. More than twenty years later, the forces driving their decline persist, but the general defeat remains unresolved.

 

Proponents see value in patterns and strive to teach others but still refer to a book older than DevOps and Git. For a title explicitly calling out the need for patterns to evolve, it's quite the contradiction. It would be an unacceptable state of affairs for us to be left wanting for an update to the book or a living repository of the currently accepted patterns, but this is also unresolved.

Further forces are at play, restricting the efficiency and effectiveness of our teams. Those striving to bring agile development practices to their organisations will recognise some but not others. These hidden forces remain unchallenged, affecting our productivity and health while they remain hidden.

This book attempts to answer open questions about what happened, why they faltered, what will happen next, and how we can avoid it. It will provide the necessary tools to elevate your capacity to refactor your software design using patterns while also attending to the problems found beyond the source code.

 

read it online here or get a printed copy here