Skip to main content

A Pattern Language for Effective Thinking

It is a process which brings order out of nothing but ourselves; it cannot be attained, but it will happen of its own accord, if we will only let it.
Although the process is precise, and can be defined in exact scientific terms, finally it becomes valuable, not so much because it shows us things which we don't know, but instead, because it shows us what we know already, only daren't admit because it seems so childish, and so primitive.
Christopher Alexander
Dancing person. Thinking is similar to dancing in that frameworks are helpful to learn the moves, but freedom is required to express yourself.

Thinking is like dancing. You must learn the moves, but once you've internalized them you dance from your heart, not your mind. Algorithms of Thought (AoT) are the moves, but you are the dancer. Professional performers regularly practice their moves. Highly effective thinkers must practice their AoTs.

The world is complex. My purpose is not to oversimplify the process of thinking by defining a pattern language for thinking. I want to develop a path, that if we follow we can build competence and self-confidence in thinking, such that we can "dance" without the rigid support of tools and structures.

The Pattern Language will aid learning and practice of Effective Thinking. We must all be open to the possibility that at a certain point we let go these patterns and play from our heart. I hope everyone finds this point, and finds the self-discipline and humility to return to the patterns regularly to reflect, to learn, to grow. We are players in an infinite game, and we can describe only the finite with algorithms and patterns.

My dream is that many of the people who will read and use this language, will try to improve these patterns. As time goes on, these patterns will enter common language, which all of us can share.

What is a Pattern Language?

A pattern language is an organized and coherent set of patterns, each of which describes a problem and the core of a solution. The term originates from architect Christopher Alexander, popularized by his 1977 book A Pattern Language and his 1979 book The Timeless Way of Building.

A pattern language has the structure of a network. However, when we use the network of a language, we always use it as a sequence, going through the patterns, moving always from the larger patterns to the smaller. Since language is a network, there is no one sequence which perfectly captures it. The sequence of patterns is both a summary of the language and an index to the patterns. If you read through the sentences which connect the groups of patterns to one another, you will get an overview of the entire language. Once you get this overview, you will find the patterns which apply to your needs.

No pattern is an isolated entry. Each pattern can exist in the world only if it other patterns support it.

A simple example of a pattern language

I will show the concept of a pattern language through an example which I've taken from the work of Mary Lynn Manns and Linda Rising summarized in their 2000 paper Evolving a Patterns Culture.

Their pattern language focuses on the challenge of introducing Patterns to an organization, with the long-term goal to facilitate the evolution of a Patterns culture. You can see a network diagram of this Pattern Language below.

Example of a pattern language

We summarize each pattern in the language on a single page following a simple template that starts with the pattern's name, usually a noun phrase that describes what the pattern "builds". Think of the pattern's name as a special word which you would use in a conversation. This is followed by the context explaining the setting for the problem and including a description of the targeted user. Next are the forces explaining why the problem is not trivial and what other solutions might one think of and why those won't work. Then comes the problem the pattern solves and the elaboration of the proposed solution that should include enough detail so the user can implement the solution, but not too much as that would restrict the pattern to a narrow list of specifics. The resulting context states the new problems that can appear because of applying the pattern, that will require new patterns for their resolution. The pattern ends with the rational for the proposed solution, intending to convince the reader through storytelling and sharing of expertise. Known uses lists cases where the pattern was used. Related patterns summarize any related patterns and their relationships to this pattern. More elaborate templates may also include the author, a sketch of the solution, dates, references and examples.

This is how my pattern template looks like in Roam:

- #42SmartBlock Pattern Template
    - #pattern
        - **Name**
            - Usually a noun phrase that describes what the pattern "builds."
        - **Aliases**
        - **Context **
            - Describe the setting for the problem. Include a description of the target user.
        - **Forces **
            - Why the problem is not trivial. Discuss other possible solutions and why they won’t work.
        - **Problem**
        - **Solution **
            - Include enough detail so the user can implement the solution, but don’t restrict the pattern to a narrow list of specifics.
        - **Resulting Context **
            - Include the new problems that appear as a result of applying the pattern that will require new patterns for their resolution.
        - **Rationale **
            - Explain the rationale behind the solution. Convince the reader. Tell stories! Share your expertise.
        - **Known Uses**
            - Briefly list or describe places where the pattern is used.
        - **Related Patterns **
            - Briefly describe any related patterns and their relationships to this pattern.
        - **Sketch **
            - If appropriate.
        - **Author(s): **
        - **Date:**
            - Create, last modified, etc.
        - **References **
            - Any references cited in the pattern.
        - **Example **

To give you a sense of how a pattern looks and feels, I am including a concrete example taken from Evolving a Patterns Culture:

Name: Evangelist


You’re part of a software development organization that wants to stay abreast of new technologies.

You’re excited about Patterns. Maybe you went to a conference, read an article or book and, as a result, started learning more. You feel Patterns will have value for your organization and want to spread the word.


  • It’s hard to translate enthusiasm into action that has a lasting impact.
  • New ideas are always out there—more than we can handle.
  • You only have so much time to get your ideas across.


How can you get Patterns going in your organization?


Become an Evangelist for Patterns. Tell others. Let them feel your enthusiasm. Give Brown Bags. Begin to identify Early Adopters and grow the Grass Roots.

Real impact will require a Local Leader and a Corporate Angel. Be on the lookout for possible managerial support.

Resulting Context:

If you are successful in conveying your enthusiasm, a small group of those who also believe in the new idea will support you. These Early Adopters will help spread the word and create Grass Roots support for Patterns.


To grow your idea into real change for your organization, you must be willing to invest yourself in your cause. As you look for possibilities in every situation, you can take advantage of even small windows of opportunity to get your idea across.

Known Uses:

The patterns movement at AG Communications Systems began with the work of an Evangelist.

Related Patterns:

An Evangelist will often use Brown Bags to capture the interest of Early Adopters who grow into the Grass Roots.

Author: Linda Rising

To read the other 17 patterns, please download the paper from here:Evolving a Patterns Culture

Join me

I am looking for like-minded people who would join me in creating the Pattern Language for Effective Thinking. If you are interested, please DM me on Twitter and I will invite you to a Roam database I am setting up for this purpose. On an ongoing basis I will share the results of the work here on my blog, as the pattern language evolves.

Like this post?
Show your support.


Popular posts from this blog

Showcasing Excalidraw

Conor ( @Conaw ) pointed me to Excalidraw last week, and I was blown away by the tool and especially about the opportunities it opens up for  Roam Research ! It is a full-featured, embeddable sketching component ready for web integration. This post will showcase key Excalidraw features and discusses some of the issues I still need to solve to complete its integration into Roam. I spent most of my free time during the week integrating Excalidraw into Roam. This article will introduce Excalidraw by showcasing its features.

Mind mapping with Excalidraw in Obsidian

Mind-mapping is a powerful tool. In this post I will show you how and when I mindmap with Excalidraw in Obsidian and why mindmapping is such a good tool for Personal Knowledge Management. Like this post? Show your support.

Evergreen Note on Note-taking Strategies and Their Practical Implementations

This is an evergreen note that I will be revisit regularly to develop a comprehensive list of note-taking approaches including their practical implementations in various software tools. This post will serve as an elaborate table of contents, including a brief introductory discussion on the importance of note-taking, followed by a high-level walkthrough of each method. Links to posts and videos with detailed examples and descriptions will follow over the coming weeks and months.

Deep Dive Into Roam's Data Structure - Why Roam is Much More Than a Note Taking App

Which are the longest paragraphs in your graph? Which pages did you edit or create last week? How many paragraphs of text do you have in your database in total? Which pages do you have under a given namesapece (e.g. meetings/)?