Flag

We stand with Ukraine and our team members from Ukraine. Here are ways you can help

Home ›› Design ›› A Pattern Language

A Pattern Language

by Kevin Muldoon
7 min read
Share this post on
Tweet
Share
Post
Share
Email
Print

Save

What do Architecture, Computer Science, Agile, and Design Systems have in common?

Christopher Alexander was an American architect whose theories on human-centered design influenced architecture, urban design, sociology, and software programming.

In 1977 he published A Pattern Language, describing how the creative process gives rise to common patterns that are different in detail but similar in shape and form.

Together, these patterns form a language that describes the context, the problem, and known solutions which are self-referential. When the language is known, solutions can be recombined and reused effortlessly.

A Quality Without a Name

Designers aspire to make good designs and avoid making bad ones. Because we are taught ‘beauty is in the eye of the beholder’, some consider assessing good from bad design a subjective exercise.

However, Alexander asserts good and bad design is not a matter of opinion but an objective truth to be realized, but difficult to articulate.

Good design is self-sustaining and bad design is self-destructive, much like health and sickness. Good design is described as AliveWholeEternal, or Truthful whereas bad design describes the lack of these qualities.

Suppose you remember a town, building, or garden you’ve visited. In that case, you may find the memory of the environment pleasurable or displeasing because of the presence or absence of a Quality Without A Name, or QWAN for short. Any place or product is judged by the QWAN it possesses or does not, but how do Pattern Languages help create QWAN or good design?

Design Patterns

Alexander describes 253 patterns for TownsBuildings, and Construction that define a problem, and a solution, and references similar patterns that may be composed into new solutions. One context is pedestrians walking near or crossing roads.

Road Crossing — Cars can scare people away from walking near roads even if places that people have the legal right-of-way. Narrow the road where the pedestrian path is, raise the path, put in islanders between driving lanes, and add a canopy to keep the path visible to cars.

  • Name: (A descriptive name)
    Road Crossing.
  • Context: (What is the environment?)
    Pedestrians walking near or crossing roads.
  • Problem: (What needs to be solved?)
    Pedestrians feel unsafe walking near automobile traffic, which discourages them from accessing the town space.
  • Solution: (How has it been solved?)
    Narrow the road where the pedestrian path crosses to slow car traffic. If the path is parallel to the road, raise the path to protect pedestrians from traffic. Add a canopy over the path, ensuring it is visible to drivers.
  • Consider: (Other patterns)
    [Raised Walk], [Arcades], [T Junctions]

Each pattern describes a core problem that occurs over and over again and describes the solutions so we can use it many times and not necessarily the same way twice.

Reusing solutions for reoccurring problems allows embedding the property of QWAN with knowledge and research to provide a better experience and accelerate the creation process. Because Pattern Languages are languages, they are alive and grow stronger over time.

Computer Science

The architectural concepts created by Christopher Alexander made a profound impact on computer science, the Web, and project management.

Alexanders A Pattern Language inspired software engineers Kent Beck and Ward Cunningham to experiment with software design patterns to solve reoccurring problems which they presented at the OOPSLA conference in 1987.

A Pattern Language was the reason Ward Cunningham created the first user-editable website, or Wiki, named WikiWikiWeb (wiki is Hawaiian for ‘quick’) so programmers could contribute and manage documentation for software design patterns collaboratively.

There are more than 23 software design patterns that are classified into three categories, CreationalStructural, and Behavioral. Patterns such as SingletonsFactory Methods, and Facades are templates for how to solve a problem that can be used in many different situations for programmers.

Today, software design patterns are taught in computer science classes and codified as best practices for professional software development. All were inspired by Christopher Alexander, who likely never used a computer when he wrote the book.

Agile Software Development

In 1996, Kent Beck consulted for the Chrysler Comprehensive Compensation System (C3) project, where Beck and Cunningham pioneered Extreme ProgrammingThe C3 project was created to replace several payroll applications with a single system.

Together with Ron Jeffries and Martin Fowler, Beck, and Cunningham used WikiWikiWeb created for Design Patterns to share methodologies developed for Extreme Programming, which would become the basis of The Agile Manifesto, of which all were signatories.

Extreme Programming developed concepts such as Continuous Integration (CI)Test Driven Development (TDD)Pair Programming, and other methodologies.

Though the practice of Pair Programming is not defined as a Software Design Pattern, we can describe it as a pattern within a Pattern Language.

  • Name: Pair Programming
  • Context: Writing code for a feature in an application
  • Problem: Programmers can make mistakes that reduce the velocity of a project because bug fixes must be prioritized over project completion.
  • Solution: Two programmers working together at one workstation (one writes code as the other reviews) provide continuous code reviews to reduce/eliminate bugs.
  • Consider: [Continious Integration], [Code Review], [Test Driven Development]

It seems inefficient for two programmers to write the same code, but Beck and Cunningham believed Pair Programming was essential to the success of Extreme Programming and the C3 project, and later studies supported its benefits.

Because Pair Programming promotes the success and growth of the project, it has the qualities of AliveWholeEternal, and Truthful. Because it is not self-destructive but self-sustaining, the pattern expresses QWAN, making the design good.

Design Systems

Like Pattern Languages, Design Systems provide reusable solutions that can be recombined in an infinite number of ways.

When components are effortlessly composed into solutions, the Design System has QWAN, or a good system. However, when buttons, input fields, cards, and dialogs are continuously redesigned and coded for nearly every context, they do not have the qualities of AliveWholeEternal, and Truthful.

Imbuing QWAN into Design Systems is a multi-dimensional and inter-departmental challenge because they are systems within systems that operate contextually within even bigger systems. Certainly, architecture creates solutions multi-dimensionally, but Design Systems must also synthesize the inter-departmental needs of designers, engineers, researchers, accessibility, brands, stakeholders, and the organization itself. As Conway’s law states…

“Any organization that designs a system will produce a design whose structure is a copy of the organization’s communication structure.” — Melvin E. Conway

Suppose Conway’s law also expresses the mirroring of the organizations’ language and culture into the system (not just the communication structure). In that case, it explains why design systems are created over and over again for different organizations — which is the biggest system in which Design Systems live.

My article, How to Name Design Tokens in a Design System, describes a system for naming design tokens called CTI+ Taxonomy, theorizing token names are highly compressed sentences that follow a common language structure. CTI+ Taxonomy does not address the context, problem, or solutions that Pattern Languages, but Pattern Language for UX Design, by Avneesh S Manian, is a step in the right direction.

Rather than reusing elements, A Pattern Language reuses solutions. When considered from that perspective, individual components are composed within a contextual whole and become more flexible and imbued with QWAN.

Conclusion

Christopher Alexanders’ human-centered architectural approach influenced architecture, urban design, sociology, and software programming.

The patterns Alexander documents are not infallible but are regarded as hypotheses that should evolve. Originally, A Pattern Language was to be published in a 3-ring binder, allowing architects to add new patterns, but the binding was too expensive.

“…the patterns are still hypotheses, all 253 of them — and are, therefore, all tentative, all free to evolve under the impact of new experience and observation.” — Christopher Alexander

Thanks to software engineers Kent Beck and Ward Cunningham, Christopher Alexanders’s concepts contributed to computer science, the web, and modern lightweight project management methodologies.

Good Design Systems provide reusable solutions that can be recombined in an infinite number of ways, but those patterns need to be codified and findable. Storybook and Zeroheight are excellent for finding components but less capable of presenting solutions.

Instead, reframing the documentation approach to a Design System as a Pattern Language that contains a rich library of context/problem/solutions in the form of a Wiki Design System Management platform would allow multiple disciplines to contribute to the system and create the qualities of AliveWholeEternal, and Truthful we seek to achieve at scale.

References

A Pattern Language: Towns, Buildings, Construction: Center for Environmental Structure Series. Christopher Alexander (1979)

The Timeless Way of Building. Christopher Alexander (1979)

Extreme programming explained: Embrace change. 2-nd edition. Beck, K., & Andres, C. (2004).

Pattern patter, Ethan Marcotte (2016)

A Pattern Language for Pattern Writing, Gerard Meszaros

This article was originally published on UX Collective.

post authorKevin Muldoon

Kevin Muldoon
Kevin Muldoon is a designer, programmer, researcher and writer passionate about simplifying complex ideas with design systems. He is the creator of the genome color tool and lives in Connecticut with his wife and two dogs.

Tweet
Share
Post
Share
Email
Print
Ideas In Brief
  • The article explores Christopher Alexander’s impact on diverse fields, from architecture to software development, introducing the concept of design patterns and their influence on methodologies like Agile and the evolution of Design Systems.

Related Articles

Tell us about you. Enroll in the course.

    This website uses cookies to ensure you get the best experience on our website. Check our privacy policy and