How Do We Fix Patterns?

We could first ask why we want a successful pattern movement. What’s wrong with how we’re doing things now? For me, the answer lies in the potential patterns had and still have. The ability to act with experience-free wisdom. The time saved in developing inferior solutions from first principles to problems that have occurred many times before. The benefit of taming complexity using the unfolding process rather than the accretion of disparate parts. And the formalisation of a new way of capturing reusable knowledge.

When I began writing this book, I thought the movement might resemble Stack Overflow—a place of questions about problems with solutions. I also thought it could be another incarnation of the Portland Pattern Repository—a specialised Wikipedia. But in the end, these knowledge stores are suited to different types of information.

Knowledge distribution

The Divio documentation system1 is a superb way to document important information about your product. The system organises your documentation around two axes. One is the practical–theoretical axis; the other is the studying–working axis. Tutorials and explanations are study-related, whereas how-to guides and reference manuals are for when you are working. Tutorials and how-to guides are practical, whereas reference manuals and explanations are more abstract or theoretical. When I studied this system and understood these quadrants, I realised I could classify them in another way. We can organise the quadrants by awareness and ignorance of different parts of the problem and solutions.

  • Reference material is for when you know the solution but not the details.
  • How-to guides are for when you know the problem but need help finding a solution.
  • Tutorials are for when you know you have a problem but need help understanding the context and refining your problem.
  • Explanations are for when you might not even know you have a problem or want to understand what other kinds of problems you will have with any system attempting to solve something similar.

This last one sings of being a pattern language to me. Tutorials are example solutions in the pattern language, taking on a few patterns at a time. The how-to guides are supporting material for emergent sub-problems of the space, and reference material is supporting information for the solving process at the detail level.

Given this different understanding of documentation, Stack Overflow is a place to go when you know you have a problem. You’re not problem ignorant; quite the opposite. It’s a place for how-to guides. It can be useful when you don’t know how to couch your question well enough for a direct search result to the correct reference material or when the reference material is too difficult to digest.

Wikipedia is for when you know what information you are lacking. You know what solution you have in mind, and you want reference material. This is perhaps why we drifted away from the WikiWikiWeb for patterns and ended up with books and conferences keeping it alive in its current form. These forms provide enough support to stop patterns from dissolving completely, but could a new pattern movement emerge from them? How do books and conferences fit into the problem-ignorance space?

Passive learning

Books can work when they are recommended by people who know about the problem domain, even if they aren’t well-versed in the patterns. Recommendations are a good way for those unaware of their problems to access the wisdom they need.

Because books are collections of related solutions to a whole suite of problems for a domain, they can become fountains of knowledge. Someone will ask, ‘What’s a good book on how to build a shop app for my business?’ and there will be a book on it. But it will also include other wisdom revealing unforeseen problems for the inquirer, possibly more than the recommender knew. Even if it’s not a patterns book, it will probably be a tutorial joined with a how-to guide. It will contain a sequence of steps to get the reader going. So, books work for people who are unaware they have problems, so long as there’s someone to recommend them or the domain is discoverable.

Conferences are different. They work for people who know they have problems they are unaware of. The humble. Those who are accepting of their ignorance. They work reasonably well, but only as long as people attend them. Attendees learn new patterns for problems to which they were formerly oblivious. But why attend? Can they afford to attend? The PLoP23 conference was nearly $1,000 to attend. The EuroPLop conference cost over €1,000. Perhaps you think this is reasonable, but maybe smaller, local events could help make this more affordable.

For those who can’t attend, there are often videos available online after the event. However, conference videos lack the thrust of being there, so the less appealing tracks remain entirely unattended. I don’t think we can shape a new pattern movement around these.

I don’t believe a wiki will work for a future movement. The WikiWikiWeb is an artefact of an earlier time. Because patterns are about problems you might not know you have, there is no starting place from within the wiki to arrive at your solution. Signposts don’t work when you don’t know where you’re going. Why do you look up a pattern? It’s because you already know there’s a pattern to help solve a problem you’re aware of. Or you need to remember how a pattern is meant to play out and want to refresh your memory. Neither of those reasons find footing in new minds encountering new problems.

Whatever the movement looks like, it must proactively engage with individuals who are not yet aware they have a problem. So, it must be problem-centred. It could be anecdotal about situations recognised and wisdom gained. The languages and patterns may be circumstances you find yourself in and the things that guided the final resolution. Stories, paths, wisdom, and talks.

If it is successful, the next pattern language movement will likely use patterns of audience engagement to raise awareness. It will look like it’s invading an existing presentation structure, but it will be silent and go unnoticed. It will probably not use the name ‘design patterns’.

It will be about pattern languages, making it about a domain of interest rather than a tool people want to use. It will be about the buildings, not the bricks. It will be about specific classes of applications or systems, not programming languages or paradigms. It will be about making better potters and programmers, not pots and programs.

Whatever it is, it should not be another book.

Updates

For those who want an up-to-date wiki, we can fix this by building a freely accessible library of pattern languages. Not just patterns, and not just the basic ones we know of, but also the hard-to-find languages and patterns and their history. We should link to sources where we can. We need to show how pattern languages have changed over time. Trends may emerge, but history is important because those aware of old patterns must learn whether they were superseded.

If a pattern exists somewhere, then it should be possible for anyone to find and read it. We discover patterns, so, by definition, their form and content cannot be patented. Reiterating what they are, how to use them, their contexts, and their forces cannot infringe on anyone’s rights, as they did not invent them. Only the specific text of a description can be copyrighted.

If a library is built, we already know the overall structure. Languages are structured as a web—a list of patterns with links between them. The whole library only needs to have a way of storing a new language when one comes to light.

But the library will not be the new movement. It won’t fix patterns, but it will stop them from being so inaccessible. It might help prevent people from trying to name them by removing the ego from the discovery and naming process. And it could inspire the creation of new languages. However, passive knowledge does not drive change.