PUX: Patterns of User Experience
Alan F. Blackwell
University of Cambridge Computer Laboratory | Alan.Blackwell@cl.cam.ac.uk
University of Kent at Canterbury | S.A.Fincher@kent.ac.uk
Christopher Alexander’s pattern language provided a way
of raising the level of discourse
about buildings from a concrete to a new abstract level of
description [ 1]. Rises in abstraction level happen regularly in
all fields, but the key difference
in Alexander’s work was that
his abstract descriptions were
founded in user experience,
not in abstract descriptions of
building construction (
engineering) or of ornament (style).
This is in contrast to recent
developments in software
patterns, as noted by Molly
Steenson in her recent
interactions article [ 2].
In talking about software, it
is easy to get confused about
the distinctions between
abstract and concrete because
so much about software seems
abstract. As a result, the adaptation of pattern languages to
software has lost the key contribution of Alexander’s work,
which was to focus attention
onto the users. Software patterns, despite being inspired by
Alexander’s work, emphasize
abstract descriptions of construction and of ornament, not
abstract descriptions of user
experience. It’s time for that
to change. This article investigates where we took a wrong
turn and proposes an alternative way forward.
“Traditional” software patterns are concerned with user
experience, but mostly with the
user experience of programmers. That perspective may
sound strange in an HCI context, but it helps explain the
popularity of pattern languages
in the programming community. If we move from the object
world of technical software
features to the human experience of structured information,
we refocus attention on ways of
working, not widgets. Our aim
is a pattern language in the
sense intended by Alexander—a
pattern language of user experience design rather than a
pattern language of user interface design. This lets us escape
the shallow understanding of
user experience in terms of
affect and passive consumption (architects describe this as
ornament [ 3]), to the ways that
users perceive and build information structures.
Before the publication of
Design Patterns by the “Gang
of Four,” which popularized
software patterns [ 4], Richard
Gabriel described Alexander’s
patterns as a basis for reusable
object-oriented software in the
Habitability is the characteristic
of source code that enables pro-
grammers, coders, bug-fixers, and
people coming to the code later in
its life to understand its construc-
tion and intentions and to change
it comfortably and confidently. It
should be clear that, in our context,
a “user” is a programmer who is
called upon to maintain or modify
software; a user is not (necessarily)
the person who uses the software.
In Alexander’s terminology, a user
is an inhabitant [ 5].
[ 1] Alexander, C.,
Ishikawa, S. and
Silverstein, M. A Pattern
New York: Oxford
University Press, 1977.
[ 2] Steenson, M. W.
Patterns: A Different
Look at Christopher
Alexander and Pattern
interactions 16, 2 (2009):
[ 3] Vrachliotis, G. “‘And
it was out of that that
I began dreaming
about patterns…’ On
Thinking in Structures,
Designing with Patterns,
and the Desire for
Beauty and Meaning
in Architecture.” In
Structure, and Behavior,
ed. Gleiniger, A. and
Vrachliotis, G., 25–39.
Basel: Birkhäuser, 2009.
[ 4] Gamma, E., Helm,
R., Johnson, R., and
Vlissides, J. Design
of Reusable Object-oriented Software.
Boston, MA: Addison-Wesley Longman, 1995.
[ 5] Gabriel, R.P.
Journal of Object-Oriented Programming
(February 1993): 9–14.
Also published as
Chapter 2 of Patterns of
Software: Tales from the
Press, 1996. Available
[ 6] Bucciarelli, L.L.
MIT Press, 1996.
March + April 2010