Design Systems
Design Systems
Systems
A practical guide to
creating design languages
for digital products.
by Alla Kholmatova
To Alyona
Published 2017 by Smashing Media AG, Freiburg, Germany.
All rights reserved.
ISBN: 978-3-945749-58-6
PART 1: FOUNDATIONS
1 Design Systems 18
2 Design Principles 46
3 Functional Patterns 63
4 Perceptual Patterns 82
Conclusion 285
About The Author
A
lla Kholmatova is a UX and interaction designer
with a nine-year experience of working on the
web, for a range of products and companies. Most
recently she was a senior product designer at the open edu-
cation platform, FutureLearn.
1 http://bondartscience.com/
2 http://smashed.by/contentmob
3 https://clearleft.com/
Foreword
I
f you have a moment, look up the work of artist Emily
Garfield. She creates exquisite, intricately detailed
maps in watercolor each of them stunning, and
each of them depicting a place that doesnt exist. Instead of
depicting a citys real, actual landscape, she begins by cre-
ating a single, complex pattern a knotted road or twisty
river, or a compact grid of city blocks and repeating it.
Garfield iterates on that pattern, changing it slightly each
time, spiraling out until her not-map is finished. As a result,
her art has a generative, fractal-like quality: its built from
patterns, yes, but feels part of a cohesive whole.
In other words, this isnt just a book. Alla has drawn a clear,
bright map for us, one that outlines a more sustainable
model for digital design. And if we walk the paths shes
drawn for us, well learn to grow better design systems
and with them, better designs.
Ethan Marcotte
viii Introduction
A
s the web continues to change rapidly and become
more complex, thinking of it in terms of static
pages has become untenable, and many of us have
started to approach design in a more systematic way.
And yet not all design systems are equally effective. Some
can generate coherent user experiences, others produce con-
fusing patchwork designs. Some inspire teams to contribute
to them, others are neglected. Some get better with time,
more cohesive and better functioning; others get worse,
becoming bloated and cumbersome.
PART 1: FOUNDATIONS
PART 2: PROCESS
Terminology
Before we dive into the topic, lets establish the terms well
use throughout the book.
AIRBNB2
2 https://www.airbnb.com/
3 http://smashed.by/airbnblanguage
xiv Introduction
ATLASSIAN4
EUROSTAR6
4 https://www.atlassian.com/
5 https://atlassian.design/
6 http://www.eurostar.com/
7 https://style.eurostar.com/
Design System Insights xv
SIPGATE8
TED10
8 https://www.sipgate.de/
9 https://design.sipgateteam.de/
10 http://www.ted.com/
11 http://ted.com/swatch
xvi Introduction
Acknowledgements
I
want to thank everyone at FutureLearn for their
support of this book, in particular: Lucy Blackwell,
for reviewing the early drafts and for guiding and
inspiring me to do my best work; Mike Sharples, for the
thought-provoking feedback on the early draft and for
challenging me; Gabor Vajda, for helping me to shape many
of the ideas described in the book; Jusna Begum, for bring-
ing some order and structure to my chaotic thoughts; and
Sam McTaggart, Dovile Sandaite, Kieran McCann, Storm
MacSporran, Katie Coleman, Nicky Thompson, James
Mockett, Chris Lowis and Matt Walton, for taking the time
to listen and for sharing their feedback.
Chapter 1
Design Systems
There isnt a standard definition of design system within the web
community, and people use the term in different ways. In this chap-
ter, well define what a design system is and what it consists of.
A
design system is a set of interconnected patterns
and shared practices coherently organized to achieve
the purpose of digital products. Patterns are the
repeating elements that we combine to create an interface:
things like user flows, interactions, buttons, text fields,
icons, colors, typography, microcopy. Practices are how we
choose to create, capture, share and use those patterns, par-
ticularly when working in a team.
A screen from Thomson Reuters Eikon (left) and a screen from FutureLearn.
Design Patterns
The idea of design patterns was introduced by the architect
Christopher Alexander in his seminal books, The Timeless
Way of Building and A Pattern Language. One question that
runs through the books is why some places feel so alive and
great to be in, while others feel dull and lifeless. According
to Alexander, the way places and buildings make us feel is
not due to subjective emotions merely. Its a result of certain
tangible and specific patterns. Even ordinary people can
learn and use them to create humane architecture.
Each pattern describes a problem that occurs over and over again
3 http://smashed.by/patternsrecognition
4 Until the swipe gesture had emerged as a mobile pattern, no one
would have known how to engage with it. Now we see whole products
built on this pattern (such as Tinder). The transition to using what
people know and exploring something new is very delicate; products
live and die based on when and how they do this.
Design Systems 25
5 http://smashed.by/researchingsystems
6 http://smashed.by/visualloudness
26 Chapter 1
Shared Language
Language is fundamental to collaboration. If you work in a
team, your design language needs to be shared among the
people involved in the creation of the product. Without a
shared language, a group of people cant create effectively
together each person will have a different mental model
of what theyre trying to achieve. Lets return to the button
example. Even such a basic unit of the interface can have
different meanings. What exactly is a button? An outlined
area that you can click on? An interactive element on a page
that links somewhere? A form element that allows users to
submit some data?
Types of staircases: spiral, oval and straight. Palladio described how and
when to use each type; for example, spiral staircases are suited for very
restricted locations because they take up less space than straight stairs but
are more difficult to go up.
8 http://smashed.by/nasastandards
9 Perhaps this is how we can distinguish style guides from pattern li-
braries. Style guides traditionally focused on styles, such as colour and
typography. Pattern libraries can include styles, as well as functional
patterns and design principles, among other things.
34 Chapter 1
10 http://smashed.by/mailchimppatterns
36 Chapter 1
SHARED PURPOSE
11 http://smashed.by/whitneyidentity
Design Systems 39
IDENTIFYING PROBLEMS
When there are gaps, its also easy to see them. A frag-
mented design system leads to a fragmented user experi-
ence, full of conflicting messages. We want the user to sign
up for our newsletter, but we also want them to check out
our latest products. We want them to progress through the
steps, but we also need to make sure they rate each recipe.
Sequence is used to preview the steps in one area of the
site; in another, it is suddenly a tabbed navigation. The inter-
face is full of various shades of the same color and multiple
versions of the same button. The teams productivity is also
affected: making the tiniest change is time-consuming and
fiddly because of the confusing, tangled up code. Designers
spend their time copying pixels and reinventing solutions
to the same problems, instead of understanding and solving
real user needs.
40 Chapter 1
DESIGN PRINCIPLES
Around the same time, wed need to work out how we want
to be perceived by someone using the ten-minute cooking
recipes site. Are we simple and down-to-earth or glamor-
ous and sophisticated? Are we serious or playful? Bold or
subdued? Utilitarian or emotional? What are the aesthetics
that capture the personality and ethos we want to portray
through the interface? Wed start thinking about the brand.
SHARED LANGUAGE
Chapter 2
Design Principles
Solid principles are the foundation for any well-functioning system.
In this chapter well discuss the qualities of effective design principles
and look at some of the ways of defining them.
E
arlier we talked about the importance of starting
with the purpose and ethos of the product when
designing the interface. Having clarity on the
purpose is paramount because all other decisions should be
shaped by it, even if indirectly.
1 http://smashed.by/pinterestredesign
Design Principles 47
2 http://smashed.by/govukprinciples
3 http://smashed.by/whatdoimake by Dan Mall
4 http://smashed.by/jack by Avi Dan
5 Google has well known broad-brush design principles such
as Focus on the user and all else will follow, and a more specific
set of principles for its material design language, such as Motion
provides meaning.
48 Chapter 2
It is one system. The principles are there to connect the dots.
Jrgen Spangl, head of design, Atlassian
The few options available in Mediums minimal editor clearly illustrated one
of Mediums principles, Direction over Choice.
9 http://smashed.by/lightning
10 http://smashed.by/usefulprinciples by Dustin Senos
Design Principles 55
11 http://smashed.by/researchingsystems
56 Chapter 2
15 http://smashed.by/truelies
Design patterns are shaped by the core idea of how a prod-
uct works. Think about how an ethos of transparency and
collaboration is embodied through open channels on Slack;
how the idea of capturing lifes unique moments trans-
lates into Instagrams photo feed and interactions; or how
cards on Trello (a functionality that goes back to the seminal
HyperCard system) encourage a certain type of workflow.
Over the next two chapters well talk about design patterns
in more detail, taking real-life products as examples. Well
see how design patterns emerge and how they are affected
by a products purpose and ethos, user behaviors, brand,
business requirements, and other factors.
Part I 63
Chapter 3
Functional Patterns
In this chapter, well discuss the role of functional patterns and
why they should be defined early in the design process.
F
unctional patterns are the tangible building blocks of
the interface. Their purpose is to enable or encourage
certain user behaviors.
The To Do page went through several revisions over the course of three years
but the purpose of the core modules stayed the same.
Discussion pages went through several iterations once they were designed
but the purpose of the core modules was unchanged.
Functional Patterns 67
The core unit for displaying course details has also evolved
over three years, to allow users to see a larger selection
of course listings before needing to scroll down the page.
But again, the purpose of the pattern remains the same
to allow people to discover and join the courses theyre
interested in.
Course list evolved over years, to allow users to see a larger selection of
course listings.
To see how your patterns fit into a bigger picture, try to map
some of your core modules to the sections of a user journey.
2 http://smashed.by/mappingxp
3 Job to be done (JTBD) is an exercise that helps you focus on the
underlying motivation behind using a product or service, rather than
on the product itself. For example, even though customers say that
they buy a lawnmower to cut grass, their higher purpose might be to
keep the grass low and beautiful at all times, which might indicate
that a lawnmower is not the right tool for the job in the first place.
70 Chapter 3
Think about what each section is for and what behaviors its
designed to encourage. You dont need to worry about cap-
turing every icon or button at this point. Focus on the big
picture: understand the parts of the system and how they
work together. For FutureLearn, it was primarily focused on
three areas: discovering content, learning on a course, and
achieving a goal.
4 http://smashed.by/uiinventory
72 Chapter 3
a heading
a strong call to action
an eye-catching background (solid color or image)
7 http://smashed.by/visualloudness
78 Chapter 3
The tabs were meant to stay visible. To get around the prob-
lem, we almost introduced a custom smaller size heading,
simply to nudge the tabs up a bit. But had we done that, we
would have ended up with a module that wasnt robust.
Functional Patterns 81
These are just some of the tools and techniques you can try
to define functional patterns in your interface. The most
important thing is to understand how patterns link to the
behaviors they were originally designed for: their purpose.
Chapter 4
Perceptual Patterns
In this chapter well discuss how perceptual patterns work and their
role in a design system.
I
magine we both have a house, with the same set of
furniture: a table, a few chairs, a bed, and a wardrobe.
Even though the furniture is the same, our houses can
feel distinctly different: it could be because of the style of
the furniture, the materials, colors, textures, the fabric on
the bed covers, the style of the ornaments, how we lay out
the room, the lighting, or even the music we play inside.
I refer to such attributes as perceptual patterns. Because of
them, your house might feel like a bohemian lair, and mine
like a warehouse.6
6 This way of thinking can make visiting places a whole different ex-
perience. Be it a coffee shop, a new city, or a picnic spot, I like to think
about how a place feels and then try to determine some of the patterns
that combine to create that atmosphere.
Perceptual Patterns 83
8 Spotifys vision, The right music for every moment, and their
design principle emotive are inline with the feel created through
perceptual patterns.
Perceptual Patterns 85
A still from Twitters heart animation, introduced in 2015 on Twitter for iOS,
the web, Android, TweetDeck, Twitter for Windows 10, and other platforms.
MOOD BOARDS
12 https://uk.pinterest.com
92 Chapter 4
STYLE TILES
13 http://samanthatoy.com
14 http://styletil.es/
Perceptual Patterns 93
ELEMENT COLLAGES
15 http://danmall.me
94 Chapter 4
16 http://www.wolffolins.com
Perceptual Patterns 95
Initial icon designs by Wolff Olins (left) and how they were evolved by Fu-
tureLearns design team. The gaps in the icons signify that a learning process
is never complete.
17 http://smashed.by/microinteraction
100 Chapter 4
TEDs drop animation of their videos intros mirrored in the ripple effect on
the video play button.
SMALL-SCALE EXPERIMENTS
Initial experiments with triangles on the home page started off quite flat
(left), but were given a new twist by other designers who took the pattern and
applied it to their projects.
Chapter 5
Shared Language
This chapter describes how to establish a shared language, which
allows a group of people to create and use patterns cohesively for a
particular product.
D
igital products are built by teams. Everyone will
have their own specific goals to accomplish and
personal deadlines to meet. Inevitably, this means
that sloppy patterns will be added, or that modules will be
duplicated or misused.
Naming Patterns
James Britton, an influential British educator, explains in
Language and Learning6 that by conferring names on objects,
we start bringing them into existence, just like children
use language to draw out of nothingness the world around
them. Similarly, if an interface object doesnt have a proper
name a name that is known and makes sense to people
in your team then it doesnt really exist in your system as
an actionable unit to work with. Once you name an object,
you shape its future; if you give it a presentational name, its
future will be limited because it will be confined by its style:
a pink button can only be pink.
6 http://smashed.by/languagelearning
110 Chapter 5
The main problem with presentation based naming is that you cant
find what you are looking for when the number of patterns in your
library increases. It also gives you no guidance or inspiration for
where to use a specific pattern. People start to build more and more
new patterns instead of reusing and enhancing the existing ones,
which makes the problem worse and worse over time. 8
Tobias Ritterbach, experience owner, Sipgate
7 https://www.sipgate.de
8 Interview with Tobias Ritterbach, exp. owner, Sipgate, Aug. 2016
9 https://www.atlassian.com/
Shared Language 111
Minion buttons.12
Boss button.
Its also fun to see .minion and .boss class names used
in CSS.13
The name they gave it in the end was le blurb. And the pur-
pose of le blurb was something along the lines of: to provide
potentially interesting information aiming to improve SEO.
NAMING COLLABORATIVELY
Nuggets of joy could be a great name for a module, but we decided to settle
on Brackets in this case.
120 Chapter 5
14 Whats more, when sharing a new design, someone might spot that
a similar module already exists and you can prevent a duplication.
Shared Language 121
Start with the ones that are the most crucial or used most
frequently. Print them out on A3 sheets, put them up on
the wall, and label the most prominent patterns. It can be
helpful to position the printouts in the order that follows
your most common user journeys; for example: discovery
screens, sign-in journey, comparing products, making
a purchase.
KEEP A GLOSSARY
16 http://smashed.by/intercom
17 Well discuss pattern libraries in detail in chapter 10.
130 Chapter 5
Summary Of Part I
In this first part of the book weve talked about establishing founda-
tions for a design system. Heres a summary of the key points.
PURPOSE
The purpose of a design system is to help achieve the pur-
pose of the product: Cook a healthy meal in ten minutes;
Spread the talks as far and as wide as possible; The right
music for every moment. Everything in a system from
how a team operates, down to the smallest pattern should
be optimized toward that purpose.
PRINCIPLES
Teams choose how to achieve the products purpose through
design. Their design approach and priorities can be cap-
tured in a set of principles: Design for first impressions;
Appropriate over consistent; Timeless, not cutting edge.
The more aligned the team are on their principles, the more
cohesive the patterns they create.
PATTERNS
SHARED LANGUAGE
Planning
Conducting a functional interface inventory
Setting up a pattern library
Creating, documenting, evolving and maintaining
design patterns
134 Part II
Chapter 6
T
he team at Sipgate ran into a problem. Duplications
and inconsistencies across their product websites
were diluting the brand and creating needless extra
work for the whole team. They decided to address the issue
by establishing a pattern library. After weeks of workshops
and interface inventories, patterns across the product sites
were standardized. A few months later, the team rolled out a
brand new pattern library.
AIRBNB
Airbnb has over 2,000 employees worldwide and around 60
product designers working across multiple work streams.
The system is managed entirely by their Design Language
System (DLS) team which consists of six designers and
their engineering partners for web, native mobile, and React
Native platforms.
Standardized Specifications
To minimize deviations, modules in Airbnbs DLS are
specified precisely. For example, typography treatments are
strictly defined; there is an eight-pixel grid used for spacing;
interactions are documented; naming conventions are con-
sistent. Heres how a module called Marquee is specified
in the master Sketch file. Notice that there are two examples
of each one, to show some options available to the designers.
Parameters Of Your System 137
TED
The team at TED is small, with only five or six key peo-
ple responsible for the design system decisions: two UX
practitioners and four front-end developers. TEDs system
is loosely set up. Brand feel and the utility of the page take
priority over perfect visual consistency.
Parameters Of Your System 141
Design whats right, not whats most consistent. The best utility
At TED a simple sketch with notes is often used instead of detailed design specs.
Simple Documentation
The documentation is also simple. The team doesnt have
a comprehensive pattern library. Instead theres a simple
collection of what they call swatches on a web page and
in a Sketch file, which contains some of their core design
patterns but by no means everything.
Parameters Of Your System 143
A modular design, such as the iconic Bauhaus Bauspiel construction set, can
adapt to different requirements.
But in fact its the placement of the balconies and the way
they protrude from the building that gives it this feel. In this
case it didnt make sense to make the building fully mod-
ular, but the modular aesthetic still suited that particular
building. The opposite could be the case too.
Circles Conference is a conference for designers and other creatives. Their site
features bold design, with a number of unique modules that can make full
modularisation not worthwhile. (KIKK.be, 2016)
While you can spot some reuse of a few of the brand styles
(such as shapes, color and typography), it is less common to
see larger building blocks from the main consumer prod-
ucts in these campaigns. To allow more flexibility and crea-
tive expression, it made more sense to create these designs
outside their modular system for consumer products.3
3 The brand and creative team at Spotify, which manages the cam-
paigns, has a simple system that allows for a very flexible combination
of brand styles. This is how they can create a whole range of cam-
paigns which all fit within the Spotify brand.
Parameters Of Your System 155
CENTRALIZED MODEL
In a centralized model, rules and patterns are managed pri-
marily by one group of people. Typically this means that:
DISTRIBUTED MODEL
An alternative approach is a distributed model, where every-
one who uses the system is also responsible for maintaining
and evolving it.
158 Chapter 6
This is the approach used at TED, and its also the structure
we tried to establish at FutureLearn. For a small company
like FutureLearn, it was impractical to have a dedicated
design systems team. All the designers and front-end devel-
opers who work on the product also actively contribute to
the system. And because everyone contributes a little, run-
ning a system in this manner doesnt take that long. Thats
the only way we have been able to maintain the pattern
library for the last three years.
ORGANIZATIONAL CHALLENGES
While a distributed approach works for FutureLearn, its not
for everyone. Many companies I spoke to had a different
experience when trying it. People were enthusiastic at first
but without someone in charge, the work could slow down
or stop completely.
We want people not just consent the design language but embrace it
SUMMARY
In this chapter weve looked at several teams, with different
approaches to design systems. Heres how I would place
them on the three scales introduced earlier.
The right system for you is not some elses system. What-
ever works for one team might not work for another.
Sometimes we think other teams have got it right and aspire
to build a system just like Airbnb. But every approach has its
downsides. The right system for you is the one where youre
able to manage the downsides.
Chapter 7
H
ow does a team start thinking about design more
systematically? Typically, when they notice issues
with their current workflow. Designers become
frustrated always solving the same problems, or not being
able to implement their designs properly. Developers are
tired of custom styling every component and dealing with
a messy codebase. Both struggle to meet the deadlines and
demands of a growing product. Without shared design
language and practices, collaboration is difficult.
1 http://smashed.by/goodbuttons
Planning And Practicalities 169
A diff of file for updating the styling of buttons on etsy.com where the code
deleted is shown in red and the code written in green.
2 http://smashed.by/designforgrowth
170 Chapter 7
In the long run, modules should get better the more they are
used. Different teams come up with different use cases and
solutions to meet them. By improving individual compo-
nents, the whole system becomes more robust and easier to
maintain. And the less time a team spends fixing bugs and
untangling messy code, the more time they have to work on
things that bring value to their users and the business.
1020 times faster than for other product sites which are not connect-
ed to the library.
Tobias Ritterbach, experience owner, Sipgate
OTHER BENEFITS
When making a case for a design system, the winning argu-
ments tend to focus on demonstrating and quantifying the
cost of inefficiency. But, of course, there are other important
benefits, which may be valued in some organizations.
Visual Consistency
Design is a form of language through design we commu-
nicate a mental model of the product. A consistent visual
representation helps people learn the interface quicker and
172 Chapter 7
Trying a design system on a small test project allows you to see the
effect it can have on your work and to demonstrate how much time
youre saving.
Where To Start
As we saw in the previous chapter, every team will have dif-
ferent requirements, and different strategies will work for
them. But here are a few tips that have been helpful for most
people, regardless of their situation.
You dont always get the personal satisfaction right away the
reward comes when you see other people using the module you cre-
ated in their work, or when someone comments on how helpful the
information was for them.
Jusna Begum, front-end developer, FutureLearn
There are a few things you can do to help keep up the teams
morale during the process.
a short amount of time. Wed then spend the next week or so dedicat-
ing small amounts of time to refine a pattern and get the guidelines
and code up to scratch to include in the ADG.6
It also helps to plan the tasks in a way that affords the most
benefit for the least effort. At FutureLearn, our goal was to
make all the components living. This meant that the code
for the modules on the website, and in the pattern library,
would need to be the same. But achieving that involved
refactoring every module. As we refactored them, we added
them to the pattern library, one by one. It was a painfully
slow process and the team started to lose motivation.
Chapter 8
I
n the town where I live theres a small bookstore. As
you walk in, you see a few shelves of book covers.
Some have small handwritten notes attached to them:
reviews from the people who read them. Even if you dont
know what youd like to read, theres a good chance youll
stumble upon something intriguing. Once you do, theres a
quiet area with sofas to look through the books over coffee.
You might decide to buy something or you might not,
theres no pressure. The ethos of the store is discovery and
reading; sales appear secondary. Its patterns the notes,
quiet areas, sofas and coffee table reflect that.
A PURPOSE-DIRECTED INVENTORY
The interface inventory2 is a popular exercise to start
systemizing an interface. It involves taking screenshots of
various UI elements, and then grouping similar-looking
things together.
PREPARATION
Timing
To be most effective, this process should be run after the
foundational UX work user research, content strategy,
information architecture, design direction has been
worked out. If the design has fundamental flaws and usabil-
ity issues, they would be distracting and counterproductive
to deal with. For similar reasons, if your interface is about
to go through a major redesign, its best to get clarity on the
new design direction first.
People
Having different perspectives can help you to be more
objective and account for more use cases. Its important that
designers and front-end developers take part, but ideally
involve a back-end developer, someone with a content
background, and a product manager. The ideal group size is
around 48 people. If a larger group needs to be involved,
consider running the initial exercise with a few represent-
188 Chapter 8
Interface Printouts
Identify the key screens and user flows that are absolutely
fundamental for your product, those without which the
product couldnt exist. Typically, about 1012 screens is
enough, sometimes fewer. They can be design mock-ups, or
screenshots of an existing interface.
Print out two copies of each screen. Put the first set on the
wall, in the order of a typical user journey. The second set
will be used for cutting out patterns and grouping them.
Systemizing Functional Patterns 189
You will also need scissors, markers, sticky notes, and plenty
of wall and desk space to work on.
Some of the core screens grouped by the behaviors they support throughout
the user journey.4
Wording Is Fundamental
The words we choose matter. They influence how we think.
For a few months the team I worked in at FutureLearn
had retention as our metric. It focused on getting more
people to continue learning on a course after it began.
Designing for retention was hard. It also wasnt clear how
exactly retention benefited our users. Had the metric been
called engagement, it might have led to different design
outcomes. And perhaps even more, had the metric been
centered on quality and satisfaction of learning, rather than
the time spent on the site. (Someone could have spent half
an hour at FutureLearn and learned what they needed, but it
wouldnt have counted as success.)
192 Chapter 8
5 Successful businesses join user goals with business goals. If you re-
ally struggle to join the two together, your product might have deeper
issues a design system wont be able to solve.
Systemizing Functional Patterns 193
Cut the related elements out using the second set of print-
outs. Arrange them into groups and label each group: View
a book, Refine a list, and so on. They are the candidates to
be defined as patterns. The elements should be grouped at
the same level of granularity, so you wont have a Book list
module and a Reserve button in the same group.
3. Define Patterns
Now that you have groups of elements, decide how to deal
with the items in each group. Should they be merged into
one pattern or kept separate? Typically, this is worked out
on a case-by-case basis. But there are two techniques I find
particularly helpful: placing a pattern on a specificity scale,
and mapping out its content structure.
SPECIFICITY SCALE
The same pattern can be defined as more specific or more
generic. Say we need to display events and exhibitions on
the library site. If we define them as two separate patterns
we can make each one more specific. On the other hand,
unifying them into something like a content block would
make the pattern more generic.
Specificity scale.
CONTENT STRUCTURE
Another tool that I find helpful is mapping out a patterns
content structure. We covered it briefly in chapter 4 on
functional patterns. Heres a reminder of what it involves:
You might decide that items A and B share the same pur-
pose: they both appear in lists and allow people to view a
book and learn about it. They also share the same content
structure:
Systemizing Functional Patterns 199
large title
large thumbnail
more spacious layout
NAMING
As we discussed in chapter 5 on shared language, names
affect how patterns are used. A well-chosen name is a pow-
erful tool for shaping your design system.
CONSISTENCY OF ACTIONS
Buttons and Links
Traditionally in web development, links and buttons are
different. A link navigates the user away from the current
page. A button submits an action and toggles something in
the interface.7 But in practice, its not easy to make design
decisions based on this criterion alone.
6 There are general guidelines and best practices (for an excellent re-
source see Designing Web Interfaces by Bill Scott and Theresa Neil; and
Designing Interfaces: Patterns for Effective Interaction Design by Jenifer
Tidwell), but some things might be specific to your situation. Even if
theyre common knowledge for some people, it is worth verbalizing
them so the rest of the team can learn.
7 See http://smashed.by/linksvsbuttons by Marcy Sutton; and
http://smashed.by/properbuttons by Dennis Lembre.
Systemizing Functional Patterns 205
8 http://smashed.by/ibmcarbon
9 http://smashed.by/polaris
206 Chapter 8
10 http://smashed.by/inclusivedesignpatterns
208 Chapter 8
VISUAL HIERARCHY
Most interfaces have equivalents of primary and secondary
buttons. But what does primary mean exactly? Does it
signify the most important action in the context of the whole
interface, or a specific screen or section? For example, should
a Reserve book button always be a certain style because of
the importance of the action on a library website?
11 http://smashed.by/marvel
12 http://smashed.by/atlassian
13 http://smashed.by/polaris
Systemizing Functional Patterns 209
SPECIAL CASES
There will always be special cases. In the library website
example, the Reserve button could be treated differently.
It could include states specific to the action; for instance, its
label could change to Cancel reservation if the book hasnt
been collected yet.
210 Chapter 8
Summary
In this chapter we looked at systemizing a small section of
an interface. After following this process in your team, youll
have a better knowledge of your system and the areas that
need attention.
For the next steps, teams can dive into code and Sketch to
work on finalizing designs for the patterns making sure it
works for all required use cases, defining states and behav-
iors, refactoring code.
Chapter 9
S
omething grabbed my attention recently in the two
products I was using the design of accordion con-
trols. In both interfaces the accordions looked similar
and had identical (standard) functionality: expanding and
collapsing sections of content. Both would be considered
aesthetically pleasing by most people. But somehow one
of them didnt feel as robust as the other. The hover state
was too subtle, the transitions were a little slow, the selected
state didnt stand out, and there didnt seem to be enough
contrast between headings and body copy.
1 See chapter 4
Systemizing Perceptual Patterns 217
What are the styles and tones that first come to mind
when people think about your product?
How do your users describe the aesthetic?
Are there any moments frequently recalled in user feed-
back (That pink tick always makes me smile)?
color
interactive states
animations
typography
spacing
iconography styles
shapes and borders
illustrations
photography
voice and tone
sounds and audio cues
Color
The goal of the first step is to make the use of color more
consistent. To do that we will start by listing the roles color
plays in your interface.
2 http://smashed.by/wetoolkit
Systemizing Perceptual Patterns 221
The roles you define will determine the categories for your
inventory.
3 http://smashed.by/coloraudit
222 Chapter 9
DEFINE PATTERNS
Next, you can define patterns of usage based on the purpose
of color (and feel, if appropriate). When do you use blue
links and when gray? What is the meaning of red calls to
action? Why are some backgrounds gray and others brightly
colored? What is the difference between black and red
headings?
Systemizing Perceptual Patterns 225
Dont worry about the exact hex values just yet. What mat-
ters is that you agree on the use of color across the interface.
Heres an example of how patterns could be defined for
links and buttons.
How color patterns for links and buttons could be defined for the library site.
Its important to note that these decisions can alter the over-
all aesthetic of the site. We might decide that links and calls
to action should be red instead of blue, but that could result
in a more noticeable overall change suddenly there would
be many more red elements in proportion to blue.
4 http://smashed.by/colorinventory
228 Chapter 9
FutureLearns primary and secondary colors (left) and some of the UXPin colors
show how the need for color variation is different in different interfaces.
Systemizing Perceptual Patterns 229
5 http://smashed.by/contrastratio
6 In a project where color accessibility was a factor right from the
start, you wouldnt end up with such widely different palettes.
Systemizing Perceptual Patterns 231
You can introduce different accent colors for light and dark
backgrounds, or change text on colored backgrounds from
light to dark, or vice versa. There are also plenty of tools for
generating contrast-compliant color combinations, or for
finding accessible alternatives to the original color, such as
Color Safe7 and Tanaguru8 Contrast Finder.9
We allow our great content to be the color that brings the page to
life. We do not color code our sites, or sections within our sites.
7 http://colorsafe.co/
8 http://smashed.by/contrastfinder
9 For further reading on balance with aesthetics, I highly recommend
Color Accessibility Workflows by Geri Coady. http://smashed.by/colora11y
10 http://smashed.by/skytoolkit
232 Chapter 9
such as the backgrounds on the header and footer. This makes for
a strong brand presence throughout the site. Because it features so
strongly in these areas, it is not recommended to use it in large areas
elsewhere. However it is used more sparingly in smaller elements
such as in event date icons and search/filtering bars.
Animations
Even with more complex patterns, such as animations, we
can follow the same process: start with the purpose, collect
and group existing styles, define patterns and building
blocks. Lets take FutureLearn as an example this time.
11 http://smashed.by/oxfordstyle
Systemizing Perceptual Patterns 233
12 http://smashed.by/designingia
234 Chapter 9
DEFINE PATTERNS
Define patterns of usage based on the purpose and feel.
In FutureLearns interface we noticed that emphasis ani-
mations typically feel more playful, and that state change
transitions are more subtle and calm.
13 http://sarahdrasnerdesign.com/
14 http://smashed.by/animationdesignsys
Systemizing Perceptual Patterns 237
15 http://smashed.by/salesforcemotion
16 http://smashed.by/materialmotion
17 For a more detailed overview of the process, see my article Integrat-
ing Animation into a Design System. (http://smashed.by/animationala)
238 Chapter 9
18 https://tink.uk/
19 Take a closer look at the patterns in our language by Ellen de Vries.
(http://smashed.by/voicetoneinventory)
20 https://clearleft.com/
Systemizing Perceptual Patterns 239
DEFINE PATTERNS
Once the copy and other materials have been gathered,
define the patterns and formulate guidelines for how they
can be applied in the interface. MailChimps Voice & Tone21
is one of the most effective examples of how language
patterns can be defined. The tone shifts to respond to the
emotional condition of the user: when its appropriate to
be humorous and lighthearted (Fine piece of work), and
when the copy needs to take a serious practical tone (Were
expecting a problem at one of our data centers).
21 http://voiceandtone.com/
240 Chapter 9
Example of voice and tone patterns in Salesforce voice and tone guidelines
Systemizing Perceptual Patterns 241
Intuits voice and tone guidelines explain how to apply the principles.
22 http://smashed.by/intuit
242 Chapter 9
Summary
Each style should be approached as a system in its own right
typography system, layout system, color system, and so
on. They should be interconnected and directed towards
achieving a larger purpose: to help shape how a product is
perceived.
Chapter 10
Pattern Libraries
In this chapter well look at some practical techniques to set up foun-
dations for a long-lasting and multidisciplinary pattern library.
F
or some teams, a systematic approach to designing
and building digital products is almost unthinkable
without a pattern library. But as we've discussed
throughout the book, a pattern library is not the system
itself, it is a tool for documenting and sharing design pat-
terns. To be effective, it needs a system foundation at its
root. In chapter 7 we looked at some of the general strate-
gies for establishing such foundation:
It was often left to developers to fit the design with the existing pat-
terns, who had to tweak them until they fit. This led to numerous
if-statements, exceptions and duplicate patterns.
Mathias Wegener, front-end developer, Sipgate
Content
Looking back, at FutureLearn we spent far too much time
researching tools and working out what the pattern library
should look like. There wasnt full agreement on how it
should be designed and built, and the work progressed slowly.
Switching our focus to the content of the library made a big
difference both to our progress, and the teams morale.
246 Chapter 10
2 https://www.wework.com/
3 http://smashed.by/plasmads
Pattern Libraries 247
The team was able to get down all the core patterns and
their definitions quickly, instead of being held back by build
and design constraints.
Organization Of Patterns
When documenting the content, the question will likely
arise of how the patterns should be organized. The naviga-
tional structure is one of the things teams tend to struggle
to agree on. Should buttons be separate or grouped with
form elements? Where does the footer go? Should pagina-
tion be part of the navigation section?
248 Chapter 10
Alphabetical
In IBMs Carbon design system, Sky Toolkit and Lonely
Planets Rizzo (among others) components are kept in one
list and arranged alphabetically.
4 http://smashed.by/rizzo
Pattern Libraries 251
Hierarchical
Another way to classify functional patterns is in terms of
their complexity. Some teams separate granular elements
from more complex ones. The levels of granularity vary in
number and perceived complexity.
5 http://smashed.by/atomicdesign
252 Chapter 10
By Purpose or Structure
At FutureLearn we never stopped experimenting with
ways to organize modules: in one long list, hierarchically
(following atomic design methodology), by compositional
role on the page (intros, outros, heroes and bridges).
But everything was either too restricting, or too complex to
work with.
6 http://smashed.by/predix
254 Chapter 10
7 http://smashed.by/futurelearn
8 http://smashed.by/polaris
Pattern Libraries 255
Pattern Documentation
Although many things can be documented alongside each
pattern, trying to cover everything right away is not feasi-
ble, especially for smaller teams.
name
purpose
example (visual and code)
variants
Name
Throughout the book Ive tried to emphasize the impor-
tance of a well-chosen name. A good name is focused and
memorable, and embodies the purpose of the pattern.
Ideally, someone should be able to glean the purpose from
the name, without needing to read the description. To help
make the page more scannable, names should be prominent
and stand out from the rest of the content.
Purpose
When browsing a pattern library, most people skip descrip-
tions, especially long ones. Thats why they should be
focused and to the point: typically, one or two sentences
explaining what a pattern is and what its for is enough.
Example
A good example helps to enhance the understanding of the
patterns purpose. In Marvels style guide,10 examples are
self-documenting and show multiple variants and use cases.
The UI copy in the pattern helps guide usage further.
10 http://smashed.by/marvelds
260 Chapter 10
Marvels style guide makes it easy to see how different pop-overs behave.
Variants
Presenting variants alongside one another, as a suite, makes
it easier to see at a glance what is available within the pur-
pose. Not only that, we need to know how the options are
different from one another.
11 http://carbondesignsystem.com/
262 Chapter 10
Types of date pickers and the differences between them explained in Carbon.
12 http://smashed.by/fabric
13 http://smashed.by/ibmcarbon
Pattern Libraries 263
14 http://smashed.by/atlassian
264 Chapter 10
15 http://smashed.by/skytoolkit
16 http://smashed.by/polarisnav
Pattern Libraries 265
The GOV.UK style guide shows patterns of usage in their color palette.
17 http://smashed.by/pattern2doc
18 http://smashed.by/govuk
266 Chapter 10
19 http://smashed.by/usgov
Pattern Libraries 267
Cross-Reference Styles
Although we separate styles and components to make them
easier to work with, in practice theyre closely interlinked.
Even if there are duplications, referencing styles at the mod-
ule level, as well as separately, is useful. A button has many
styles that define what kind of button it is (color, shape,
style of label, transitions, spacing, and so on). At the same
time, some of those styles can be applied to other objects
menus, links, toggle controls. Sharing styles is what makes
those objects feel like they belong to the same system.
In Carbon, colors are referenced at both the module level and all together.
268 Chapter 10
20 http://smashed.by/flstates
Pattern Libraries 269
21 http://smashed.by/opentable
270 Chapter 10
Workflow
Teams with effective pattern libraries have systematic
approaches ingrained in their workflow. How, exactly, varies
across companies. Some teams, like Airbnb, have strict and
precisely specified processes with powerful tooling. Others
are much more informal.
23 http://smashed.by/shyp
274 Chapter 10
When following this rule, the whole team should take care
in how they define components and not make something
specific unless absolutely necessary. If someone introduces
a one-off, they should share it and explain why it is specific.
Occasionally someone else will find the module useful for
their needs. In this situation, wed redefine the pattern as
more generic and add it to the library.
In both cases its important that the systems team are seen
as partners, rather than police.
In the Carbon design system, names and folder structure are consistent
across the three facets of the system.
Tools
Keeping the pattern library in sync with production code is
one of the main challenges. Teams use different approaches
from manual copy-and-paste, to making a pattern library
part of the production environment (Lonely Planets Rizzo is
an example of the latter). Many tools help to achieve it. Here
are some of the most popular ones.
25 http://warpspire.com/kss/
26 http://patternlab.io/
280 Chapter 10
Its always slightly off-sync. If its too perfect, its not going to work.
27 http://smashed.by/fractal
Pattern Libraries 281
The challenge is making sure that the master kit always has
the latest patterns. There are many tools to help achieve that
from the lightweight to more comprehensive solutions.
28 https://www.sketchapp.com/
29 https://www.goabstract.com/
30 http://smashed.by/craft
282 Chapter 10
31 http://smashed.by/uxpin
32 https://brand.ai
33 https://www.lingoapp.com
34 http://smashed.by/lingoapp
Pattern Libraries 283
35 http://smashed.by/airbnbds
284 Chapter 10
Conclusion
In programming and design, Christopher Alexanders pat-
tern discipline has become one of the most widely applied
and important ideas. It is now influencing how many of us
think about design systems. But theres an essential feature
we may still be missing from Alexanders original idea: the
moral imperative to create systems that make a positive
difference to human lives.
See also:
3 http://smashed.by/timeless
4 http://smashed.by/thinksys
5 http://smashed.by/howlearn
6 http://smashed.by/makesense
7 http://smashed.by/fesg
8 http://smashed.by/atomic
9 http://smashed.by/rwdpatterns
10 http://smashed.by/inclusivedesignpatterns
288
Other Resources
Design Systems Slack channel,11 created by Jina Anne
Design system articles12 by Nathan Curtis
Style Guide Podcast,13 hosted by Anna Debenham and
Brad Frost
Design Systems Newsletter,14 curated by Stuart Robson
Responsive Web Design Podcast,15 hosted by Karen
McGrane and Ethan Marcotte
Website Style Guide Resources16
Thank you for reading. This book is really just the beginning
of a conversation about design systems. Im keen to con-
tinue it beyond the book, and would be happy if youd email
me at [email protected] with your thoughts and stories.
11 http://smashed.by/dslack
12 http://smashed.by/nathan
13 http://smashed.by/sgpc
14 http://smashed.by/dsnl
15 http://smashed.by/rwdpc
16 http://styleguides.io/