Laying The Foundations Smaller Compressed
Laying The Foundations Smaller Compressed
the
Found—
ations
Author and designer: Andrew Couldwell
Title
Con—
tents
II
VIII 20
Foreword Chapter 1:
Meagan Fisher Couldwell What is a design system?
Why are design systems important?
When do we need design systems?
Leading the way
10
Introduction
Real talk
Who is this book for?
26
The role of development in design Chapter 2:
Technology moves too fast for print Selling a design system
System design is not a scary thing Find your partners
Systematic design Laying the foundations
This book will help you and your team Start small, and adjust your pitch
accordingly
At what stage do you sell?
The importance and quality of ‘the sell’
A word on office politics
Contents III
38 80
Chapter 3: Chapter 4:
Laying the Foundations design system model
Putting up scaffolding Speaking the same language
The importance of brand in system design The Foundations Model
Marketing vs. product Foundations
Digital Foundations Components
— Mission, values, and principles Patterns
— Brand identity Templates and Pages
— Brand tone of voice and copywriting Design systems in product design
— Formatting A case study of a design system at work
— Accessibility and inclusivity Allow for flexibility
— Responsive design
— Process
— Design systems
How are brand guidelines different to
design system documentation?
Make it visible, make it count 106
Just get it done! Chapter 5:
Flaunt it
Getting started
Don’t lose sight of why you’re doing this...
Start by identifying the problems
Where do we go from here?
Be smart about which approach you choose
IV
114 140
Chapter 6: Chapter 8:
An Iterative approach Systematising the design
Find your team Set the system up for success
Interface audits You need a design system library
Colour audits Constraints are not a bad thing
Code audits Tools for the job
Visual audits Naming conventions
What now? Colour system
Managing the workload Guidelines for colour
The Frankenstein monster effect Limited text styles
Refinement vs. exploration Editable components
Cover all states of components
Pattern library
Design tokens and Sass variables
Designer access to code
Chapter 7:
A wholesale approach
Design exploration
Ground your work in reality
Building a visual language
Build and launch plans
It doesn’t have to be perfect
Wholesale design, and an iterative build
and launch
The disruption factor
Rolling out a design system, responsibly
Contents V
180 242
Chapter 9: Chapter 11:
Document everything! Maintaining a design system
More than a style guide Work with shared design assets
The basics Working with patterns
Better together Keep documentation up to date
Don’t leave documentation until last Keeping the design and code in sync
Document as you go Code as a design tool
What should you document? Keep your team in the loop
— Do’s and don’ts Guardians, ambassadors, and leaders
— Colour Closing thoughts
— Brand identity
— Typography
— Copywriting
— Components
— Patterns
— Don’t forget the small things 260
— Grid, layout, and spacing The author
— Design tokens
Andrew Couldwell
How do you document a design system?
Owl Studios
Getting started, the easy way
Club of the Waves
Living style guides
Acknowledgments
If not a Google Doc, then what?
Dedication
220
Chapter 10:
Gallery
Inspirational examples of great
documentation
VI
Let’s
get
star—
ted
Contents VII
Fore—
word
@owltastic
VIII
There are many reasons why I’m so excited that you’re holding this book right
now. To start, Andrew has years of experience creating design systems for
everyone from small, agile clients to big, complex teams — in fact, he was
doing “system design” long before we had a name for it, and well before it first
appeared in the growing list of skills which designers are required to know.
I, on the other hand, had long avoided thinking, reading, or talking about
system design because it sounded big and terrifying and complicated. But
conversations with Andrew about his approach made it feel simple, logical, and
(believe it or not) fun to do. I’ve been telling him for years that he should write
a book to help demystify system design for others, which is a big reason why
I’m so glad this book is finally in your hands.
If you think system design won’t work for your complicated team, or are
confused by the jargon surrounding it, or just want to take some small steps
today to be better at your job, this book is going to be a godsend for you. It’s
not written on behalf of any company, or to make anyone look good, so it’s an
honest and unflinching look at the challenges and rewards that come with
designing systematically.
This book covers — and goes beyond — the more commonly explored
topics surrounding how to create a design system. It also gives us a helpful
framework for how we can work together to create better experiences, and
shows us how to lower the barriers between different teams and roles.
Andrew often says “system design is really a term we use to talk about best
design practices.” The knowledge packed into this book will not only improve
the way you create experiences, it will also empower you to build stronger
teams and a better world. We can’t wait to see what you do with it!
Foreword IX
Intro—
duc—
tion
Introduction
10
This book covers what design systems are, why they are important, and how
to get stakeholder buy-in to create one. It introduces you to a simple model,
and two very different approaches to creating a design system. What’s unique
about this book is its focus on the importance of brand in design systems, and
creating documentation. It’s a comprehensive, practical guide that’s simple to
follow and easy on the eye.
I’ve been designing and building websites, working on products, and creating
design systems for over 15 years. During that time:
I’ve seen things go so wrong, so many times. I’ve learned from those
experiences, and worked with others to fix the problems we’ve encountered.
I’ve spent a lot of time learning, assimilating, and distilling all that I’ve learned
down to its simplest form. I’ve sold the value of simple system design thinking,
models, terminology, and values to designers, developers, and stakeholders.
After years of this, I’m left with dozens of Keynote decks, Google Docs, design
systems docs, style guides, design files, code, scars, bruises, lessons learned,
enemies, friends, and a head full of thoughts.
Introduction 11
This is real talk
about creating design
systems. No jargon,
no glossing over the
hard realities, and
no company hat.
Just good advice,
experience, and
practical tips.
12
Real talk
Perhaps my “real talk” approach is because of my roots: I was born and raised
in the industrious north of England, where people value hard work and plain
speaking. Or perhaps it’s all my experiences — good and bad — that have
shaped the way I think and talk about designing and building websites and
digital products.
I don’t like jargon. I like to keep things simple. Nowhere is this more important
than in system design, where communication and collaboration are essential.
The simpler you keep things, the more successful you’ll be. This is a theme
throughout this book, from the design system model and terminology, to
practical steps, to working with your team.
I could tell you how to design, build, and document a design system for
yourself, as a personal project. It would be awesome, but I doubt that’s a reality
for many people reading this book. Chances are you work on, or lead a team at
a company… Or you plan to.
I’ve been in the creative trenches, fighting for the designers and developers on
my team, the brand, and the users. I’ve defeated the odds to create beautiful
and meaningful work. It’s not always easy. In fact, it’s often very hard, and very
tiring. Sometimes it even feels hopeless, but perseverance and the arsenal of
knowledge you’ll learn in this book will set you in good stead to create the best
work of your career!
Selling, managing, and advocating are key to the success (or failure) of a design
system. You can design a system in a matter of days, but you won’t get much
Introduction 13
further without the support and collaboration of developers, product
managers, and other stakeholders. This book will help you reach and
collaborate with these stakeholders.
We’ll cover brand and digital guidelines, and how to create, document and
roll out a design system. This book will also prepare you for how to build your
team, and set your system up for success.
With any form of digital design — but especially system design — I encourage
you to discard this (lazy) notion of ‘the developers will figure it out’. Involve
developers. Get them interested in building the system with you, not after
you’ve finished designing it. We’ll talk about this more throughout this book.
That said: the supporting website (01) for this book includes links to tools,
resources, and articles relating to system design. They, at least, will remain
current.
14
System design is not a scary thing
A good place to start is to discard this notion that system design is a scary
process, or an exclusive club for the design elite. System design is nothing
new. Unlike responsive design, Sass, CSS Grid, or Flexbox — nobody invented
system design. It’s just a term our industry has given to cover the processes
and habits that lead to the most efficient digital design, development, and
management. That’s all.
Systematic design
It might be easier to view system design as ‘a systematic approach to design’.
A design system is the end result of a systematic approach to design. It’s the
harmonious package of design, code, guidelines, and documentation that’s
used to build consistent, on-brand, and efficient websites and products.
Every time you design a different (unnecessary) solution, you’re adding more
complexity to the code. This leads to legacy problems. Future edits will be
harder to make. Shipping new features or iterations will take longer. Page
load times will increase. The user experience can be diminished. You get the
picture.
01. designsystemfoundations.com
Introduction 15
You’re halfway there!
The good news is, you may already be designing systematically without even
realising that’s what you’re doing.
If you design systematically, you’ll be a better digital designer for it. You don’t
necessarily have to create a design system, to ‘do’ system design! Not every
project requires a design system. We’ll get into this more throughout this book,
but just keep in mind: even if you don’t need a design system, don’t currently
have one, or your company won’t grant you the time to create one, you should
still take a systematic approach to design.
* To clarify: by “stick”, I don’t mean permanently. All design choices are subject to
change and iteration.
This book will help you formulate and document the design choices you and
your team make. After all, a system wouldn’t be much of a system without
rules. Remember: the systematic design choices you make are no good just in
your head — especially if you’re working with a team.
You’ll learn about creating a design library of system elements that will enable
your design team to work quickly, efficiently, and consistently.
I’ll coach you on how to adjust your design system pitch to different
stakeholders at your company in order to gain the support and momentum you
need to succeed.
16
You can design a
system in a matter of
days, but you won’t
get much further
without the support
and collaboration of
developers, product
managers, and other
stakeholders.
Introduction 17
We’ll talk (a lot) about the importance of finding your team, and working
together to identify the problems in your product and processes — and
practical things you can do to fix them. We’ll even look at two different
approaches to these problems: an ‘iterative’ approach, and a ‘wholesale’
approach.
And throughout this book, I’ll share lots of real examples of design work,
documentation, and best practices to illustrate the concepts covered.
18
Thank you for reading my
book! I hope you enjoy it
and find it useful. If you do
like it, I’d really appreciate
it if you’d recommend it to
your friends, colleagues,
and followers :)
— designsystemfoundations.com
@andrewcouldwell
II nn tt rr oo dd uu cc tt ii oo nn 11 99
L A Y I N G T H E F OUN D A T I ONS
What
is a
Design
Sys—
tem?
01
20
A design system is hard to summarise. It’s perhaps easier to explain why
design systems are important, and what they help us to do, than to explain
exactly what they are. However, here’s my attempt at a definition:
Design systems bring order and consistency to digital products. They help
to protect the brand, elevate the user experience, and increase the speed
and efficiency of how we design and build products. They are a source of
truth and a system of record for our design decisions. They hold us to high
standards, keep teams on the same page, and help to onboard new team
members. They document the why, when, where, and how.
I should stress that the design, build, and ‘rules’ of a system are not set in stone
— they are a constant work in progress, open to iteration to improve, adapt,
and scale.
W ha t i s a d e s ig n s y s t e m ? 21
3. Creating stronger brands
Design systems help weave brand identity throughout a product in a
consistent and maintainable way. I’m a big believer that brand plays a crucial
role in design systems. This is why I recommend thinking and designing
holistically — considering the brand and product as a whole, as opposed to
tackling problems one-by-one and hoping the pieces will fit.
5. Organisation
Design systems keep our work organised, which makes everything easier
— from accessing common design elements in a master library, to using a
uniform approach for the structure and naming conventions in the code, to
ease of maintenance, iteration, and syncing of the design and code.
7. Source of truth
Design systems and documentation are a source of truth for the whole team.
A well designed, implemented, and maintained design system sets high
standards for your product and your process. Everyone becomes accountable
for upholding these standards.
22
be online for only a couple years before it’s replaced when change is needed.
There’s nothing inherently wrong with that process. It’s cost effective, simple,
and fast.
Design systems are especially useful when a team of people are working on the
same product. I can’t stress this point enough.
Quote taken from an article (1.1) by Karri Saarinen (1.2), a principal designer
on the Airbnb design team.
Startups are a little different. For startups, a design system can be a low
priority, because everything tends to be wide open to radical and fast changes
of direction. They rarely have the stability, security, budget, and timeframes
that established companies have. This isn’t to say startups shouldn’t be
designing systematically; they just need to be more realistic about their
priorities. That said… Start as you mean to go on! If you create a design system
from the start, you’ll avoid legacy problems later on.
A recent trend is to bring design and development in-house. And the larger the
company, the larger the product teams (for better or worse).
1.1. airbnb.design/building-a-visual-language/
1.2. karrisaarinen.com
W ha t i s a d e s ig n s y s t e m ? 23
there’s more that can go wrong. The expression: ‘too many cooks spoil the
broth’ becomes a little too real at times. Every member of the team has their
own preferences about what typefaces, colours, buttons, formatting, spacing,
frameworks, or naming conventions you should use.
When you work on a team, your design thinking is useless if only you know
about it, or if it’s disruptively different from the approach of your colleagues.
You need to work together in the same direction. As other chapters in this
book will demonstrate, a design system genuinely helps you to do this.
A successful design system liberates your team from reinventing the wheel.
It allows you to focus on what really matters: learning and improving digital
products to meet user and business goals. Heck, you might even create
something amazing that you’re all proud of!
24
Solving problems
is a big part of the
value proposition of
a design system.
W ha t i s a d e s ig n s y s t e m ? 25
L A Y I N G T H E F OUN D A T I ONS
Sell—
ing a
Design
System
02
26
So far, I’ve talked about all the advantages a design system offers, many of
which you’ve probably read about before. But before we get into design system
models — and how to go about creating a design system — I want to take a
minute to get real. Designers romanticise design systems in countless articles
online, and we make it sound so easy in our case studies. But the reality is:
Honestly, selling a design system could well be the hardest part of the process!
You need to convince a wide range of people — from the bottom to the top of
the chain of command — that it’s worth it. And it is, but I just listed a lot of
legitimate reasons not to create a design system! And these are just some of
the reasons why you’ll be told: “No”.
To avoid being told ‘No’, you need to learn how to teach the value of design
systems — and to earn the support and trust of stakeholders — or your design
system is going to go nowhere.
At this company, I had a partner in crime called Nick Stamas (2.1). Nick had
already started selling the idea of a design system before I came onboard. He
had a smart approach: rather than lead with: “let’s create a design system!”,
he gave presentations to a number of engineers from different product
teams about the advantages of a centralised code base, and promoted better
collaboration between designers and developers.
I was only an observer at these meetings. As a fellow design lead at the same
company, I had a vested interest in this presentation going well, and I was
gauging the response from the attendees. I recognised that this was the type
of support and interest we’d need — to inspire, and to build — from a range of
stakeholders.
In essence, Nick was sowing the seed of the idea of a design system by simply
S e lli n g a d e s ig n s y s t e m 27
highlighting common problems most developers can identify with and
tailoring his presentation to different teams. He was getting developers excited
about things they care about!
Aside from these presentations, Nick had made a start on a design system
which he called Plasma (2.3).
Nick’s early approach was to begin with code — not to mock up anything
in design software. He was building the bones of a code base in React by
documenting basic system components like buttons and form inputs. He
didn’t focus on design or style. Instead, he focussed on getting the basics
right, building strong foundations, and creating a semantic system for
naming conventions.
Over time, he shared his progress with developers , one-by-one , getting them
excited about it. He started inviting other developers to contribute. His intent
was to prove that a simple, consistent, shared code base could be integrated
and maintained effectively and efficiently within his team and product, and
ultimately across different teams and in different products.
Note: Nick’s advantage was his diverse development and design skillset. He spoke
the same language as engineers, which helped him pitch to them. Everyone has
their strengths. Play to yours, and your team’s. You don’t have to start a design
system in code. The important message here is to get people who will be involved
in the system excited about it! That often means proving your point, or earning
people’s trust.
2.1 nickstamas.com
2.2 uxdesign.cc/selling-a-design-system-at-your-company-74cb2bc97195
2.3 roomfive.net/plasma-design-system/
28
More than design and engineering
It’s important to note: in these early stages, Nick was also working with his
larger product team — including product managers and designers — to
identify problem areas in their products and processes that the design system
would address.
‘Finding your partners’ involves gaining support from all stakeholders, not just
designers and developers. We’ll come back to Nick’s story, and this process of
forging partnerships, throughout this book.
These Digital Foundations were intended to act as a source of truth for our
values and to guide the design, content, and build of all of the company’s digital
products. I based this work on the company’s existing brand book*, which had
been created with print and physical spaces in mind. After extrapolating what
could successfully be applied to digital, I went on to greatly expand it to cover
digital product requirements.
So naturally, after a period of shadowing each other’s work, there came a point
where Nick and I teamed up to collaborate on a design system. Nick directed
the engineering and planning, and I led the design and creative direction. We
S e lli n g a d e s ig n s y s t e m 29
combined the Digital Foundations with the product needs that Nick’s team
had brainstormed, and the code Nick had written. Working with these strong
foundations, it didn’t take long for an on-brand, problem-solving, and product-
focussed design system to take shape.
We’ll delve more into the process of creating a design system later, but for now,
you can read a design case study article (2.4) about the Plasma design system
described here.
It’s impossible to say whether pitching the design system from top-to-bottom
or bottom-to-top will work best at your company. It depends on the intricacies
of different work culture, politics, personalities, and hierarchies. Have a think
about which will be more effective at your company. And remember, the point
is to tailor your pitch to your audience. You want to excite as many people as
possible with all the ways a design system will benefit them.
Sell them on how a well-established design system allows for a faster, more
efficient shipping cycle. Convince them of how taking the time to create a
design system now will enable faster product releases and iteration, as well as
a better user experience going forward. In a ‘perfect world’, this increases the
potential for growth, sales, and analytics trending in the right direction.
2.4 medium.com/@andrewcouldwell/plasma-design-system-4d63fb6c1afc
30
And remember, a really successful system will also unify the teams working
with it, creating a healthier work culture, staff retention, and tool for recruiting
talent. The leaders in your company should care about these things!
Engineers...
...care about a unified code base, version control, consistency, performance,
organisation, efficiency, and naming conventions.
Sell them on how design systems will help bridge the gap between designers
and developers, and their positive impact on all the engineering factors they
care about. If you’re not comfortable speaking their language; work with a
developer on these engineering pitches.
Designers...
...care about aesthetics, brand, typography, colour, user experience, and
shipping beautiful products, which stay true to their original vision.
Get them excited about how great the end product will look! Anything relating
to the front-end being a ‘pixel perfect’ reproduction of their designs will
be music to their ears. Be careful not to scare the more visual designers on
your team , as some will view design systems as a threat to their creativity.
Instead, focus on how quickly and efficiently they can design with pre-defined
system components in their design tools of choice. The system will curb the
introduction of rogue elements like buttons and form inputs, freeing them
to focus on more interesting tasks like problem solving, layout, and user
experience. The best designers on your team will be excited about this, and it
will be a valuable learning experience for everyone else.
S e lli n g a d e s ig n s y s t e m 31
told me this person would be interested in the digital brand guidelines I was
working on, and could be a powerful ally for our design system initiatives.
With their advice, I contacted the executive, set a date/time/place for a
meeting, and started preparing this presentation.
This particular stakeholder didn’t know or care about what designers were
doing in Sketch, or how developers were refactoring code. The way to reach
this person was to pitch:
32
• How can you help us achieve this? (e.g. We need your endorsement. And
who else do you recommend we talk to, to make this happen?).
Prove to them how what you’re pitching helps the company, and makes us (i.e.
the stakeholder and the company at large) look good in the process! It’s hard
for managers and executives to turn down something that makes them look
good, when often all they have to do is say “Yes” and grant you an endorsement
and a few connections. It’s a win-win for everyone.
The key thing to understand is: selling a design system isn’t a stage of the
process. It’s ongoing. You need to always be advocating for the system, or it
will fail. Even — and perhaps especially — after you’ve successfully designed,
built, and integrated the system.
All it takes is a powerful stakeholder to come on board and decide they don’t
like a systematic approach to design, and the whole thing comes crashing
down. Believe me, I’ve seen this happen. However, if you’ve been gathering
support throughout the conception and creation phases, the design system
will have a better chance of weathering organisational changes and individuals
who oppose it.
At large companies with more complex hierarchies (and the politics that come
with that), I like to think of it as being well armed before going into battle.
You stand a much better chance of being taken seriously if you build up an
arsenal of data, problem statements, and industry examples to demonstrate
your points, as well as having the backing of a small army of supporters all
champing at the bit to get started.
S e lli n g a d e s ig n s y s t e m 33
If you believe in
design systems and
want to see one thrive
at your company, you
need a compelling
case that’s tailored to
your business, team,
and user needs.
34
It’s easy for higher-ups to say no. Very easy. As I mentioned earlier, creating
design systems can be involved, and therefore expensive to the company.
Sometimes, projects like design systems are rejected with good reason. The
more experience you get in the tech industry, the more you understand the
importance of saying no. Creating new things just for the sake of having
something new often leads businesses down the wrong path. Just as we
shouldn’t create new product features because one person ‘thinks it would be
cool’, we also shouldn’t create a design system ‘because everyone else is doing
it’.
So, if you believe in design systems and want to see one thrive at your
company, you need a compelling case that’s tailored to your business, team,
and user needs. This helps your stakeholders to make informed decisions.
In the “Getting Started” chapter we’ll cover how to build a compelling case
by investigating what problems exist in your product and team processes,
and communicating how a design system can help to solve those problems.
Matching problems to a potential roadmap of solutions can be a compelling
way to gain stakeholder support and turn “No” into “Yes”.
Your primary goal should be to rally those with pure motivations to join your
cause.
• For stakeholders who care about business needs; play up the speed of
iteration that comes with design systems.
S e lli n g a d e s ig n s y s t e m 35
• For designers who want to make something beautiful for your users;
advocate for the quality output that comes with a well-crafted library of
elements.
• For developers who want well-performing code; celebrate the efficiency of a
consistently designed interface.
It may also be possible to convince those who have selfish motivations that
a design system will make them look good, help them win an award, or gain
them the promotion they’re after — in which case they could become its
biggest champion. The point is to understand what’s driving your stakeholders,
and work with them accordingly.
It gets complicated.
This isn’t intended to scare you, but rather to provide a dose of reality from
the trenches of my real-world experience. As I said in the beginning of this
chapter, we romanticise about design systems, and we make it sound so easy.
Hopefully, now that we’ve explored some of the challenges of creating a design
system, you’ll be better armed to deal with them as they arise.
36
I admit selling a design system is hard work, and it’s not the sexy part that gets
shared on Dribbble or Medium, but it’s important.
In summary
• Start small.
• Be prepared.
• Identify the problems you’re trying to solve.
• Do some (enough) impressive design and build work to get people talking.
• Make friends and build a team of people excited to work with you.
• Come up with a cool name, and create a sexy presentation.
• Tailor your pitch according to your audience.
• Earn trust and support.
• Be an advocate and a guardian for the system, and inspire others to do the
same.
S e lli n g a d e s ig n s y s t e m 37
L A Y I N G T H E F OUN D A T I ONS
Laying
the
Found—
ations
03
38
It’s easy to explain how brands and products go astray, especially nowadays
with the trend of staffing huge in-house design teams with dozens of designers
and engineers.
Instead, we can use guidelines for our brand, design, and code — as well as a
clearly defined set of values and principles — to help us all work in sync.
My dad was a quantity surveyor; it was his job to evaluate building plans to
assess the risk and cost required to create a solid structure. In many ways
this isn’t so different to what I do as a web designer and developer. Perhaps
it’s because of his influence that I tend to think of my work in terms of
construction, and why I believe the phrase ‘laying the foundations’ is a great
metaphor for how we should think about setting up brands, products, and
teams for success.
In order for teams to work together to create great products, they need
a strong foundation to build on. Just as a building built on sand won’t hold
up as well as one built on stable foundations, a product built with a poorly
defined structure will quickly start to have issues. A solid set of guidelines
and principles helps us achieve the cohesiveness, sturdiness, confidence, and
scalability we need.
In this chapter, we’ll focus on how to create these digital brand guidelines and
principles.
Putting up scaffolding
I want to be as real as possible in this book, which is why I’m going to be
blunt for a minute. As design systems become more trendy, many design
articles and case studies give idealistic accounts of creating beautiful design
systems, and sometimes they pass over the ugly, gritty details. This can leave
many designers feeling like a systematic approach won’t work for their team,
because their team or product has too many issues to address. Perhaps you
can’t just start from scratch with a shiny new system, as many seem to do in
their polished case studies.
L ayi n g t h e f o u n da t i o n s 39
the foundations’, then build a beautiful ‘building’ (i.e. a design system and
product) upon those foundations. Other times, it’s just not that simple. You
may have to deal with a crumbling structure that’s already in place. Out with
the old and in with the new isn’t always an option.
Worry not. Whether you’re facing a nice empty plot of land, a wrecking ball,
or putting up scaffolding, the principles in this chapter will help you and your
team.
You likely don’t want to use an open-source design system because it doesn’t
communicate your brand story effectively. It might have everything you ‘need’,
but you want to create something that gives your brand a unique, strong, and
focussed voice to set you apart from your competitors.
Let’s look at a scenario where brand guidelines and design systems work well
together.
3.1 getbootstrap.com
40
Brand foundations
help to keep
everyone on the
same page, speaking
the same language,
and working as
a team — rather
than a collection of
individuals doing
their own thing.
L ayi n g t h e f o u n da t i o n s 41
FIG 3.1 Dropbox brand
42
Take Dropbox, for example, the bright colours, extreme spacing, large buttons,
and dramatic typeface Dropbox use in their brand (fig 3.1) and marketing
website (fig 3.2) wouldn’t work in their product.
Dropbox’s marketing website is loud and confident, but their product succeeds
by running quietly in the background — simply and efficiently. The last thing
their product should be is loud, so it uses lighter colours, more compact
spacing, smaller buttons, and a more reserved typeface, as seen in fig 3.3.
The threads that tie these different assets together need to be documented.
They are the brand foundations — the pillars that run through each floor of
your building, holding the whole thing together. Brand foundations help to
keep all designers and engineers at a company on the same page, speaking the
same language, and working as a team — rather than a collection of individuals
doing their own thing.
Digital Foundations
I call these digital brand guidelines “Digital Foundations”. Digital Foundations
are different from traditional brand guidelines, for reasons I’ll go into shortly.
Why give them the name Digital Foundations? Because it’s memorable. It
differentiates digital assets from other brand assets like print materials or
your company’s physical space. It helps to reinforce the idea of ‘laying the
foundations’ for creating great products, and it works with our design system
model*. Digital Foundations govern much of the foundational layer of the
model, and guide the design of components and patterns too.
* We’ll delve into the design system model in the next chapter.
Traditional brand guidelines typically cover the do’s and don’ts of logo, colours,
art direction, brand values, and tone of voice. They are applicable to everything
L ayi n g t h e f o u n da t i o n s 43
a company does. Some companies might publish these guidelines in a ‘brand
book’. Some companies produce a simple PDF.
Digital is different. The same principles we apply to physical spaces and print
mediums don’t always work for digital, and there are some considerations that
only affect digital. Factors like accessibility and user experience impact things
like the colours we use (e.g. blue for navigation, red for errors, and green for
success, etc.). There are other considerations such as typography, animation,
grids, responsive design, different platforms and operating systems,
localisation, formatting, animation, load times, etc. which are unique to the
digital experience.
Where a brand book typically comes in print or PDF forms, the ever changing
nature of digital experiences requires a more — well — digital approach.
Digital Foundations are better suited to a dynamic, accessible, and easily
editable digital form. Some companies choose to make their digital brand
guidelines public, and we’ll look at a few of those in a bit. Others are private —
for employee eyes only.
44
Mission, values, and principles
Everyone who works at your company should be aligned on what your
company does, its core values, and its mission. Who is your target audience?
What are your design and engineering principles? You want to align your team
with a common vision, set of standards, and way of thinking.
Mozilla has a page introducing their brand, mission statement, what they
stand for, and their design principles (fig 3.4).
“Mozilla is the champion for a healthy internet, one that is open and
accessible for all, both technologically and culturally.”
L ayi n g t h e f o u n da t i o n s 45
Firefox, a product of Mozilla, builds upon its parent company’s brand with
their own design values tailored to their products (fig 3.5).
“As we design new features for our existing products, and create new
products, we find ourselves asking — is this Firefoxy? Is what we’re
making a clear expression of what it means to be Firefox?”
While it’s not sourced from digital brand guidelines (or design system
documentation), I’d be a fool not to share the following stellar example of
mission and values in a digital space. Basic, a design agency in the United
States, created a website called Basic Culture (fig 3.6), dedicated to sharing
their ‘Culture Manual’. While the content is intended for internal purposes,
it’s very much a statement to the outside world of ‘we do awesome work, come
work with us!’. Aside from the beautiful and memorable design and quirky
animations, they confidently state their mission, values, and philosophies in a
memorable and inspirational way — what better way is there to present such
content?
“Do work you’ll be proud of. Work hard while doing it. Have fun,
always. Don’t wait for permission. Be bold and try things. Mistakes
46
FIG 3.7 “How we think”
L ayi n g t h e f o u n da t i o n s 47
Creating values and
standards as a team
is a great way to open
up a positive dialogue
and momentum that
you can take into
future design system
initiatives.
48
happen. Learn from your mistakes. Be real. Be better. Love what you
do.”
The content you define in this section of your Digital Foundations has to
come from somewhere. Perhaps your company already has something similar
for the brand and company at large. If so, you should also document these
values and make them accessible to your team — it all helps to foster a better
understanding of the company you work for. But consider that any existing
brand values may be written with consumers, business objectives, and the
physical world in mind. You might want to write new values specific to design,
product, technology, and a digital audience.
Brand identity
Your brand identity covers everything from your logo, to typography, colour,
tone of voice, photography, illustration, creative direction, motion, and so on. It
answers questions such as:
Uber Design (fig 3.9) has a comprehensive case study page dedicated to their
brand identity covering all of these topics, which forms the basis of their
digital, print, and physical design systems.
L ayi n g t h e f o u n da t i o n s 49
Brand identity is about more than just making things look good. The colours,
words, typefaces, shapes, graphics, and motion you use — and the way you use
them — can make your brand more or less accessible, memorable, or relatable.
Brand identities heighten the user experience, and create a familiar and
consistent identity.
My personal project, Club of the Waves (fig 3.10), is a website with a simple
purpose: to showcase artists and photographers whose work focusses on
surfing and surf culture. The simplicity of the concept is reflected in both it’s
brand identity and design system. The brand uses just three colours:
In the design system, these brand colours translate to section colour, links,
buttons, the logo, hover states, filters, accent colours, and so on.
I should say — while the brand colours dictate meaning as an aid to the user
experience and an embellishment — they are not required for understanding
or navigation. Users can easily navigate without awareness of these colours (if
they were, say, colour blind, or just don’t pick up on the meaning). Accessibility
considerations like this are an important distinction between Digital
50
Foundations and traditional brand guidelines — as we’ll look at more in depth
later in this chapter.
L ayi n g t h e f o u n da t i o n s 51
white space, clean design, logo, iconography, motion, colour, and typography
make their brand instantly recognisable. Google wrote a great account (3.2) of
how they designed their brand, and how it’s intended to be used systematically
across their various products.
“A new brand identity that makes Google more accessible and useful
to our users — wherever they may encounter it.”
We’ll cover documenting brand identity later in this book. In the meantime,
just know that having strong guidelines for your brand identity is a vital piece
of your Digital Foundations.
This interesting interview (3.3) with Molly Young (3.4) describes Warby
Parker’s “robust creative vision” when she joined them, and how that vision
52
defined the tone for their copywriting:
“It [the Warby Parker brand] was very literary, and quirky, and fun.
They had mood boards with a very specific bike, and a very specific
edition of a book, and a calendar that they really liked the graphic
design of. There was very specific reference points. They would
describe it to me as: ‘Warby Parker is the person you want to sit next
to at a dinner party. They are funny and smart, and they get up to do
the dishes.’”
As their ‘Director of Copy’, Molly worked with Warby Parker’s design team to
translate this creative vision into brand copywriting guidelines.
I like this approach. Copywriting starts with brand identity and vision and is
interpreted into a practical guide for its application in a digital product. These
guidelines help to create more user friendly and on-brand experiences.
“If you put them [designers and copywriters] next to each other,
they’ll be looking at each other’s screens and asking each other
questions, and interrupting each other, and learning from each
other. Once a copywriter knows how a designer thinks and vice
versa, you can work together really seamlessly.”
I think this is great advice; much the same as I believe designers and
developers should sit and work together. Don’t segregate your teams. Have
them work together and benefit from each other’s expertise.
Another excellent article (3.5), Words Shape Design by Joscelin Cooper (3.6) at
Airbnb, also describes the importance of copywriters and designers working
3.2 design.google/library/evolving-google-identity/
3.3 link.medium.com/MlRsSmQABX
3.4 molly-young.com
3.5 airbnb.design/words-shape-design-2/
3.6 linkedin.com/in/joscelin-cooper-0262191/
L ayi n g t h e f o u n da t i o n s 53
together. Joscelin dispels the common (and unfortunate) expectation that a
copywriters role is to:
Joscelin advises designers and project leads to involve writers early. Ideally,
projects should start with a “content kickoff ”:
Just as new design projects benefit from early considerations for voice and
tone, so should the creation of your Digital Foundations that will in-turn guide
all future digital content and design projects.
As well as defining your brand tone of voice and personality, it’s good practice
to define a shared vocabulary.
The Digital Foundations I created for WeWork include guidelines for brand
terminology, so the team consistently uses the same language across all
properties (fig 3.13). For example, all companies have ‘customers’ of some
variety, but not all brands like to refer to them as “customers” or “clients”;
instead they may use friendlier, more ‘human’ terms like: “members” or
“guests”. A popular example is using “team” instead of “staff” or “employee”.
Disney refer to their theme park employees as “cast members”. I’m sure your
company has its own preferences… If so, document them so your whole team
knows about and uses them. This piece of your Digital Foundations will be
especially helpful for onboarding new team members, as learning the lingo of a
new company can sometimes be daunting.
54
FIG 3.12 atlassian.design/guidelines/brand/personality
L ayi n g t h e f o u n da t i o n s 55
Formatting
In addition to tone and vocabulary, your Digital Foundations should include
guidelines for formatting. For reasons we’re about to examine, being
consistent with punctuation, abbreviation, and language choice is vital for user
comprehension and team collaboration.
Without a source of truth, your team may be unsure about something as basic
as how to format a headline. Speaking from experience, you wouldn’t believe
how much friction a question like: “do we use sentence case or title case?” can
cause across teams! Shakes head, remembering.
The next few example images (fig 3.14 - 3.18) are excerpts from Digital
Foundations I’ve written in the past, including guidelines for writing
everything from copy, titles, form labels, and calls to action. The screenshot
above (fig 3.14) is just one small piece of this documentation; it focusses on
explaining when to use sentence case versus title case in various product
scenarios.
56
Formatting guidelines could also answer questions such as:
To you, these questions may seem inconsequential, but when you’re part of a
diverse team with varied (personal) approaches to writing, the answers may
not be obvious to everyone (fig 3.15).
For example, I live in the United States, but I’m from England. Although a good
deal of my audience are undoubtedly in the United States, I made a decision
to write this book in my native British English because this book is available
worldwide, where British English is more commonly used. If this book was
exclusively a digital product, I might decide to use American English for my
audience in the United States, and British English internationally.
These things may seem trivial to some people, but if you’re a San Francisco
based company with a good deal of your audience outside of the United States,
you should think about your approach to language and have guidelines in
place.
L ayi n g t h e f o u n da t i o n s 57
Formatting date and time
An important factor to consider with international audiences is that the
United States, Europe, and Asia all format things like date, time, and currency
very differently. Don’t make the mistake of assuming your international users
will perceive everything the same way you do.
• The United States puts the month before the day (MM/DD/YYYY).
• Europe puts the day before the month (DD/MM/YYYY).
• Asia puts the year before the month and the day (YYYY/MM/DD).
Take my birth date for example (presents welcome): where I’m from (England), I
would write my birth date as:
58
But in the United States, I would write:
Also, notice I wrote “th” after “24” in the first example... It’s common practice
in the United Kingdom to add an ordinal indicator (e.g. 2nd, 3rd, 4th) after an
ordinal number (i.e. a date), where it’s less common to see ordinal indicators
for dates in the United States.
As for time: the United States (U.S.) is one of the only countries in the world
not to use the 24-hour clock (they use the 12-hour clock). Those not living in
the United States would understand that 09:00 is 9 in the morning, where
21:00 is 9 in the evening — but a good deal of people in the U.S. would need
to see 9:00 a.m. or 9:00 p.m. to make sense of these times. This is important,
both for companies in the U.S. building products that are used abroad, and for
companies outside of the United States targeting a U.S. audience.
Similarly, the east and west coasts of the United States are in different time
zones. If your target audience is nationwide in the U.S., being specific about
time is important. If you state that a game kicks off at 7:30 p.m., but don’t
specify 7:30 p.m. EST (Eastern Standard Time), your audience on the west
L ayi n g t h e f o u n da t i o n s 59
coast (in the Pacific Standard Time zone) are gonna be pretty mad when they
tune in 3 hours too late!
Time and date are tricky. There are so many different ways you can represent
both. When we look at something called ‘interface audits’ later in this book,
you may be surprised by how many different formats you find in your product
for time and date. If you’re referencing time, for example, you could write:
• “1 hour ago”
• “1 hr ago”
• 1h ago
• 1h
A quick browse through several news websites shows how many different
formats are used to express the exact same time and date. The following
examples are real:
• Feb 1, 2019
• February 01, 2019
• 1 February 2019
• 1st February 2019, 4:04 pm
• February 1, 2019, at 4:04 p.m.
• February 1 2019, 4:04pm
• Feb. 1, 2019 4:04 p.m. ET
• Feb. 1, 2019, 4:04 PM EST
• Fri 1 Feb 2019 16.04 GMT
• 4:04 PM ET, Fri February 1, 2019
• 16:04 EST, 1 February 2019
Given that there are so many different ways to format things like dates, times,
numbers, and currency; including do’s and don’ts and example scenarios in
your Digital Foundations can provide a valuable distinction for clarity sake.
The Google Material documentation (3.7) also has a section on best practices
for formatting date and time.
Now that you’ve got a better sense of the importance of documenting these
seemingly small details, I hope you’re motivated to include formatting
guidelines in your Digital Foundations.
3.7 material.io/design/communication/data-formats.html
60
Don’t assume your
international
audience perceives
everything the same
way you do.
L ayi n g t h e f o u n da t i o n s 61
Accessibility and inclusivity
Ideally, your company should already understand the importance of
accessibility in their digital products. If not, I recommend reading: Planning
for Accessibility (3.8) by Laura Kalbag (3.9), which outlines a number of
considerations to ‘make the case for accessibility — to yourself, coworkers,
bosses, and clients’. Laura has also written a book (3.10) on accessibility. And
I put together a list (3.11) of accessibility resources and tools on this book’s
website that you may find useful. So now you have no excuses! ;)
Maybe you’re not sure why accessibility and inclusivity are that big of a deal?
Well, consider that accessibility isn’t just about disabilities and impairments,
but also people of different ages (young and old), and people who speak a
different language. We’re talking about a potentially very large audience!
There are several business benefits to creating more accessible products. For
example:
• A more accessible e-commerce product will have fewer sales fall through,
and fewer community support and help enquiries and complaints.
• You could expand your reach to a larger audience, giving you a competitive
edge over your competitors.
• If nothing else, you probably care about not being sued for discrimination!
Depending on the countries and/or industries you operate in, an accessible
site may be required by law. Think about shops providing disabled access
via ramps and lifts/elevators, as opposed to (or in addition to) steps… Your
online shop is not so different.
• Use of colour. Think about colour blindness. The contrast between text and
background colour can affect the legibility and visibility of text.
• How do you distinguish links, warnings, and changes of state? If you’re
relying only on a change of colour to indicate something, be aware that
some people won’t see that change of colour. Instead, try more explicit
states — and changes of state — like an underline, or a different weight/
size/position.
• Form inputs should always have a label. Without a label, an input (on its
own) is most likely meaningless to a screen reader.
• If you use icons on their own, without an accompanying text label — what
does the icon mean? This is as much a user experience, cultural, and
common sense thing, as it is an accessibility issue.
• Think about people who use screen readers, or navigate websites with a
62
keyboard, as opposed to a mouse or trackpad. Not everyone navigates and
consumes content the same way.
• Do you rely on sound to convey something important? Not everyone can
hear.
When we talk about accessibility and inclusivity, we’re not just talking about
designing for disabilities and impairments, we’re talking about everyone.
3.8 alistapart.com/article/planning-for-accessibility/
3.9 laurakalbag.com
3.10 abookapart.com/products/accessibility-for-everyone
3.11 designsystemfoundations.com/resources/
3.12 jnd.org
3.13 fastcompany.com/90338379/i-wrote-the-book-on-user-friendly-design-what-
i-see-today-horrifies-me
L ayi n g t h e f o u n da t i o n s 63
If you haven’t put any accessibility standards in place already, you should
research what you can do, start a discussion with your team, review your
products, and take steps to improve your product’s accessibility. It’s a
fascinating subject, and you may be surprised at what you learn and how much
of a difference you can make.
64
Use your Digital Foundations to document your standards, raise awareness
by educating your team on accessibility issues in digital design, and write
guidelines for how to design for accessibility.
Microsoft has a comprehensive page (fig 3.18) in their digital design guidelines
on their dedication to inclusive design, including their principles, resources,
toolkits, and case studies.
Small changes can make a big difference. Consider making inclusive design a
part of your team’s design and product thinking.
Responsive design
Hopefully, you and your design team are already working ‘responsively’, but
if you’re not sure what I mean by this, don’t worry — you’re not alone. I’ve
worked on many teams where some of the designers weren’t sure how to
design with different browser widths and/or devices in mind. If this describes
you, or someone on your team, pause here to read — or recommend — my
article (3.14) on responsive web design, which covers best practices for
incorporating responsive web design into your design process.
Google Material (fig 3.19) does a great job of documenting the makeup of their
responsive layout grid by clearly defining the makeup and terminology of a
responsive grid.
3.14 medium.com/owl-studios/responsive-design-af7a1f14b991
L ayi n g t h e f o u n da t i o n s 65
FIG 3.19 material.io/design/layout/responsive-layout-grid.html
66
Process
Document your design, engineering, and even interviewing processes so
everyone knows what is expected. You might even document things like
naming conventions for files and folder structure, to keep things organised.
How does your team approach a design problem, and answer questions like:
You should have a clear process for making iterations or additions to a design
system, so everyone knows things like:
If you’re not sure of the answers to these questions, then that’s proof you need
to discuss these topics — and document the answers and processes you agree
on (i.e. your Digital Foundations) — with your team. Anything you can do to
align your team on process is a good thing. Think about the benefit to new
team members who need to rapidly familiarise themselves with your team’s
processes, or how a source of truth will help align your team on design process
and workflows.
Design systems
Your Digital Foundations are guidelines for all the best practices that fall
outside of — and dovetail into — your actual design system(s), such as brand
identity, tone of voice, process, etc. Relating to design systems, your Digital
Foundations should be a source of truth and answer questions like:
• Does your team follow a specific model or methodology for design systems?
In the next chapter, I’ll introduce you to a simple design system model. If
you choose to follow that model — or for whatever methodology you use —
you should outline it in your Digital Foundations, so everyone is on the same
page.
L ayi n g t h e f o u n da t i o n s 67
• Do you use specific terminology to describe different aspects of your design
system?
• Why are design systems valuable to different teams at your company? You
could repurpose any pitches you’ve used while ‘selling your design system’,
as referenced in the previous chapter, to empower other team members to
advocate for the adoption of design systems.
Your company may have more than one design system (one for marketing
websites, one for mobile apps, one for employee-facing products, one for
customer-facing products, etc.), so these guidelines should be general enough
to set the foundation for all your design systems. To unify them under one
brand, and to ensure when your teams collaborate across different products,
teams, and departments, that they are speaking the same language — using
the same vocabulary and methodologies. From these Digital Foundations for
design systems, you can also link to any design system documentation and
resources, if applicable.
For example, IBM’s Carbon design system (fig 3.21) was built upon the
foundations of their “IBM Design Language” (fig 3.20) brand guidelines.
Once their “IBM Design Language” guidelines (or their version of Digital
Foundations) were in place, they had a strong foundation on which to build
their design system.
68
FIG 3.20 ibm.com/design/language/
The way you present or document these guidelines, values, and principles will
L ayi n g t h e f o u n da t i o n s 69
have a big impact on their adoption. It might be smart to brainstorm with your
team how to proceed. Get them involved and excited about it.
Percolate, a marketing platform in New York City, put up posters (fig 3.22)
around their office as a reminder of their values.
Your brand, design, and engineering principles are the mantra that guide
everything you do. They are the driving force and inspiration. With every
foundation, component, pattern, template, web page, or banner you design,
and with each header and paragraph you write, ask yourself: “Does this align
to our brand principles?”
70
FIG 3.23 focuslabllc.com/standards
Focus Lab, a design agency in the United States, created a series of posters
(fig 3.23) highlighting their design standards and hung them prominently
around their studio space.
Presenting design guidelines in the real world — in poster form (fig 3.24), a
desktop calendar, a sketchbook, a coaster, a desktop/phone wallpaper, and so
on — might be a brilliant way of getting people to notice and remember.
L ayi n g t h e f o u n da t i o n s 71
FIG 3.24 Posters reminding team of their design values
My former colleague, Keaton Price (3.15) came up with a cool idea to reinforce
our design team’s values — by presenting them as an award (fig 3.25). He
designed a beautiful postcard, and distributed a limited number of these cards
to each team member. The idea was: if you experienced a member of the team
exemplifying one of the team’s core values, then you would tick the value(s)
they exhibited, write them a personal message, sign it, and present it to them
as an award. I can tell you from the perspective of someone who both received
and gave these awards that it was a great feeling, and did wonders for team and
personal morale too! It put a smile on someone’s face, showed gratitude and
team spirit, and reinforced our team’s values. Win-win!
3.15 keaton.design
3.16 google.com/docs/about/
72
And it doesn’t just have to be stating standards and values. You could get
creative — presenting other foundations like brand colours, typography,
formatting reminders, art direction, and so on.
My solution seemed so simple, yet so effective. I just opened a new Google Doc
(3.16), and started writing. The content flowed out, free from the distraction
of design software or code editors. Plus, a Google Doc is easy to share with
your team; they can contribute, comment, suggest edits, and invite more team
L ayi n g t h e f o u n da t i o n s 73
members to join. It’s easy to reference from anywhere, on any device, even
offline. It does almost everything you need it to do!
Of course, it’s hard to get excited about a Google Doc. So in the longer term,
the Digital Foundations evolved into a more visually compelling and engaging
entity (as a website), but the Google Doc did its job well, for a long time. It’s
worth considering.
Again, don’t let technology or design ego stand in the way of getting your
Digital Foundations produced and out there with your team. The longer they
stay unwritten, the longer your product woes will persist.
We’ll talk more about Google Docs in the “Document everything!” chapter,
later in this book.
Flaunt it
It’s not uncommon for companies to make their Digital Foundations or
design system documentation public. This may seem like a strange decision…
74
FIG 3.27 uber.design/case-studies/rebrand-2018
L ayi n g t h e f o u n da t i o n s 75
It’s kinda like putting an instruction manual online for everyone to see, for
something only you use. However, it actually has its advantages.
Digital Foundations are the best and most idealistic representation of your
brand. They are what your company aspires to be, what it wants to look like,
and how it wants to make people think or feel. Presented well, they can paint
a brand in a positive light. They can even paper over the cracks — and let’s be
honest, some tech companies need any good press they can get! Design can
offer these companies a great opportunity to look good in the public domain.
Internally, the objective should be to align your team(s) on how you design and
build products.
Externally, it’s showbiz. It’s a confident move. It says: ‘We’re proud of the great
work our team does. We’re awesome. Come work with us!’ And it works!
Digital Foundations can be a great recruiting tool, and they can be great for
public relations. They can be beautifully designed, sexy, colourful, loud, or
animated. They can make the company look awesome, and they’re a great
talking point on social media and in design case studies.
Uber Design (3.17) hired outside help from a respected design agency, Ueno
(3.18) to help create and publically showcase their brand guidelines. Together
they created a splashy website (fig 3.27) to really maximise their impact and
reach.
MailChimp Design (fig 3.28) opted for a simpler, one-page website to showcase
their 2018 redesign/brand. It’s part business promotion, part flexing design
muscle, and part recruitment tool. This approach can cost very little to do if
you do it internally.
Airbnb Design (fig 3.29) and Microsoft Design (fig 3.30) both do something
like this.
3.17 uber.design
3.18 ueno.co/work/uber-design
76
FIG 3.29 airbnb.design
L ayi n g t h e f o u n da t i o n s 77
Don’t lose sight of why you’re doing this...
Publishing your Digital Foundations for the world to see is a choice. It can be
great for public relations, and it can be a great recruitment tool. But the most
important thing is that you lay these foundations internally at your company
for the benefit of your team(s) and your product(s). Outside attention is not the
core reason for doing them.
And keep in mind that the public brand guidelines you see online may be
more for show than anything — so by all means use them for inspiration, but
don’t lose sight of your team’s particular needs, or let your desire to create
something flashy get in the way of creating something useful.
With your Digital Foundations laid, let’s look at creating a design system!
78
The more
accessible your
Digital Foundations
are, the more likely
your team are to
adopt, understand,
and even (ideally)
contribute to them.
L ayi n g t h e f o u n da t i o n s 79
L A Y I N G T H E F OUN D A T I ONS
Design
system
model
04
80
The previous chapter talked about laying strong foundations for digital
products at a company by establishing digital brand guidelines. With those
foundations in place, we’re ready to start building an on-brand design system
that combines our brand and digital guidelines with the user and business
needs.
Let’s start with the basics by defining some terminology and looking at a
simple model for creating design systems.
Speaking the same language is very important when working with teams.
Communication is hard enough without adding different definitions for
different design system terms to the mix. So at the very least, you need to align
on what terminology you’re all using.
One thing to always keep in mind: the less jargon you use, the better.
Also, the simpler the language you use in your design system model, the
easier it will be to communicate. As covered in the previous chapter, you
should define the (design system) terms your team is using in your Digital
Foundations, or at least in your design system documentation.
For example, you may have heard design system lingo like: foundation,
component, pattern, atom, molecule, and organism. But the thing is: after
you’ve read a few articles and spoken to a few different people, you realise
that people draw their own conclusions as to what each term means based on
their use in a variety of different contexts. With an industry the size of tech
— spanning international borders, languages, and cultures — it’s easy for the
meaning of terms to diverge.
D e s ig n s y s t e m m o d e l 81
This confusion is unavoidable, industry-wide. But it is avoidable on your
team(s). It’s an inefficient use of time and a frustrating experience for all to
have to continually explain terminology to people and then debate which
term is better, so it’s important your team(s) align on a model, and a shared
language. The same goes for any naming conventions used in the design and
code of a design system.
I’ve made the mistake a few times of dropping design system lingo into
conversations where there wasn’t a shared understanding of terminology, and
it’s caused confusion and frustration. The lesson I learned is not to assume
everyone knows what you know. It’s a simple and somewhat obvious lesson,
but we’re all guilty of it in one way or another.
I made this mistake again, later, when I assumed the engineering team(s)
would know all about design systems, and that they’d be totally on board with
the concept. I was wrong, at least about the knowing part.
I remember having a productive and enthusiastic chat about our plans for
creating a design system with an Engineering Lead. He got it. Everything. We
we were on the same page. But I was somewhat surprised when the meeting
ended with him asking me to schedule a presentation to our engineering
teams, which, at the time, was dozens of people scattered around the planet!
He asked me to explain to them what design systems are, to introduce them
to the model and terminology, and to help them understand why we should
invest time in any of it.
82
It’s important
your team aligns
on a design system
model and a
shared language
that everybody
understands. The
less jargon you use,
the better.
D e s ig n s y s t e m m o d e l 83
Thankfully the presentation went well. Aligning everyone on the same page
got them excited about the project, and helped me earn their support. I was
also able to answer any questions, dispel any concerns, and gain a lot of
momentum.
I came across the term ‘foundations’ a few times in my research. Its use
84
case was a little different every time, but as I mentioned in the previous
chapter, I thought it was a great analogy for how to approach system design.
In construction, foundations are crucial to a building’s stability, quality, and
longevity — and the same applies to building digital products. To reiterate
what I said earlier:
A building built on sand will only stand for so long. You need to lay strong
foundations, before you build anything.
In line with keeping things simple and easy for people to understand, it’s
helpful to think in visual terms. You could look at the design system model
(fig 4.1) as a building made up of building blocks. Each level expands upon,
integrates with, and is built upon the level below.
It’s also important to consider: there are many other factors involved in the
process of creating or iterating on a design system (fig 4.2). User experience,
data, accessibility, content strategy, localisation, user testing, and brand
should all be interwoven in every level of your design system model. They are
D e s ig n s y s t e m m o d e l 85
the glue, the cement, the beams, and the pillars that hold the model together,
and make it great.
Let’s get into what each level of our design system model is.
Foundations
As we covered in depth in the previous chapter, your Digital Foundations
should be the basis for every digital project you do, including your design
system(s). Foundations are multifaceted and arguably more extensive than the
other levels, which is why they warranted their own chapter. There’s a reason
the model is named after this foundational layer.
Digital Foundations also go beyond brand to span design and code issues, with
guidelines for calls to action and links, layout and spacing, formatting of date,
time, and currency, localisation, responsive grids, animation, and accessibility.
86
Foundations can be extensive or brief, depending on the size and complexity
of your product suite. As I mentioned in the previous chapter, your Digital
Foundations are guidelines for things (such as brand values, logo treatment,
formatting, etc.) that cover all your digital properties. However, other aspects
of your foundations may only be specific to one digital property — for
example, your company’s marketing site may use a responsive grid, but your
desktop or mobile app/product may not. Or, it’s not uncommon for different
digital properties to use fonts unique to them (think back to the Dropbox
example in the previous chapter). In these cases, you may have foundations
that are unique to the design system created for each digital property. Be
sure to include any property-specific guidelines — along with the company-
wide Digital Foundations you’ve already created — in your design system
documentation.
Components
These are the smaller building blocks of a digital product. Components are
D e s ig n s y s t e m m o d e l 87
distinctive user interface (UI) elements that are used repetitively throughout
a product. For the most part, they are actionable or at least used to convey
meaning.
It’s good practice to not get too carried away with creating completely bespoke
components — for the most part, there’s rarely a need to reinvent the wheel
with these. There’s a good reason why selects (i.e. a form input with an arrow,
which opens a dropdown menu on-click) look the same on most websites:
people can instantly identify their function. This commonality, consistency,
and familiarity in digital interfaces are important, not boring. Using
conventional components (that aren’t ‘overstyled’) makes sure that inputs and
actionable items are instantly recognisable to users. It also makes it easier for
developers to build an accessible and consistent solution that works across a
variety of devices and browsers which isn’t too complicated or code heavy.
Patterns
These are the larger building blocks of a digital product. Patterns refer to
recurring or ever-present elements or practices throughout a product. A
pattern can often be comprised of established foundations and components
88
— for example, a card pattern may feature a header and a description, using a
couple of different text styles (foundations), and a button (component).
FIG 4.7 Patterns example: simple modular layout of image and text
Patterns can also refer to less tangible factors, such as your philosophy for
D e s ig n s y s t e m m o d e l 89
how pages and content should load, your use of error states and animations, or
what happens with empty states, onboarding, and guiding tips throughout a
product.
Patterns are often modular, meaning they’re designed to pair well with other
patterns to tell marketing stories, sell products, present content, cross-sell,
and so on.
90
Let’s look at these two new layers in depth.
Templates
In digital terms, a template is a consistent layout that is used multiple times
throughout a website, and are populated with different content each time
they’re used. Common examples of templates include an article or a blog post.
Consistency in web design is important for good user experience — not just
for style, but also for the way content is presented. It’s good practice to have
as few templates as possible, so people can familiarise themselves with the
interface as quickly as possible. If somebody needs to keep re-learning what’s
going on — where to look or click for every new template they encounter —
they’re highly likely to get frustrated. And frustrated customers don’t stay
customers very long!
Pages
Pages are essentially the final application of the design system at work. They’re
what your audience ultimately sees.
For an example of the relationship between templates and pages, consider the
design system I created for Club of the Waves, a website featuring surf artists
and photographers, each of whom has their own unique profile page on the
site.
D e s ig n s y s t e m m o d e l 91
The image below (fig 4.9) shows templates (only two) in the left column, and
pages to the right:
Template Page
Club of the Waves has a bespoke home page, with no template applied to it —
as seen in the first row of the image above.
The second row shows the template for an index of profiles, and two pages (to
the right of it) with that template applied to them. The third row shows the
template for individual profiles, and several pages (to the right of it) with that
template applied to them.
In Club of the Waves’ case, there are hundreds of pages running off the one
profile template. It would be unrealistic to design and build a bespoke page for
every creative profile, and a nightmare to make global changes to each unique
page. But with all the pages running off the one template, you need only update
92
the one template to change every page — for example, if you wanted to add a
comments section or social sharing links to all profile pages.
The same logic applies to all aspects of a design system. For example, if you
update a system component like a button, the change would be applied
everywhere that button is used in the system. This is much easier than the
lengthy and hazardous task of digging for and updating all of the buttons. The
system at work!
‘Templates’ and ‘pages’ can be applicable to products too, but ‘features’ and
‘screens’ are arguably more applicable terms when designing a system for a
more complex or dynamic digital product or app.
‘User journeys’ map out the often complex interactions within a product’s
features. And ‘screens’ are snapshots in time of a product in use (i.e. a step in
the user journey). I’ll demonstrate this using a real product in a moment, but
D e s ig n s y s t e m m o d e l 93
first, consider this:
Websites are often about consuming content, and only include quite simple
interactions like clicking a button to go to a different page, submitting a form,
filtering a list to make a selection, or opening an accordion. Products and apps,
on the other hand, tend to be more multi-layered, with interactions that can go
several layers (or steps) deep.
To give a more specific example, let’s say a banking product has a feature
that enables you to get directions to your local bank branch. A potential user
journey for this feature might be:
1. The user clicks a button that reads: “Find your nearest bank”
2. A modal opens where the user is asked to enter their postal/zip code
3. Upon submit, a map is revealed showing banks near their location
4. The user clicks on their desired pin on the map
5. A tooltip opens with a link to directions
6. The user clicks the link and is directed off-site to Google Maps
7. And finally, for each of the previous steps you could have multiple success
states, error states, helpful tips to guide the user, micro-interactions, and so
on.
The bottom line is: digital products are complicated! It’s vital that your system
include not just all of the elements involved in the example above (e.g. buttons,
modals, maps, pins, tooltips, etc.), but that it also maps out how a feature is
used — showing all of the screens that add up to the user’s journey. (Doing this
94
may also reveal some opportunities to simplify the experience!).
To demonstrate, let’s break down the Adobe Portfolio product into a few
system elements, mapped to our model:
Foundation
The example below (fig 4.11) shows the brand colour palette used in the
product.
4.1 roomfive.net/adobe-portfolio/
D e s ig n s y s t e m m o d e l 95
Component
The following image shows a few examples of components in the product
(fig 4.12), including text inputs, checkboxes, toggles, and buttons. This is only
a very limited view of a few components, and not all their states are shown,
but notice the components also include things like placeholder states, hover
states, and error states. We’ll cover this extensively later in this book. Also,
notice the only colours used are the colours we’ve just seen in our foundations
example (fig 4.11).
Pattern
Some of the previous component examples can be seen in the following
example (fig 4.13) in a modal pattern. This example pattern is called a “Panel”,
which is a modal — composed mostly of components like inputs, toggles,
selects, and buttons — used throughout the product as a consistent vehicle
for performing various actions. The example spec shows the makeup of a
Panel and a couple of variations of this pattern, including the “Basic Panel”,
“Advanced Panel” (with navigation), and “Manage Panel” (a fixed height panel
with scrolling content).
96
Note: It’s good practice to name your patterns. For example, our Panel
pattern’s technical name is a “modal”, but you may find additional use cases
for using a modal throughout a product, such as for warnings or messaging.
It’s far more efficient to say “Basic Panel” or “Advanced Panel” in a product
discussion, a GitHub Issue, or a conversation with a developer, than it is to
attempt to describe it: “The modal”. “Which one?”. “The one with the navigation”.
Instead, give it a name, document it, and use that name going forward. Over
time people on your team will identify patterns by name, and if not, your
documentation is where they look to find their answer. Don’t worry, we’ll cover
documentation later in this book.
D e s ig n s y s t e m m o d e l 97
Feature
The big difference between a pattern and a feature is their complexity. A
pattern might perform one or two functions, and can be deployed in a number
of different ways as a reusable element. A feature can perform many functions
or one specific function, and may be comprised of multiple patterns.
The example below (fig 4.14) is a spec for the “Manage Content” feature from
the Adobe Portfolio product, which uses the “Manage Panel” pattern (fig 4.13)
from our previous example. In this case, the feature is made up of many
foundations and components, but is using just one pattern.
FIG 4.14 Feature example: a spec for a feature called “Manage Content”
Interaction wise, there are many things that can be done with this “Manage
Content” feature. Contained within the “Panel” pattern, you can drag and drop
elements, toggle things off and on, access menus, add content, delete content,
edit content, and so on. These specifications (or — as I call them — ‘specs’ for
short) map out those different interactions and states.
Note: You’ve seen in the previous three examples — for features, patterns, and
components — that I’ve designed and created specifications for all the various
states and interactions. We will cover this extensively throughout this book,
but for now, some friendly words of advice:
98
who’s worked with other designers who are guilty of this, and as a frustrated
developer who has built websites (that someone else designed) where these
things haven’t been considered or accounted for.
Don’t assume the developers will figure it out. It’s not their job, it’s the
designer’s job. And especially don’t leave it to chance, and risk later finding
out your customers are struggling to use your product. This ambiguity leads to
frustration, confusion, and inconsistencies in the build and user experience.
Screen
A “screen” really highlights the difference between designing a digital product
and a website. Websites (often) have a definitive set of pages, and we know
what they will look like as they are either based on a template or are a bespoke
design. Products, on the other hand, can have dynamically created content,
built up of features that are tailored to the user.
The Adobe Portfolio product we’ve been reviewing in this case study has no
“pages”. It’s a product that people use to build personal portfolio websites for
their work. No two “screens” will ever look the same — they are unique to
the person using the product. But from a product design perspective, it’s still
valuable to visualise what those screens could look like in order to stress test
and design for all variables; this also allows us to give the developers a better
D e s ig n s y s t e m m o d e l 99
idea of what they’re building (in addition to our design system elements and
specs).
The image (fig 4.15) is a design mockup simulating a feature in use — in this
case, a “Colour Picker” pattern is being used to edit a “Masthead” feature of
the product. This is different from a traditional mockup or “page” design in
web design, as it’s only showing a pattern in the context of one part of a user’s
journey. Still, it’s a useful way of depicting how your system elements will come
together in the product.
User journey
A user journey, strictly speaking, is not part of our design system model. But,
as stated before, a good product designer should map out how a product — or a
feature of the product — could be used. There are many ways you can visually
convey user journeys and the specific steps a user can take. You could, for
example:
The following design mockup (fig 4.16) maps out the user journey for the
“Background Image” feature of the Adobe Portfolio product, which uses the
“Basic Panel” pattern (fig 4.13) we saw in our earlier example.
Similarly, fig 4.17 maps out the various steps to using the “Add Content”
feature, which uses the “Manage Panel” pattern (fig 4.13).
And finally, fig 4.18 maps out the potential steps a user could take while using
a different feature of the product, this time using the “Advanced Panel” pattern
(fig 4.13).
It’s my hope that seeing how the elements of the Foundations Model came
together in the Adobe Portfolio product design gave you a sense for how you
100
FIG 4.16 User journey example: a spec showing potential user steps
FIG 4.18 Map out the interactions and steps a user could take
DD ee ss ig
ig nn ss yy ss tt ee mm mm oo dd ee ll 11 00 11
can adapt the model to your project. Keep in mind, you can always adapt the
model to make it yours, this is just a guide to get you started.
It’s also healthy to think of and use terminology like ‘guidelines’, as opposed
to ‘rules’. Rules feel like laws that can’t be broken. Your average designer
won’t like working under these constraints, so it’s important your system is
adaptable and leaves room for creativity.
However, some system elements do benefit from being more rigid for the sake
of consistency, ease of navigation, user experience, or to protect the brand.
For example, on most websites, patterns like a ‘global navigation’ or ‘footer’
will likely never change as you navigate page-to-page — nor should they, as
it can be disruptive to the user journey and experience. Similarly, a ‘related
items’ pattern in an e-commerce product, or ‘related posts’ in a blog will be
the same design on every page (only the content changes). And foundations
wise, sticking to a set of defined text styles and colours will make for a more
coherent end product and experience.
102
adaptability cuts down on the need to bypass the system or go rogue, adding
new elements.
For example, a component like a button could come in a small and large size,
in multiple colours, or have a solid background versus a border outline to
communicate different actions or hierarchy of importance.
fig 4.19 is an example of different buttons from the same design system. While
different, they clearly belong to the same (brand) family and share similar
specifications and foundational characteristics.
D e s ig n s y s t e m m o d e l 103
Document the why, when, and how
We’ll cover documentation more thoroughly later in this book, but for now, it’s
important to state: you should document guidelines, specifications, and use
cases for all your foundations, components, patterns, templates, and features.
Better together
Everything we’ve covered in this chapter highlights the importance of
teamwork, communication, and not designing or building anything in isolation
— from the terminology we use, to creating and iterating on the system
elements, to documenting how, when, and why they’re used.
My hope is that with the Foundations Model as a guide, you’ll now have a
simple framework to kickstart a great design system with your team.
Now that we’re all on the same page regarding the model and terminology we’ll
use going forward, we’re (almost) ready to start creating a design system.
104
The first app I
opened when we
started wasn’t
Sketch. It was Google
Docs. You need to
clearly articulate
the problems you’re
solving first.
D e s ig n s y s t e m m o d e l 105
L A Y I N G T H E F OUN D A T I ONS
Gett—
ing
star—
ted
05
Getting started
106
By now, hopefully, you should understand the importance of getting your
whole team excited about the value of a design system, and involving everyone
in the process.
We’re not ready to jump into design just yet. First, you (and your team) need
to be clear about what your goals for creating a design system are. By doing
this, you are further laying the strong foundations needed to build a successful
design system and product(s).
Consider this quote from Nick Stamas (5.1), my former colleague I mentioned
in the “Selling a Design System” chapter of this book, as he reflected on the
beginning of a journey that led to creating a design system:
“The first app I opened when we started wasn’t Sketch. It was Google
Docs. You need to clearly articulate the problems first. Be specific.
Where are things breaking down? Where are the biggest pain points?
A design system doesn’t exist in a vacuum, it needs to solve problems
for everyone.”
5.1 nickstamas.com
System design is a team effort, so work as a team. Make everyone feel like their
opinion is important, and their voice is heard. The easiest way to get people to
believe in the system is to involve them.
When you discuss your problems as a team, you’ll also have a better
understanding of the extent of the work that needs to be done. You may find
you already have the basis of a design system that’s just gone a little astray over
time, and it may not require much work to consolidate the design and code,
document it, and grow from there.
A designer might look at a problem and think: “we’re screwed, let’s just start
again!”, but a developer might look at the same problem and think: “actually,
if we do X then we’ll be okay”. And vice versa. This is why it’s valuable to get
everyone’s perspective.
The goal here, ultimately, is to find the common pain points in everything from
the product, design and build processes, team culture, and user feedback.
For example, some broader takeaways from this discussion could be things
like:
You’re probably familiar with at least one of these frustrations… It’s pretty
common stuff, and all issues that design systems can help fix.
108
Once you know what the problems are, you’re better prepared to come up with
a plan of attack for solving them.
Looking at this simplistically , there are two approaches you can take:
The next two chapters are dedicated to these approaches, but before we go into
detail about the process for each, I want to explain in brief what they are.
110
With this approach, you start by conducting visual and code audits (we’ll cover
this in the next chapter) to discover the problem areas, and iteratively fix them.
You focus on small areas of the product at a time, gradually working your way
through the whole product — designing, building, and documenting a design
system as you go.
The advantage to the iterative approach is that you’re able to start small and
tackle your biggest pain points first. This might bring some immediate relief
to a more immediate problem, such as a user experience problem, a process
problem, or a sticking point for designers and developers on your team.
Starting with the iterative approach might only bring small wins at first —
but a small win can make a huge difference to a product’s user experience,
and your team culture. A positive start can have a profound impact on an
organisation’s positivity towards — and belief in — a design system as a
worthwhile investment of their time going forward. This proved effective at
GitHub (5.2), who said of their design system process:
We’ll delve more into the iterative approach in the next chapter, but for now it’s
worth considering if this might be the best way for your team to start creating
a design system. Alternatively, you could try:
5.2 medium.com/@broccolini/design-systems-at-github-c8e5378d2542
Think about websites like Amazon, which has largely looked the same for
years. Given their enormous wealth, one would think they could easily afford
a huge wholesale redesign. Instead, Amazon employs more of an iterative
approach. They refine and test different design changes over time. Their
product and design system evolves, but the user doesn’t always notice.
There’s a very good reason why companies like Amazon don’t take a wholesale
approach, as the unknown factor of how their customers will respond to a
radical redesign is far too great a risk.
5.3 vanityfair.com/news/2018/05/snapchat-publishers-discover-redesign
112
A wholesale redesign is a gamble — it could make or break your business.
Take Snapchat’s 2018 redesign, which Vanity Fair described as “cataclysmic”
(5.3). More than 1.25 million people signed a petition urging Snap to undo
their update, they lost 2% of their daily active users (some 3 million users), and
their stock price bombed! I can only imagine how bad those days were for their
product teams.
The risk of taking the wholesale approach is especially high for e-commerce
websites and digital consumer products that people frequently use; it’s less of
an issue for marketing based websites or products with lower repeat visitors.
Humans are creatures of habit — we don’t always like change.
Choices, choices
It very much depends on the size and complexity of your product, team, and
audience — as well as the nature of your brand — as to which approach is
better, more expensive, disruptive, time-consuming, or worthwhile.
As you read through the following two chapters — delving more into each of
the iterative and wholesale approaches — you’ll no doubt conclude there are
common elements to both, and you’d be correct. The word “holistic” is an
important theme and consideration in both approaches, which we’ll explore.
The answer for your company might not be to adopt one approach or the other,
but to apply lessons from both approaches. In fact, I would recommend doing
a mix of the two!
An
iter—
ative
app—
roach
06
An iterative approach
114
With this approach, you start by conducting visual and code audits to
discover the problem areas. Next, focus on small areas of the product at a
time, gradually working your way through the whole product — re-designing,
building, and documenting a design system as you go.
6.1 broccolini.net
6.2 primer.style/css
6.3 medium.com/@broccolini/design-systems-at-github-c8e5378d2542
A n i t e r a t iv e a p p r o ach 115
Once you’ve found your team: a good way to get going is to conduct interface
audits.
Interface audits
‘Interface audit’ is a term with potentially different definitions. So for the sake
of clarity — in this book — consider that:
Colour audits
You might be surprised by how many rogue colours you have in your product,
but the good news is, this is one of the simplest things to action.
First, you need to do a colour audit of all websites and products at your
company. Take note of every unique colour used for text, links, backgrounds,
form inputs, buttons, error states, borders, and so on. If you have more than
one website, create a different colour palette for each website — it might prove
interesting to see the comparison.
6.4 uxdesign.cc/hipmunk-design-system-part-1-colors-ux-case-study-
1ac99806aabd
116
FIG 6.1 Colour audit of Hipmunk’s product
Their colour audit (fig 6.1) led to them creating a stripped-down, clearer, and
on-brand semantic colour system (fig 6.2):
Note the use of the number “500” (e.g. $hipred-500) in Hipmunk’s new colour
palette (above). We’ll come back to what this means and why it’s important in
the “Systematising the Design” chapter, when we cover naming conventions
and creating colour systems.
The following example (fig 6.3) is a small sample from a real colour audit I
conducted at a company. The example colours shown here are to demonstrate
the discrepancies, which in this case were very similar variants of the same
colours.
A n i t e r a t iv e a p p r o ach 117
FIG 6.3 Colour audit reveals very similar colours used
Once you have your audit results — you need to get to the bottom of:
It’s wise to take stock of why a colour is used. Consider whether the colours
you find in an audit were used intentionally (and serve an important function),
or whether they were used unintentionally (and can be changed).
Now you need to work with a front-end developer to make these changes in
the code. If you’re working with a website, this is the perfect opportunity to
introduce Sass variables for colours (work with a developer for this). Create
Sass variables for all the correct brand colours you’ve defined, paying attention
to how you name the colours.
We’ll cover naming conventions and why replacing static hex values
(e.g. #F00658) in your code with Sass variables is a good idea later in the
“Systematising the Design” chapter.
118
Finally, pair a designer with a developer and go through the website, replacing
all hex value colours with the correct Sass variable (colour). You could do a ‘fast
and dirty’ find and replace, but it’s probably safer to ‘eyeball it’, going page-by-
page and scenario-by-scenario.
Code audits
We’re not going to go too deep into code audits in this book since we’re
focussed more on design, but suffice it to say they are important. The
efficiency of the code is key to a design system’s success — and to the ease,
speed, efficiency, consistency, maintenance, and scalability of a digital
product.
Sometimes, the code harbours many of the problems. If you’ve worked in-
house at a company with any history of digital, you’ve no doubt come across
the phrase ‘legacy problems’. This often refers to legacy (old) code that makes
updating something problematic (read: painful). The problems may stem from
design — perhaps designers have gone rogue designing several variants of the
same thing — but the code holds the key to fixing them. Refactoring the code
(reducing complexity) makes all the difference, and a code audit is a great way
to kickstart that refactoring effort.
“We reduced the need for people to have to write new CSS. We made
our components easier to reuse in multiple locations. We worked on
consolidating patterns by reducing code repetition and removing
unnecessary design variations. We defined global Sass variables
for shared system styles. We introduced consistent and easy-to-
internalize naming conventions.”
“Sass” is a key word here. If you’re not already familiar with it, Google it. Speak
to your developers about it. It’s a way of writing and compiling CSS that will
make your code much easier to manage.
Besides the code, I even introduced Sass naming conventions into the design
and design documentation at a previous job — bridging the gap between
6.5 medium.com/@broccolini/design-systems-at-github-c8e5378d2542
A n i t e r a t iv e a p p r o ach 119
design and engineering. Any way you can find to do this is a good idea. We’ll
cover this later in the “Systematising the Design” chapter.
Experience has taught me that visual audits and their resulting plans of
action, often dovetail into or spur subsequent code audits in the execution to
fix the visual problem. Your teams might divide and conquer — running both
visual and code audits simultaneously — or start with one or the other, and
work from there. It very much depends on the nature of your teams and the
problems you’re solving.
Visual audits
A visual audit (aka ‘interface inventory’) is a means of finding inconsistencies
in a digital product. You scan through a product and create an inventory of all
aspects of the visual interface, identifying where the problems are, and scoping
out the extent of the problem.
With this information, you can plan to fix any smaller issues in the short term,
and formulate plans for fixing larger issues in the long term.
They also provide you with excellent material to sell your design system work
to stakeholders — referring back to the “Selling a Design System” chapter —
since they highlight why you need a design system!
Create a small task force of people who care most about the front-end. The
team could all be designers, or you could involve developers and product
managers as well (so long as they are more ‘visually oriented’ people — it’s
important they take the audit seriously, so nothing slips through the cracks).
Start by creating a list of every feature, page, screen, user journey, and scenario
in your product. Then divide that list up amongst the group, with each person
taking ownership for their part of the product(s)/audit.
120
recommend a Google Doc or a design tool like Sketch, but there are a number
of online collaboration tools you could use. You could also use something like
Keynote. It will be easier if you agree on a consistent format for cataloguing
and organising your findings. Ideally, create a template for your team to use.
The task of each auditor is to document what they see. So for every page,
screen, or user journey: take a screenshot of each button, header style, text
style, link, form input, toggle, pagination, tooltip, quote, product card, table,
header, footer, navigation, and so on — and organise them by category (e.g.
buttons, text links, header styles, etc.).
The goal here is not to capture (screenshot) every instance of an element, but
to capture each unique variant of it. So, don’t capture 10 instances of the
exact same header style. Instead, if you find that 4 of those 10 header styles are
a different font family, weight, size, colour, sentence case versus title case, all
caps, or underlined — then capture each of those variants. Do the same for
all foundations, components, and patterns. Pay close attention to things like
size, spacing, colour, text styling, border-radius, drop-shadows, and icons. And
don’t forget things like hover states and error states.
Organisation is key. For example, you want to end up with a view of how many
button styles you have in your product, but it may also help to know where
in the product you found each button style, so you can go back and address it
later.
Finally, schedule a time to meet again at a later date, as a group, to share and
discuss what the team found.
A n i t e r a t iv e a p p r o ach 121
something needs to be done, and acts as a blueprint to create a design system.
What now?
Now, your team needs to plan what to do about the inconsistencies you’ve
found.
Interface audits are a valuable addition to your pitch to stakeholders for why
you need to invest in a design system. As I said before, seeing is believing.
You can show your stakeholders the extent of the problem, and explain why
these inconsistencies matter, or you can take a more direct approach, and take
action now.
Principally you need to work with your task force to consolidate the variations
you found. By task force, I mean: designers and developers working together to
fix the inconsistencies, and documenting the definitive solutions you decide
upon.
6.6 bradfrost.com
122
The goal is not to just eradicate all the variations you find. You need to replace
them with something, and the answer might not be to replace 26 with 1. In this
case, we dug a little deeper into the audit, analysing the 26 styles of buttons; we
asked ourselves:
Chances are you’ll find more than one use of the component, but I’ll wager
you won’t find more than a few. Trending patterns will emerge. Actions like:
‘Save’, ‘Submit’, ‘Get Started’, ‘Sign Up’, ‘Buy Now’, and ‘Subscribe’ may differ in
function, prominence, or importance from actions like: ‘Edit’, ‘Cancel’, ‘Read
More’, and ‘Close’. Take stock of these different functions in your audits and
decision-making.
Your visual audit helps you to uncover not only how many variants you have,
but potentially why you have those variations. Sometimes it’s just bad design,
or proof for why you need a design system. Other times you’ll discover a
legitimate need for variations — like multiple button styles for different
actions, or additional text styles to cover specific scenarios.
Primary button
Secondary button
Tertiary button
A n i t e r a t iv e a p p r o ach 123
Now that you’ve uncovered and debated these findings, you can consolidate
those 26 button styles into 1, 2, 3, or more styles that cover all the scenarios
you’ve identified. Ending up with something like this (fig 6.5).
The documentation should also specify why you have these variations:
How, where, when, and why should you use each variant?
How does one apply each component, and their variants, in the
code?
If you’re not familiar with sprints: it’s common practice for in-house design
and development teams to work in short pre-defined sprints, focussing
on completing a limited (achievable) number of tasks in each sprint. Some
companies even group their sprints by quarter (of the year), aiming to
achieve specific goals at key stages throughout the year. Sprint and quarterly
124
achievements can be good for keeping tabs on, encouraging, and reporting the
progress of your design system, which helps to keep stakeholders happy.
One of the advantages of the iterative approach is that it can be done alongside
business-as-usual tasks. I recommend advocating for allotting a certain
percentage of time in each sprint to focus on the design system. If you’ve
done a good job selling the system, advocating for its importance, and gaining
support from product managers, developers, and designers, then this should
be no issue.
The order in which you approach the system — iteratively — is unique to your
situation.
In time your product will gradually morph into a new look product, powered
by a design system.
A n i t e r a t iv e a p p r o ach 125
The Frankenstein monster effect
While designing iteratively has many advantages, it’s easy to lose sight of the
product or brand as a whole. Without careful management, it can lead to an
unfortunate ‘Frankenstein monster’ effect.
Let’s step back for a second. It’s not as simple as just taking an ‘iterative’ or
a ‘wholesale’ approach. You must consider the design and brand as a whole,
coherent piece. A system without harmony isn’t much of a system.
A jigsaw puzzle starts as a whole picture before it’s broken down into
pieces. You’d have a terrible puzzle if you designed the pieces first, then
later discovered they don’t fit together!
Don’t create design system elements in isolation, then attempt to fit them
together in a product. Think about the product as a whole — as an experience.
6.7 intercom.com/blog/two-product-principles-often-forgotten/
126
Refinement vs. exploration
Based on a concept from the book, Sketching User Experiences by Bill Buxton
— the following graphic (fig 6.6) beautifully illustrates a good point to keep
in mind when approaching a design system iteratively. Focussing on refining
what you have now — or changing your current design one piece at a time —
can blind you to the best solution.
The iterative approach has many advantages, as we’ve covered in this chapter.
However, if you take the iterative approach, don’t focus only on refinement,
or work with too narrow a focus. Take time to explore each problem area first,
then refine. Don’t bypass the opportunity for design exploration altogether.
A n i t e r a t iv e a p p r o ach 127
L A Y I N G T H E F OUN D A T I ONS
A
whole—
sale
app—
roach
07
A wholesale approach
128
The wholesale approach ideally should start in a similar way to the iterative
approach we covered earlier: by identifying the problems you’re trying to solve.
A little user and product research wouldn’t hurt either, but we can only cover
so much ground in this book! So, we’re going to assume that you’re clued up,
you’ve identified that a redesign would be a good move for your business, and
you have a good idea of the problems you’re trying to solve.
Design for all scenarios, not just the best case scenarios. Don’t try to fit the
content to your design. Design for the content.
If you’re creating a design system for a new product with no existing content,
you still have to design with content in mind. Use a close approximation, or
work with a content strategist, copywriter, or user experience expert to get as
close as possible to the final content you’ll be using in the product.
The goal here is not to create the prettiest system, it’s to design a system
that best meets your product, user, and business needs. We do, of course,
set out to create delightful products, but only because delight can enhance the
user experience.
A wh o l e s al e a p p r o ach 129
If you’ve already established Digital Foundations — as we covered in an earlier
chapter — or your company has brand guidelines — then use them as a North
Star, so to speak. If your company has no brand guidelines of any description,
then these design explorations will help you discover, flesh out, and document
your brand!
Once this consistent visual language emerges, the task now is to document the
design system elements you’ve created, accounting for all states and scenarios .
Document your design thinking. How, where, when, and why should you apply
the foundations, components, and patterns you’ve created?
Essentially, you’re creating a comprehensive style guide for your team to use.
Think of it as a blueprint for designing products at your company.
For a more detailed look at the design exploration phase of the wholesale
approach and its progression towards a design system, you can read my case
study (7.1), which gives a detailed account of the process described here.
There are three things worth noting about Airbnb’s approach. Firstly, and
interestingly: the Airbnb design team use terms like: “Design Visual Language”
and “Design Language System,” instead of: “Design System”.
A language is more than words, it’s about communication. Yes, “system” and
“language” essentially mean the same thing in this case, but psychologically,
perhaps the term ‘language’ is less intimidating to a designer than ‘system’?
7.1 medium.com/@andrewcouldwell/plasma-design-system-4d63fb6c1afc
7.2 airbnb.design/building-a-visual-language/
7.3 karrisaarinen.com
130
For whatever reason, they’ve decided to use terminology that works best for
their team.
“We started by auditing and printing out many of our designs, both
old and new. Laying the flows side by side on a board, we could see
where and how the experiences were breaking, and where we needed
to start making changes.”
An important thing to note here is that they focussed on product flows and
the user experience. They didn’t focus on small, siloed areas of the interface,
or component parts that make up their products. They contemplated their
product as a whole, as an “experience”.
Also, they used real product scenarios. Grounding your work in reality, using
real data and scenarios is key. Don’t work with ideals, best case scenarios, and
convenient content. Work with what you’ve got — and design a system that
works for it — but keep it flexible enough to evolve and account for more than
you have now.
Our goal here is not to create the prettiest system. It’s to create a flexible
system that solves problems, and also delivers a great user experience.
Prior to their ‘Design Language System’ project, Airbnb’s design team had
already defined their equivalent of Digital Foundations by establishing colour,
typography, and spacing (fig 7.1).
A wh o l e s al e a p p r o ach 131
FIG 7.1 Airbnb’s foundations
The exercise now was to build a design system upon those foundations:
132
The goal is not to
create the prettiest
system, get more
likes on Dribbble,
or impress your
friends — it’s to
design a system that
best meets your
product, user, and
business needs.
A wh o l e s al e a p p r o ach 133
Build and launch plans
Now, the really tricky part. With your system effectively designed (with the
wholesale approach), you have a hard decision to make:
1. Do you build everything behind the scenes, and launch when it’s ready?
2. Or do you build and introduce the system iteratively over time?
Brands we associate with high standards for how their brand is executed
— like Nike or Apple — are more likely to take the first approach. It would be
damaging to their brand perception to release anything too short of the final
product.
On the other hand, smaller businesses that aren’t under the microscope
as much as bigger brands can afford a more iterative approach, since their
changes are more likely to go unnoticed, or at least, won’t light up Twitter!
You might not get it right the first time, so consider getting to an MVP
(minimum viable product) — or a beta launch phase — as fast as possible. This
way you can soft launch to a limited subset of people, discover any problems,
iterate, refine, and improve before launching to everybody. Let’s look at an
example:
134
Wholesale design, and an iterative build and launch
Earlier I mentioned it isn’t always as simple as taking either the iterative
approach or the wholesale approach; you can combine the two. For example,
when I worked at Behance (7.4) on the Adobe Portfolio (7.5) product (fig 7.2)
— we took a wholesale approach to the design and (most of the) build of the
product, but the launch (and the remainder of the build) was iterative.
For context: the new Adobe Portfolio product was replacing an existing
product (Behance ProSite). A decision had been made not to iteratively evolve
the existing product, but to start again with a new product (i.e. a wholesale
approach). There was nothing iterative about this redesign; it was very much
an ‘out with the old, in with the new’ wholesale approach. We were creating a
new code infrastructure, a new design, and a new brand.
Months of design exploration and system design work ensued before anything
substantial was built. Once the design was reasonably progressed, I started
feeding the developers things to build as fast as I could — starting small with
7.4 behance.net
7.5 roomfive.net/adobe-portfolio/
A wh o l e s al e a p p r o ach 135
system components, and working up to patterns and product features.
Building and launching a product of this size and scope was never going to
be easy. We knew what we were creating was ambitious, complicated, and
multifaceted. On the one hand, we had a potential target audience (of millions
of people) to impress and convert to paying customers. And on the other
hand, we owed it to our existing product users to keep them happy while — as
seamlessly as possible — transitioning them over to the new product.
Achieving the above with a ‘hard launch’ would probably have proven futile,
especially for a company the size of Adobe. Instead, after months of build work
we arrived at an MVP (minimum viable product) version of the product. It was
basic, it didn’t include all the features, and it was a little buggy — but it was
enough to start getting valuable feedback, user testing, and bug reports.
We did several phased Beta releases of the product over time. Each release
opened up the product to more people, building towards an ‘official’ launch
some months later.
We learned a lot from this beta phase. We especially learned that people didn’t
always use the product the way we anticipated they would! But that’s okay. It
was better to learn these things in a beta phase — with hundreds/thousands
of users — than later with thousands/millions of users. People were also more
forgiving about the limited feature set and bugs in the product because in our
marketing we set the expectation that they were using a ‘work in progress’
version of the product.
For example, think about digital productivity products you use on a daily
basis... I mean meticulously use — they’re mission-critical to your job. For
some professions, CRM (customer relationship management) products are a
great example of this kind of product. An experienced CRM product user could
be so familiar with that product’s user interface, they could almost operate
it in their sleep. Now consider what happens when they log in one morning,
and — poof! — there’s a totally new-look product. Suddenly their day-to-day
tasks aren’t so easy, fast, or efficient. You could go from a satisfied user base to
a frustrated one overnight (remember the Snapchat example in the “Getting
Started” chapter). You might even lose those customers — considering your
136
product likely isn’t their only option.
For these kinds of products (or use cases), it might be better to take it slow.
Another advantage of this is that you can manage user feedback more
efficiently. Feedback inline with specific system updates allows you to refine
and improve on the design system in more targeted and manageable sprints, as
opposed to being overwhelmed by feedback on the system at large.
The key is not to cause too much frustration at the user’s end. In any form of
design: meeting people’s basic expectations will keep them satisfied, and
delighting them is an experience to strive for. It’s crucial to get the basics
right. That’s what your users care most about. Keep this in mind when rolling
out your design system.
A wh o l e s al e a p p r o ach 137
Now that you’ve learned the pros and cons of the wholesale and iterative
approaches, you can make a more informed decision about the most suitable
plan of attack for creating and deploying a design system at your company. Do
you take:
Whichever path(s) you go down for creating your product(s) and brand’s
visual language, you don’t want all that hard work to go to waste. You need to
safeguard the design decisions you’ve made, and put systems and processes in
place to protect the brand and visual language you’ve created. The next couple
of chapters teach you how to do just that. We’ll also cover how to level up as
designers and design teams by systematising our designs, and creating robust,
efficient, accessible, and scalable design systems!
138
A jigsaw puzzle
starts as a whole
picture before it’s
broken down into
pieces. You’d have a
terrible puzzle if you
designed the pieces
first, then later
discovered they don’t
fit together!
A wh o l e s al e a p p r o ach 139
L A Y I N G T H E F OUN D A T I ONS
Sys—
temat—
ising
the
design
08
140
Designing and building a design system is all very well and good, but your
design team’s continued adoption of the system is the key to its success.
We’ll look at points 2 and 3 in later chapters. In this chapter, we’ll focus on
point 1: Ease of access and use.
I’ve seen this first-hand: there’s a design system in place, yet individuals on
a design team continue to serve up new text styles, buttons, and inputs in
their mockups. It’s frustrating. It creates unrest in the team. Developers get
frustrated that designers still aren’t using consistent components. And the
system gradually falls into decay.
Let’s give the designer who introduces new system elements the benefit of the
doubt. Perhaps they didn’t mean to create a new image gallery when there’s
already a perfectly good image gallery designed, built, and ready to deploy.
If it’s the latter (2 or 3), you should discuss the proposed iteration as a team. If
it’s the former (1), then you have a problem. An avoidable problem.
Sy s t e ma t i s i n g t h e d e s ig n 141
You need a design system library
If your design system foundations, components, and patterns are easy to
access and use, you’ll be less likely to have the problem of unintentional
design. Think of this collection of design system assets as your ‘design library’.
Here’s a quote from the Airbnb design team (8.1) talking about their design
library:
I’ve seen designers create buttons by drawing a rectangle, changing the colour,
adding a border-radius, adding some text, and styling the text how they feel
like it. They do the same for text input, selects, and so on. The developers build
the design mockup they’re given, creating new, one-off components and non-
reusable CSS each time. Is it any wonder some websites and products have so
many different styles when designers work like this? There is a better way.
If this were a presentation, I’d now do a live demo. I’d open up a blank
Sketch canvas and create a simple form in a matter of seconds by using an
example library of design system components. Anytime I’ve done this it’s
wowed the audience. But this is no magic trick — it’s just good design system
management.
By creating a library of things like text styles, colours, form inputs, and buttons
— that anyone on your team can easily access and use in their designs — you
reduce the likelihood of unintentional design.
The library should contain reusable elements from your design system that
8.1 airbnb.design/building-a-visual-language/
142
After a week or two
we saw huge leaps in
productivity by using
the library when
iterating on designs.
One day our team was
able to create nearly
50 screens within
just a few hours.
Sy s t e ma t i s i n g t h e d e s ig n 143
you commonly use in your design mockups, such as text styles, form inputs,
and buttons. It should also include all their variations and states (e.g. a text
input’s placeholder, value, hover, error, and disabled states).
Ideally, any changes you make to the master design library file should sync to
your design files, keeping your design mockups in sync with the system. It’s
not perfect, but you’re essentially trying to simulate a built environment (e.g.
Sass, CSS, HTML, JS, React) in a design tool.
The idea is your design team can insert any of these elements into their design
mockups. Of course these elements need to be editable, but within consistent
parameters. For example, if you have two buttons in your design system — a
blue button and a green button — the designer should easily be able to choose
between blue and green, but not make it pink. The data/text content/value also
needs to be editable, which means your components need to be responsive so
they will work with variable amounts of content.
Pre-made components and pre-defined text styles only help designers do their
job. It’s important that designers on your team understand this, and don’t view
design systems as taking away — or restricting — their creative freedom.
For example, you can design something like a form very quickly — even in
seconds — using a library of pre-made components like inputs, selects, radio
buttons, and buttons. This is much faster than meticulously creating each
component from scratch (risking unintentional variations), or copying and
pasting components from one design file to another.
The constraints a design library puts in place help maintain consistency, and
vastly increases speed and efficiency.
144
Freeing designers
from re-creating the
same design elements
over and over again
allows them to focus
on more important
things, like iteration,
new features, and
user experience.
Sy s t e ma t i s i n g t h e d e s ig n 145
Tools for the job
I stated at the start of this book that it would be futile to dive too much into the
technology side of design systems in print. Design tools evolve so fast that the
words I freeze in time in this book may no longer apply by the time you read
this. With that said, I don’t want to leave you empty-handed, so I’ll talk a little
about design tools to consider.
Where Photoshop was once the industry standard for web designers, the
need for a vector based, dynamic, and specialist user interface design tool
became clear circa 2015(-ish). There are now a host of options out there! Below
is a brief introduction to just a few of them, and there are more up-to-date
resources and links on this book’s website (8.2).
In the beginning of this revolution of new design tools, Sketch (8.3) quickly
rose to fame as the popular choice for web and product designers. Sketch’s text
styles and responsive, nested symbols (for editable, reusable components) —
paired with Sketch Library (8.4) — are superb for working with and managing
a design library. This is the design toolset I’ve used since 2016 for web design
and to create design systems that power large design teams and entire suites of
products, so I can speak first-hand to its excellent performance.
I’ve also created a Skillshare class (8.5) showing how I currently (at the time of
this book’s publication) set up symbols in a design library in Sketch.
While I have no experience using the following design tools, I’ve heard good
things:
• Framer X (8.6) is a design tool doing amazing things to bridge the gap
between design and code. You can create interactive, animated, reusable
components. You can even design with React components from production
(i.e. your real product).
• Adobe XD (8.7) is a design tool to keep an eye on. It’s been in a work in
progress for sometime now, but they have a great team working on it and its
progression is encouraging.
• For something different, Figma (8.8) is a browser-based design tool (not
software) that allows multiple designers (and other stakeholders) to work
simultaneously on a design.
And then there are designers who consider any code editor to be a design
8.2 designsystemfoundations.com/resources/
146
tool — using production code, ‘sandbox’ test environments, designing in the
browser, and prototyping with ‘real’ (built) components. I count myself among
those designers — I love to iterate on responsive designs and animations live
in the browser, to really hone the design and user experience.
At the end of the day, I’m not here to tell you what tools to use. They’re just
tools. It’s up to you to discover which processes and tools work best for your
team’s preferences, comfort, skill sets, and aptitudes. And it’s probably a good
idea to agree on one tool, which your whole team uses — so you avoid different
versions of the same design system elements being created and used in
different software!
Naming conventions
As I’ve mentioned before, naming conventions are important in design
systems. Each text style, colour, component, and pattern in your design system
should have a unique name, and it’s important that the name you use in your
design library, matches the code and the documentation.
The idea is this: if you state the name of a text style, colour, component, or
pattern in a design mockup — or in a product discussion — then the other
people on your team (designers, developers, and product managers) should
either know exactly what you’re referring to, or be able to look it up in your
documentation (aka the source of truth).
8.3 sketch.com
8.4 sketch.com/docs/libraries/
8.5 skl.sh/2xWBObZ
8.6 framer.com
8.7 adobe.com/products/xd.html
8.8 figma.com
Sy s t e ma t i s i n g t h e d e s ig n 147
FIG 8.1 Text styles with semantic names from clubofthewaves.com
148
The example (fig 8.1) from the Club of the Waves website demonstrates simple
and semantic naming conventions for foundational text styles.
FIG 8.2 A colour audit reveals none semantic names and rogue colours
A name like “Alert Red” works on its own — it’s clear to designers and
developers what the colour’s intent is. However, if you also have “Warning
Red”, “Warning Pink”, and “Hip Error” — like Hipmunk do — then you have a
problem.
Later in this chapter, we’ll look at how to create and name a system of colours
using a similar approach to Google Material (8.10), who created a range of
8.9 uxdesign.cc/hipmunk-design-system-part-1-colors-ux-case-study-
1ac99806aabd
8.10 material.io/design/color/the-color-system.html
Sy s t e ma t i s i n g t h e d e s ig n 149
colours based off one brand colour. Something like this (fig 8.3):
FIG 8.3 Light and dark variants generated from a base colour
Note their numeric naming conventions. The higher the number, the darker
the colour.
8.11 brand.opentable.com/color/
150
You don’t have to assign numeric values to make naming conventions work,
but you do need some logic in place. In stark contrast to Google Material,
OpenTable (8.11) name their two primary brand colours “Early Girl” and
“Blueberry” (fig 8.4):
On their own they are arguably confusing, but they make more sense when
you see them in the context of their secondary brand colours (fig 8.5). Their
primary brand colour, “Blueberry” is blue, but they also have two colours
named “Blue” and “Teal” in their secondary palette.
You can certainly argue OpenTable are walking a fine line, semantically, but in
this case, their use of a ‘human’ name for their brand primary colours is fitting
to their brand ethos. It would get messy if they named all their colours so
randomly, but confining the quirky names to the primary brand colours, then
using more distinctive naming conventions for their other colours, creates just
enough distinction for it to work.
We’ll cover the logic behind OpenTable’s use of colour more in the next
chapter.
Sy s t e ma t i s i n g t h e d e s ig n 151
FIG 8.5 Primary and secondary colour palettes and their use cases
Colour system
Colour is tricky. It’s easy to say: “Our brand colours are X, Y, and Z. Only use
these colours.” But then, with such a limited colour palette, what do you use for
a hover state? What do you use to communicate an error? If you want to create
a subtle differential in content using a background colour, what do you use?
We’ve all done it. You ‘need’ a new colour. You open up your colour picker
and drag the picker slightly up/down/left/right, picking the colour that feels
right. This is ‘fine’ for one-off website projects, but not for a team of designers
working on the same product(s). If other designers on your team do the same
— picking random colours, multiple times, in different scenarios — over time,
this results in numerous hex values (e.g. #b85c35) in your CSS, used erratically
and inconsistently throughout your product. Not very systematic, is it?
I advise you to look at colours as a system within a system. Think about these
things, relating to colour:
152
• Scenarios like navigation, links, errors, and success states.
• Backgrounds and subtle deviations in background colours.
P.S. Don’t worry if you don’t know Sass. Work with a developer. It won’t be
hard for a front-end developer to spin this up for you. You can also use an
online Sass colour generator (8.12) to get the color values you need. And if you
want to learn Sass, I recommend the book, Sass for Web Designers (8.13) by
Dan Cederholm (8.14). This is the book I bought and worked through when I
first learned Sass.
Decide on a base colour for each (brand) colour in your system. For example,
your base colour for blue could be: #62a5d7. From that base colour, use Sass to
create a range of colours based on that value, like so (fig 8.6):
Sy s t e ma t i s i n g t h e d e s ig n 153
In the example (fig 8.6), note the two base colours in the middle of both
ranges: “$blue50” and “$red50”. For each base colour I’ve created three darker
variants by darkening the colour in 10% increments, and three lighter variants
by lightening the colour in 10% increments.
A colour system like this makes it easy to choose colours for different
scenarios without the need to introduce new, rogue colours and code. For
example, from our colour system pictured above, you might choose $red50 as
the background colour for a button, and choose $red60 as the hover state, like
in the following example (fig 8.7).
The great thing about this Sass colour system is its scalability. This process
can be applied to any brand colour, creating a versatile range of colours
with minimal effort. Best of all: if you change a brand colour, you need only
change the one base colour and all other colours in that range will update
automatically in your Sass!
Naming colours
As we discussed at the beginning of this chapter, the naming conventions you
use for colours should be the same in the design and code. If a designer says to
use the “red30” colour, then the developer should know what they mean and
easily be able to apply that colour.
It might seem extreme, but to avoid any conflict in this area, I like to name
colours (exactly) the same as they appear in the code, as Sass variables.
Anything you can do to bridge the gap between design and engineering is a
positive.
154
Secondly: assigning a numeric value to each colour in your range — from
light to dark — avoids any confusion around vague terminology like “darker”
or “lighter”. I advise starting at something like 50 (or 100), to avoid negative
numbers. In our example:
I use two digits, as opposed to one (e.g. 50 instead of 5), so you have the
flexibility to add as great a range of colours as you need. For example, you could
later decide to go in 5% increments — instead of 10% — like in the following
example (fig 8.8), adding a $blue55 between the $blue50 and $blue60
colours.
I would recommend not having too great a range (of colour variants) in
your colour system. Remember the constraints we talked about earlier —
constraints can be a good thing.
8.12 scg.ar-ch.org
8.13 abookapart.com/products/sass-for-web-designers
8.14 simplebits.com
8.15 codepen.io/roomfive/pen/ybYQZP
Sy s t e ma t i s i n g t h e d e s ig n 155
FIG 8.9 Distinctive primary colours of two different brands
156
yellow in EE’s brand (fig 8.9), used for copy text, wouldn’t be legible on a white
background.
Utility colours
Utility colours tend to be colours like black and shades of gray. They are used
for copy and headers. They pair well and contrast with the primary colours,
to create distinction and hierarchy. Keep accessibility in mind when defining
utility colours, making sure any grayscale colours you use for copy are legible
on a light background colour.
I would aim for only a few header styles, and a few copy styles.
Sy s t e ma t i s i n g t h e d e s ig n 157
Depending on your brand and use cases of your design system, you may want
to keep the application of these text styles flexible, or document specific use
cases for each style. For example, a specific header style might be so large and
imposing that the documentation instructs limited and specific use cases
for it. Take the example below, from the Plasma design system (8.16). This
158
particular text style is so large, it’s only intended (and documented) use cases
are in the two patterns (fig 8.10):
Similarly, a larger copy style might be intended only for opening paragraphs
of copy or used to distinguish quotes. You might have a text style intended to
be the default text style for all body copy in articles, blog posts, web pages, and
so on. And a particularly small copy style might be limited to use cases like
captions, footnotes, and warnings.
Importantly, you should document any formatting guidelines for each text
style. If your team doesn’t understand the significance of, or logic behind each
text style, then how do you expect them to apply them correctly?
8.16 roomfive.net/plasma-design-system/
Sy s t e ma t i s i n g t h e d e s ig n 159
Take the example (fig 8.11). Looking only at three text styles from this design
system, the following guidelines apply:
Editable components
Establishing a shared library of editable components is key to unlocking the
speed, ease, and efficiency design systems can bring to the design process. I’m
talking about designers being able to:
The following screenshot (fig 8.12) shows a symbol with the Overrides panel
open to the right of the screen. The example shows that I can only edit the
160
text (“View photographer”) and nothing else about this particular button
component.
I would love to show you how powerful a design library of system components
can be, but it’s hard to do so in print. So I’ve created a Skillshare class (8.18)
showing how I currently (at the time of this book’s publication) set up editable,
responsive, and syncable symbols in Sketch.
Sy s t e ma t i s i n g t h e d e s ig n 161
Aside from obvious states like a button’s hover state, or a text input’s
placeholder and value states — remember that all or most of your system
components will likely have different states to cover a wide variety of product
interactions and scenarios. For example, components like radio buttons
and checkboxes come in ‘checked’ and ‘unchecked’ states. They can also be
grouped by ‘fieldset’, requiring a ‘legend’ to make sense of what the options are
(for accessibility and a good user experience).
Providing your designers with easy access to these different states, types,
and groupings of components (plus documentation) is a real timesaver, and
ensures consistent systematic design. It also removes the guesswork for
developers; if you fail to define the styles for these alternate states, they may go
8.17 sketch.com/docs/symbols/
8.18 skl.sh/2xWBObZ
162
rogue and invent their own, sometimes with less than desirable results.
Pattern library
Creating a library of established patterns can be as valuable as a component
library. For example, if you’re creating a new template (or page) for a website,
chances are that web page will use the same global footer (pattern) as the rest
of your website. Creating an easily accessible (and insertable) footer pattern
will save your design team a lot of time, and avoid any confusion on the
development side.
Sy s t e ma t i s i n g t h e d e s ig n 163
FIG 8.16 A responsive pattern from clubofthewaves.com
Responsive design
I’ve always tried to encourage responsive design with visual design teams I’ve
worked with. Your design library can help with this. At the time of writing this,
design tools like Sketch are brilliant for creating responsive components, but
164
not so great for (some) responsive patterns. Patterns are more susceptible to
things like content wrapping, variable heights, and stacking of content (e.g. 3
columns on desktop become 1 column on mobile).
If the design tool you use can’t effectively achieve a responsive pattern, then
your design library should at least cover how the pattern appears at different
browser widths or device sizes. For example, see how the footer pattern
(fig 8.15) and the following example pattern (fig 8.16) respond at three
different browser widths.
Having responsive, established design system patterns like the example above,
designed and ready to easily drop into future design mockups is a valuable
timesaver, and ensures your design team don’t recreate them — slightly
different each time — introducing unintentional amendments to the code, or
rogue elements being introduced.
We talked about Sass variables relating to colour earlier in this chapter. Sass
variables are a valuable asset in design systems. They are snippets of code used
repeatedly throughout a code base, but controlled from one central source.
If you change a Sass variable or design token at the source, it will change
everywhere it is used!
“Design tokens are the visual design atoms of the design system
— specifically, they are named entities that store visual design
attributes. We use them in place of hard-coded values (such as hex
values for color or pixel values for spacing) in order to maintain a
scalable and consistent visual system for UI development.”
Sy s t e ma t i s i n g t h e d e s ig n 165
The Lightning design system’s documentation has an entire page dedicated
to its design tokens, categorised by their function. The screenshot (fig 8.17)
shows their design tokens relating to colour.
Design tokens are very similar to Sass variables, in that they are (ultimately)
snippets of code used repeatedly throughout a product, controlled from one
central source. Sass variables and design tokens can work harmoniously
together to give you a great deal of control over the system at large.
166
Strike up a
conversation with
the developer on
your team that
cares most about the
front-end, and ask
them about creating
Sass variables and
design tokens.
Sy s t e ma t i s i n g t h e d e s ig n 167
The difference between a Sass variable and a design token
A Sass variable is a generic, reusable value — it can be applied in a great
number of different scenarios. For example, it could be a brand colour, which
can be applied to anything from headers to copy, backgrounds, links, buttons,
icons, and so on.
A design token is a more specific value, but it’s also reusable. A design token
can serve specific purposes, like specifying:
• Section colours
• Background colours for use in specific scenarios or patterns
• Small spacing, versus large spacing
• Font sizes
• 5% opacity, versus 50% opacity
• Global states for ‘disabled’ and ‘active’
Design tokens essentially store design decisions — like colour, size, and
space — which can be systematically applied throughout a product.
Use cases
If you only introduce Sass variables in your CSS, you’ll have made a big
improvement. But even Sass variables have their drawbacks, systematically
speaking. For example, take these two scenarios: Option 1 and Option 2. In
both cases we want to apply a background colour to a website (applying CSS to
the body tag).
Design token
$color-background-light: #ffffff;
body {
background-color: $color-background-light;
}
168
Option 1 (design token)
The first option uses a design token. We’ll use a real design token from the
Lightning design system, called: $color-background-light. This design
token is simply the colour white (#ffffff). Our design token and CSS look like
this (fig 8.18).
Sass variable:
$white: #ffffff;
body {
background-color: $white;
}
So far so good. Both options look very similar, and both work fine!
Sy s t e ma t i s i n g t h e d e s ig n 169
2. In Option 2 (Sass variable) we have a problem. Our Sass variable is used in
several places — changing the colour of the Sass variable to a new colour
could cause problems elsewhere in our website.
It’s complicated, I know. But you should consider these caveats when deciding
on design tokens and their use cases in your system.
BuzzFeed’s Solid design system uses design tokens for specific use cases of
170
colour in text (fig 8.20), links, and even SVG fill colours.
Lonely Planet’s design system, Rizzo (fig 8.21), includes design token
documentation for colour that are clearly and effectively presented and
organised by function (e.g. “UI background and borders”, or “section colours”).
A really neat feature on this page is the ability to copy the hex value to your
clipboard simply by clicking on the colour.
Sy s t e ma t i s i n g t h e d e s ig n 171
FIG 8.22 vueds.com/example/#/Design Tokens
$white: #ffffff;
$color-background-light: $white;
$white: #ffffff;
$off-white: #f9f9f9;
$color-background-light: $white;
$color-background-light: $off-white;
172
Now for a full example! Don’t worry if you don’t know code, I’ve attempted to
break down what’s happening to show Sass variables, design tokens, CSS, and
HTML at work (fig 8.24):
Sass variable:
$blue50: #62A5D7;
$brand-color-primary: $blue50;
.primary-header {
color: $brand-color-primary;
}
<h1 class=”primary-header”>Hello</h1>
Sy s t e ma t i s i n g t h e d e s ig n 173
Now, to use our same example again. If we add a new Sass variable ($red50),
then change our $brand-primary design token to use $red50 instead of
$blue50, the change will ‘auto-magically’ take effect in the front-end (website).
Like so (fig 8.25):
Sass variable:
$blue50: #62A5D7;
$red50: #b85c35;
$brand-color-primary: $blue50;
$brand-color-primary: $red50;
This might seem like a simple change (in our example), but imagine these
design tokens used in dozens or hundreds of places throughout a product! You
can see how powerful design tokens can be.
174
It’s good practice to use consistent spacing in digital design, and chances are
you’ve defined some logic for that spacing. If you’re obsessive like me, you
might like working with simple numbers that are divisible by 5 — something
like: 5px, 10px, 15px, 20px, 30px, 60px, 90px, 120px. Or if you’re using a grid
system — like the ‘8-point grid system’ — you would use: 8px, 16px, 24px, 32px,
40px, 48px, 56px, and so on.
GitHub’s Primer design system uses the 8-point grid system, and they’ve
included a page (fig 8.26) in their documentation relating to their variables
used for consistent spacing. Notice in their system: it’s smart that they’ve
additionally added a variable for 4px. A minimum spacing of 8px is a little
limiting.
Sy s t e ma t i s i n g t h e d e s ig n 175
themselves. Design tokens make this process so much easier.
Even if a designer only has access to the design tokens and Sass variables, they
can achieve a lot — quickly — without disturbing developers. If they want to
change the colour blue used in X scenarios, they can. If they want to increase
the space between X and Y elements throughout the product, they can.
That said, even if you’re not planning to build websites yourself, a little
knowledge of code is all you need to update things like design tokens. I really
believe that anything that brings designers and developers closer together is a
good thing. Speak to the developers on your team about gaining access to the
code.
If you want to go deeper into the realms of ‘the role of development in design’,
check out this article (8.19) I wrote on responsive design.
I love the simplicity of Trello. It allows you to create boards to track projects,
milestones, or sprints. Within each board, you can create cards to represent
tasks. Within each card, you can describe the task, and create checklists
8.19 medium.com/@andrewcouldwell/responsive-design-af7a1f14b991
8.20 trello.com
8.21 roomfive.net/adobe-portfolio/
176
for everything that needs to happen to complete the task. You can sort the
checklists by sub-headers, drag and drop everything to re-order and prioritise,
set a due date, add attachments, assign cards to different team members, and
your team can comment on tasks.
The example screenshot (fig 8.27) is of my Trello board from 2015/16, which I
used while designing Adobe Portfolio (8.21):
FIG 8.27 My Trello borad from 2015 while designing Adobe Portfolio
The columns (fig 8.27) are different boards I created to mark milestones and
track tasks (cards) that needed to be completed. For context, all the green
markers signify that I’d completed those tasks (bearing in mind this is an old
Trello board!) — back in 2015/16, there would have been a sea of red markers
on this board, which I gradually turned to green over time!
This was a massive project spanning system design, product design, web
design, marketing, and brand. Organisation for so many tasks and deadlines
was crucial. This was my first real test of Trello, and it served me well! The text
is small, but perhaps you can make out (fig 8.27) that some of the tasks only
had one checklist item to complete the task, where others had 20+ checklist
items.
Sy s t e ma t i s i n g t h e d e s ig n 177
One of my favourite features is when you ‘tick’ tasks off a checklist — or
add more tasks — a percentage complete bar dynamically fills to show your
progress. It’s painfully nerdy, I know, but there’s something very satisfying
about checking tasks off and seeing your progress. You can see in the
screenshot below (fig 8.28) that the first checklist is 100% complete, but the
second checklist is only 82% complete.
178
Look how far we’ve come!
We’ve covered a lot in this chapter, from creating a shared design system
library of editable components, to pattern libraries, responsive design, naming
conventions, working with colours, text styles, spacing, designers writing code,
and creating design tokens. My hope is that you now have a good idea of how to
go about systematising your designs and working more efficiently as a team.
Next we’re going to talk about a very important part of creating a design
system: the documentation.
Sy s t e ma t i s i n g t h e d e s ig n 179
L A Y I N G T H E F OUN D A T I ONS
Doc—
ument
every—
thing!
09
Document everything!
180
Documentation is fundamentally important for design systems. Don’t be
fooled by this chapter appearing so late in this book — this isn’t an indication
that you should leave documentation until last. You shouldn’t. You should
document design and code as you progress, as part of your process.
A ‘UI kit’ needs less introduction than a style guide — you’ve probably seen
UI kits on Dribbble and Behance, or as free downloads promoting a service or
vendor. They look cool, but that’s all they are: just a random assortment of cool-
looking design elements. They often deal with ideals, and can be put to use any
way you wish — because they didn’t (really) have a specific use case in the first
place, as they’re often not based in reality, with real content, problems, users,
or businesses.
Style guides are a valuable addition to web design projects; they’re something
I almost always deliver to a client alongside responsive web page designs.
They single out foundations (e.g. text styles and colours) and components (e.g.
buttons and inputs) from a design — identifying them as deliberate design
decisions that are used consistently throughout a product. A style guide also
covers things that aren’t obvious in design mockups — things like hover states,
error states, and so on.
A simple style guide is like a diagram of all the elements that make up a piece
of IKEA furniture without the instructions telling you how to assemble them.
You might build something that resembles the picture on the box, or you might
D o c u m e n t e v e r y t hi n g ! 181
create something entirely different.
The Disqus style guide (fig 9.1) is a good example of a simple style guide, which
documents the basics like colour, typography, and brand, but doesn’t go into
detail of how to use them. This can be useful, and it serves a purpose, but it
leaves a lot to interpretation.
All this isn’t to say that if you don’t have documentation, you don’t have a
design system. That’s not true, so long as you’ve been designing systematically.
It’s more to say that if you’re going to all the effort of designing and building a
design system, then you should do everything possible to ensure people use it
182
‘properly’ and sustainably.
The basics
Documentation acts as a source of truth — a reference point. If you’re
unsure how to approach, do, write, format, design, or build something , the
documentation is where you’ll find the answer! It benefits everyone, from the
most junior to the most senior members of your team, and it’s great for on-
boarding new team members.
Documentation:
Better together
As I’ve emphasised throughout this book, when creating a design system it’s
important to be mindful that you won’t be the only person who works with
it. We make very deliberate design decisions when we design systematically,
meaning the decisions we make about font size, text styles, spacing, colour,
and animation are made for a reason. These decisions are then applied
repetitively and consistently across multiple elements in the system.
The guidelines and decisions you make when designing a system are no
good just in your head. They shouldn’t be communicated on a ‘need to
know’ basis. Everybody needs to know.
The key is to make documentation part of your (design and build) process.
Don’t leave documentation until the end, or as an afterthought. If you do, it
might never get done, or you’ll forget what you’re actually documenting.
Don’t get caught up in how your documentation looks. Just get the reasoning
behind your design decisions out of your head and into some form of
documentation. You can make it look pretty later. We’ll talk more about how to
format and present the documentation later in this chapter. First, a few further
points to demonstrate why documenting design systems is important.
D o c u m e n t e v e r y t hi n g ! 183
A simple style guide
is like a diagram of
all the elements
that make up a
piece of IKEA
furniture without
the instructions
telling you how to
assemble them.
184
You might build
something that
resembles the
picture on the box,
or you might create
something entirely
different. This
is why you need
documentation.
D o c u m e n t e v e r y t hi n g ! 185
Don’t leave documentation until last
Documentation should never be left to the end of a project. Don’t just take it
from me — Airbnb (9.1) regretted not documenting sooner:
To put some of what we’ve covered thus far in this chapter into perspective,
I’ll reflect on my experience back in 2014-16 when I was designing the Adobe
Portfolio product (9.2) at Behance. I’ll be honest, I didn’t progress the design
system as far as I would have liked or should have. I defined the brand
foundations, designed every component and pattern, and created product
flows and prototypes for every feature. It was more than enough to get the
product built and launched, but I didn’t write any documentation. I should
have.
Not to beat myself up too much; the annotated designs and style guides I
186
created were very detailed. I even defined the CSS on them! But ‘red-line’
design specs aren’t good enough. They’re a form of documentation — sure —
but they don’t go into enough detail. These specs were more than enough to
get the product into development, but they left a lot to interpretation on the
design side — which wasn’t enough for designers to work with in the future.
I would describe fig 9.2 — at best — as a style guide or spec for a design system
pattern. It details every state and scenario. The text is tiny in the picture (as
it’s presented in this book), but take it from me: the annotations clearly define
the sizes, spacing, and specifications. However, it leaves many unanswered
questions:
None of the answers are obvious from the design alone. The above questions
about logic, systematic design, and functionality don’t just help designers
understand how to work with the system, they also help developers build it!
In fact, some of the bullet points above were real questions I was asked by
developers working on this product with me.
Similarly, the following image (fig 9.3) shows button components from the
same product.
9.1 airbnb.design/building-a-visual-language/
9.2 roomfive.net/adobe-portfolio/
D o c u m e n t e v e r y t hi n g ! 187
FIG 9.3 A style guide for button components
This style guide specifies everything needed to build the component, but no
information as to:
188
I can tell you that — in this design system — the meaning behind the colours
is important, and there very definitely are guidelines for when to use each type
of button, and how they pair together. The logic for all of this should have been
documented, or the original intent could be lost.
We are talking somewhat in ideals here. In reality, things don’t always unfold
as optimally as they should. For this particular project, time was very much
a factor. I make my excuses, but this experience taught me a valuable lesson.
What I should have done was to document the design system as it was
being designed — as part of the design process, rather than waiting until a
convenient time… Later… Or in this case never (I moved on from Adobe a
couple months after this product’s launch). This issue is, I’m sure, something
most of you can relate to. Failing to document your design decisions is
sometimes genuinely unavoidable. But often times we’re just making excuses,
and it costs our teams, products, and users down the road.
Document as you go
A good way to approach documentation is to think about what questions
someone might have about what you (or your team) designed. There are no
stupid questions, really. What’s obvious to you might not be obvious to others.
Get it all out of your head, and documented.
D o c u m e n t e v e r y t hi n g ! 189
FIG 9.4 bbc.co.uk/gel/guidelines/accordion
190
The BBC example (fig 9.4) simply uses a wireframe to demonstrate the
correct and incorrect way of designing an accordion. The Google Material
example (fig 9.5) goes into more detail, using real scenarios from a product to
demonstrate how tooltips should look and function.
Colour
Don’t just output a colour palette and hope people use it correctly. A swatch of
colours (alone) can be used in a limitless number of ways. Write guidelines for:
OpenTable specify each colour’s name, hex value, a list of acceptable use cases
for each colour, and even give insight into their thinking behind the colour.
The more insight into the design decisions you give, the better the system’s
adopters will understand and apply the system. Referencing the OpenTable
example (fig 9.6):
“Early Girl is our star for experiences targeting our diners: the
primary color in our corporate identity. Early girl conveys the
energy and passion we invest in connecting our diners to new
experiences and the warmth of great hospitality.”
D o c u m e n t e v e r y t hi n g ! 191
FIG 9.6 Primary brand colour palette
“There are colors used for action and attention, while others are
used for utility. These neutral colors are meant to pair well with the
primary and secondary action colors and provide balance within the
larger palette.”
Consistent and intentional use of colour is not only good for reinforcing a
brand’s identity and message – it also aids the user experience. For example,
it’s good practice to use prominent and consistent colours for calls to action
in order to draw attention to them. If you use too many different colours for
things like buttons and links, it becomes unclear what is actionable, and what
isn’t.
192
OpenTable’s colour documentation defines acceptable use cases for each
colour:
• Their secondary colour palette is only for use in background colours. Not
calls to action, headers, or copy.
• The only colours used for calls to action (e.g. buttons and links) are their two
primary colours.
• Their neutrals palette is used primarily for headers and copy — clearly
distinguishing copy from calls to action.
Brand identity
Branding and logos can be a big investment of time and money, so protect your
brand by documenting how it should be used. Some things to consider:
D o c u m e n t e v e r y t hi n g ! 193
The guidelines and
decisions you make
when designing a
system are no good
just in your head.
They’re not ‘need to
know’. Everyone
on your team
needs to know.
194
• What should we use for a Twitter avatar?
• Where do I find a vector download for this asset?
To use another example (fig 9.8) from OpenTable’s digital brand guidelines: a
nice touch here is that they include a rationale for why the logo looks the way it
does. This may seem trivial to some, but the ethos behind their brand identity
is core to the design of their companies services and products. Understanding
this is key to working with their design system:
“With just a few shapes, our logo says a lot. It symbolizes the
connection we forge between restaurants and diners, the way we
help diners find the perfect fit, and the fact that our customers are
always our focus.”
D o c u m e n t e v e r y t hi n g ! 195
• Do’s and don’ts.
• A download of the digital assets.
• And as seen below (fig 9.9): the “preferred treatment” of the logo, including
what to do when that’s not an option.
Typography
Using a consistent and limited set of text styles, font-families, and font-weights
simplifies the complexity of a user interface and lowers the cognitive load for
the user. It also reduces the page load time, makes the text more legible, and
reduces the amount of code required. As someone who’s built many websites
designed by other designers, I can tell you with confidence: sticking to a
consistent range of text styles is something many designers fail to do.
196
Using a consistent
and limited set of
text styles, font
families, and font
weights simplifies
the complexity of
a user interface and
lowers the cognitive
load for the user.
D o c u m e n t e v e r y t hi n g ! 197
• Define intent for each typeface. Why and when should you use typeface X
over Y? For example, do you use a serif to distinguish headers and a sans-
serif for copy?
• Aim to create a broad range of text styles that cover different scenarios.
Don’t just suggest a body text style and a headline text style, consider cases
like subheaders, leading paragraphs, blockquotes, bulleted lists, image
captions, and so on.
• You probably don’t need a header text style in 19px and 20px font-size. Pick
one.
• What does each text style look like?
• Document, at a minimum, each style’s font-size, line-height, and letter-
spacing.
• Do different header and copy styles have specific margins or padding?
• If appropriate, provide some context as to when to use each text style. Do
you have a default size for copy? A particularly large or small text-size was
likely created for a specific use case. If so, document that intent.
I like how Marvel’s typography documentation (fig 9.10) includes a little write-
up on why they chose the typeface they did.
I like how BBC GEL document “Type in action” (fig 9.11) — showing how
and where to use different typefaces and text styles with simple wireframe
examples.
Copywriting
Your brand likely has a tone of voice and a style to adhere to for copywriting;
these guidelines will apply for all copy across your digital brand, whether
it’s marketing copy, headers, labels, or error messages. If everyone on your
team writes their own copy ‘as they speak’, your brand won’t have a unified
voice, and won’t communicate as effectively as it could. So be sure your
documentation includes answers to questions such as:
198
FIG 9.10 marvelapp.com/styleguide/design/typography
D o c u m e n t e v e r y t hi n g ! 199
• What words do we use? Do we say “Hey!” or “Hello”? Do we say “employee”
or “team member”?
• Do we use sentence case, or title case for headers?
• Do we include a period at the end of headers?
• How do we format date, time, and currency? Do we write “June 24, 1982” or
“24th June, 1982”?
• Are we concerned about localisation/internationalisation?
For more tips on documenting copywriting, take a look back at the “Brand
Tone of Voice and Copywriting” section in the “Laying the Foundations”
chapter in this book.
Components
Components come in many sizes, shapes, colours, and types. Make sure you
capture them all, plus all their variations and states. Some basic considerations
for your documentation to get you started:
• Demonstrate what the component looks like, including all its different states
(e.g. placeholder, value, hover, error, disabled).
200
• Provide context as to why and when you would use the component.
• When should we use one type of button over another?
• Do form inputs need a placeholder?
• Do we hide or show labels above — or inline with — form inputs?
The Primer design system by GitHub has great documentation for their button
components (fig 9.12). They have example live components you can interact
with to really get a feel for how they work. They also show how to apply them
in the code, and include a little write-up as to their use cases. This write-up is
important, especially in cases like Primer where there are multiple types of
buttons — as it provides context as to when to use each variant.
The following two images are examples of text input (fig 9.14) and button
(fig 9.15) component documentation I’ve created. Where the Primer
documentation (fig 9.12) is a living style guide — using dynamic, interactive
components from production — I like to use (static) visuals to demonstrate all
the different states of each component. This allows me to be more explicit as to
their different states.
D o c u m e n t e v e r y t hi n g ! 201
understanding of how the component works, as they allow you to clearly
demonstrate all the different states of the component (I’ll discuss the pros and
cons of using dynamic examples in your documentation later in this chapter.)
When documenting components, I also like to include the basic CSS; this
allows me to be even more explicit about the component’s makeup — plus
I believe it’s healthy for designers to be exposed to CSS and get a sense for
how things are made (fig 9.14). I also include annotated breakdowns of the
202
component (fig 9.13 + 9.15), and written guidelines of their makeup (e.g.
spacing, sizes, and other specifications), and example use cases.
Atlassian do a nice job of annotating the makeup of their components (fig 9.16)
and patterns (fig 9.17):
D o c u m e n t e v e r y t hi n g ! 203
Failing to document
our design decisions
is sometimes
unavoidable. But
often times we’re just
making excuses, and
it costs our teams,
products, and users
down the road.
204
Patterns
Patterns are the larger building blocks of a user interface that are used
repeatedly throughout a design. You should capture each of these patterns, and
answer questions such as:
BBC GEL does a really nice and very thorough job of documenting their design
patterns (fig 9.18); they explain the makeup of the pattern (fig 9.19), what it is,
when you could use it, any differences between iOS and Android (fig 9.20), and
include any rules and variations.
D o c u m e n t e v e r y t hi n g ! 205
They even include guidelines and designs for edge cases, such as:
Bootstrap also does a nice job of documenting patterns (fig 9.23); they lead
with a description of the pattern (not seen in the screenshot, but visit the
link), several interactive example variants of the pattern, and great CSS and
JavaScript documentation. Documenting the code and use cases makes it easy
to integrate the pattern into a project. Design system documentation is for
your whole team: designers and developers.
Marvel (not that Marvel) have a neat little section on how they present avatars
(fig 9.24). It’s smart that they have a fallback to the user’s initials in the absence
of an image. Empty states are an important thing to design for and document.
206
FIG 9.20 Pattern variants for iOS and Android
FIG 9.22 Do’s and don’ts for dealing with long words
D o c u m e n t e v e r y t hi n g ! 207
FIG 9.23 getbootstrap.com/docs/4.2/components/carousel/
Do you have a system philosophy covering how component and patterns are
animated and loaded, what border radius or drop-shadows to use, and so on?
If you do, document it. The Carbon design system by IBM has a section in
their documentation on “Loading” (fig 9.25), including ‘skeleton states’ (load
states used to illustrate the overall architecture of the page while it’s loading),
progressive loading, loading spinners, and so on.
BBC GEL do a great job of documenting their rationale and system thinking for
grid, spacing, and layout (fig 9.26 + 9.27).
208
FIG 9.24 marvelapp.com/styleguide/components/avatars
D o c u m e n t e v e r y t hi n g ! 209
FIG 9.26 bbc.co.uk/gel/guidelines/grid
210
Look back at the “Responsive Design” section of the “Laying the Foundations”
chapter in this book for more on responsive design.
Design tokens
We covered what design tokens are in the previous chapter. Suffice to say,
if you have design tokens, your documentation definitely needs to include a
source of truth for what they are and how to use them!
The Lightning design system documentation (fig 9.28) does a good job of
explaining what each design token is for. Without this context, the design
tokens could be misused, and you could lose the advantages that come with
creating them in the first place.
D o c u m e n t e v e r y t hi n g ! 211
How do you document a design system?
This is probably the most contentious part of this chapter. There are a
multitude of ways you can do this, and there are dozens of tools and resources
created specifically for this task! I won’t get too into the technological depths
of how to document a design system in this book, but you can find a list of
great tools and resources on the website (9.3).
Since there are so many options available to you, you should discuss amongst
your team what approach would be most effective for everyone. Developers are
likely going to be key to these discussions, as they are better placed to set up an
environment to write, edit, share, maintain, and publish the documentation.
It’s easy for a designer to get swept away in the presentation and styling of
something, or get intimidated by technological barriers. Similarly, it’s easy for
a developer to get caught up in the most efficient or securest means of content
managing, maintaining, and hosting the documentation. Both parties can be
highly opinionated. Don’t allow this friction to cause delay.
I felt this friction the first time I approached design system documentation.
9.3 designsystemfoundations.com/resources/
212
Don’t leave
documentation
until the end, or as
an afterthought.
If you do, it might
never get done. Make
documentation part
of your design and
build process.
D o c u m e n t e v e r y t hi n g ! 213
As a designer and a developer, I felt almost imprisoned by the multitude of
options available! My initial goal — having seen so many stellar examples
online — was to create a custom branded website to document the system.
Thankfully, after a little research I quickly realised that the time spent thinking
about, researching, designing, and building this website was only delaying me
actually creating the documentation!
So to get started I simply created a new Google Doc (9.4) and started typing.
As the document grew, I realised Google Docs covered all the basics (from the
list earlier) of what we needed it to do.
9.4 google.com/docs/about/
214
• The ‘Document Outline’ feature — plus the ability to link/anchor to
bookmarks and headings within the document — provides (good enough)
navigation.
FIG 9.30 You can use tables to format content (e.g. do’s and don’ts)
Note: These Google Doc example screenshots are from the Plasma design
system. If you’re interested, I wrote a case study (9.5) about the design and
documentation of this system.
9.5 medium.com/owl-studios/plasma-design-system-4d63fb6c1afc
D o c u m e n t e v e r y t hi n g ! 215
FIG 9.31 Documenting components
216
Google Docs is a genuinely good tool for documentation, but it only takes you
so far. Where the Plasma design system was concerned, we did experience
growing pains:
• It’s inefficient to quickly link to specific content within the document (e.g.
from Slack or an email).
• Searching for content could be easier.
• You can’t embed live, interactive examples of components and patterns.
• And despite your best efforts to format the content ‘nicely’, a Google
Doc isn’t the most engaging way to present content (depending on your
audience).
For what it’s worth, this particular Google Doc did its job for nearly a year while
we focussed on more pressing tasks, like actually building and implementing
the system! Don’t lose sight of your priorities.
• A designer iterates on a button, the code and design library are updated, but
the designer forgets to update the image mockup of the button in the static
documentation.
• Similarly, if any code snippets (in the static documentation) are written
as non-dynamic text entries, then they won’t reflect any updates made to
the production code, unless someone remembers to manually make the
updates.
It’s an easy mistake to make, but the documentation isn’t of much use when it’s
different to the actual design system.
The key difference between a living style guide and static documentation is
that a living style guide contains live design elements pulled directly from —
or embedded from — the live source code. They are real and dynamic — not
(only) an image or a mockup of a component. You can hover over a component
and interact with it. And perhaps most importantly, they (somewhat
automatically) evolve as your system evolves.
D o c u m e n t e v e r y t hi n g ! 217
With a living style guide, any changes you make to production will be
reflected in the documentation, at least where the live examples and code are
concerned. Any write-up concerning the foundation, component, or pattern
will still need to be updated.
More and more tools and resources are being created all the time. As stated
before; technology moves too fast for print, so rather than writing about them
in this book — and risking tools becoming obsolete, or missing new tools post-
publishing — I’ve linked to various tools and resources on this book’s website
(9.6).
• A platform the whole team can contribute to and update on a regular basis.
• The ability to write and format text and upload images.
9.6 designsystemfoundations.com/resources/
9.7 gitbook.com
9.8 wikipedia.org/wiki/Markdown
9.9 github.com
218
• The ability to add new pages and organise content by sections and
subsections.
• A simple navigation which scales when you add new content.
• The ability to pull in or embed real components and patterns from
production (code) to demonstrate design system elements.
• To publish the documentation online (publicly), or — if you prefer it be
private — to make it password protected.
Note: The above list isn’t comprehensive, it’s just to get you started. I advise
that you get together with your team to discuss the best solutions to benefit all
parties.
For what it’s worth, in the Plasma design system example earlier — where we
moved from static documentation in Google Docs to a more dynamic solution
— we used a tool called GitBook (9.7).
We’ve covered a lot in this chapter! Let’s take the foot off the pedal and look at
some inspiration for documenting design systems in the next chapter.
D o c u m e n t e v e r y t hi n g ! 219
L A Y I N G T H E F OUN D A T I ONS
Gall—
ery
10
Gallery
220
In the “Laying the Foundations” chapter of this book, we talked about
companies building public websites to show off their digital brand guidelines.
More and more, it’s becoming common practice for companies to make their
brand guidelines and design system documentation public. Designers and
developers are publicly opening up about their code, processes, and design
thinking.
The great thing about these companies sharing their documentation publicly
is that we can learn from them! Building on the examples I’ve included
throughout this book, this chapter is a curation of great examples for you
to explore, and includes a little insight into what makes them such good
examples.
Basic Culture
The Basic Culture Manual website (fig 10.1) is a first-class example of a
G all e r y 221
company flexing its muscles, giving an insight into their culture (quite literally
in this case), and sending a firm message that: ‘We make cool shit! Hire us.
Work with us.’
222
detailed breakdowns of established patterns (like accordions, cards, and
carousels) used throughout their digital properties, filtered by ‘Web’ and ‘App’.
Note: notice how each pattern shows whether there’s a recent update to a
pattern, and the date it was last updated:
One of the things I love most about GEL is how all of their documentation
reads more like an article than documentation (fig 10.4). It’s well laid out and
presented, and the content is inviting, easy to navigate and consume. Each
page — whether it’s a “how-to” article, or documentation governing typography
or patterns — is clearly introduced with an easy to digest overview, the latest
update, and the team that contributed to the system element or editorial. Any
relevant downloads or links to the code are clearly visible, and each page has
a sub-navigation, which is fixed on-scroll allowing you to skip-to important
G all e r y 223
FIG 10.4 bbc.co.uk/gel/guidelines/category/foundations
224
content, so you can find what you’re looking for quickly.
What I find particularly great is their section of “How-to” articles (fig 10.5).
This clearly demonstrates a level of care and responsibility that all designers
and engineers should aspire to. To quote from their “How to Design for
Accessibility” article (10.2):
“We want the things we make to work for the whole audience,
because the BBC believes everyone deserves the best. Our audience
is diverse, not only in gender, age, and culture, but also in the ways
they interact with us and the abilities they have to do so. To deliver
an inclusive experience, accessibility must be an integral part of the
user experience design. It must also be integral to development and
testing.”
The BBC’s design system documentation and digital brand guidelines are not
just a technical blueprint, they are also thoughtful and inspirational, and give
their teams a mission.
It’s interesting to note that the entire BBC GEL website is black and white.
Colour is seldom used. Even the visuals focus heavily on wireframes to
G all e r y 225
demonstrate their design system patterns — like the following example
screenshot (fig 10.6) showing a variant on their “Cards” pattern.
This is worth noting because by focusing more on structure than style, they are
highlighting that their system foundations and patterns are really just a vehicle
for their content. As we covered earlier in this book: design for the content,
don’t fit the content to the design.
FIG 10.6 Visuals focus on the pattern’s makeup, not visual design
The BBC’s patterns make no assumptions about the content. Given the
abundance and wide range of content the BBC’s various digital properties
cover, it’s imperative that their patterns are designed to work with any
content, not just best case scenarios. And their documentation is a testament
to that. They don’t rely on ‘pretty’ visuals for them to work. They include long
headlines, as opposed to convenient character counts. Patterns have variants
to cover different scenarios, media, and content (fig 10.7). And they are all
designed with accessibility in mind.
10.1 bbc.co.uk/gel/
10.2 bbc.co.uk/gel/guidelines/how-to-design-for-accessibility
226
FIG 10.7 Documenting example use cases for pattern variants
The BBC’s documentation shares more or less everything related to the design
of their systems, even including some code. In contrast, Airbnb takes a very
different approach.
Airbnb Design
Airbnb’s public design system content shows that you can create buzz around
your design system without actually making your system or its documentation
public. Their “Airbnb Design” website (fig 10.8) clearly demonstrates their
strong design and engineering cultures, and the work that goes into creating
their design systems. Their website features designers and engineers giving
insight into their design process via articles, events, and case studies. It
doesn’t give much away in terms of the system or documentation itself, but
it’s an interesting insight into how they think about and design products and
systems.
G all e r y 227
FIG 10.8 airbnb.design
228
Lightning design system (Salesforce)
The Lightning design system documentation (fig 10.9) is a treasure trove of
knowledge. They even have a download section where you can download a
comprehensive Sketch file of all the components and icons they use, and they
even offer their pre-built CSS framework!
The Lightning documentation is very much a ‘living style guide’; much of what
you see is pulled directly from source, so you can interact with the system
components and patterns.
G all e r y 229
It’s all very well and
good to design and
document a mass
of components and
patterns, but
they’re effectively
a UI kit without some
logic for how they
work together.
230
Where Salesforce’s Lightning documentation is very much a living style guide,
in contrast, the Nachos design system is more of a static style guide.
I love how detailed Trello gets with their image specs; this (for me) is
something that makes (some) static documentation websites better than
(some) living style guides. Interactive components are great, but I would still
advise including some kind of specs to really highlight what goes into the
creation of components and patterns. This way, designers learn how it’s
made, and don’t just see the end result.
G all e r y 231
FIG 10.12 Documenting the anatomy of design elements
232
Breaking down the anatomy of how a button is designed (fig 10.11) — or how
icons are created and what size they should be (fig 10.12) — is both interesting
and insightful, whether you’re a member of the team using the design system,
or an outsider admiring their work. Remember the note earlier on insight into
culture… Well, the attention to detail Trello’s documentation demonstrates is
inspiring.
I also like that Trello have included their design principles (fig 10.13) in with
their documentation. In an ideal world, these things are inseparable. It’s
arguably ‘odd’ that so many design system documentation websites leave
principles out (or don’t have any).
Their documentation home page is inviting and clear as to what you’re looking
at; it also includes its purpose and mission:
G all e r y 233
“We created this style guide to act as a central location where we
house a live inventory of UI components, brand guidelines, brand
assets, code snippets, developer guidelines, and more. Anyone
working on the Marvel product is encouraged to stay familiar with
this style guide and help ensure that it is kept up-to-date.”
Notice the orange “We’re hiring” prompt above their logo (fig 10.14)…
Recruitment is a key motivation for publicising a good deal of documentation
websites — so why not make it obvious? If I was looking for a job with a
company that cared about system design, I’d click that link.
Talking of ‘pretty websites’ (and flagging that we’re hiring)... Damn, Primer,
look at you (fig 10.15):
234
The better your
documentation is
designed and the
easier the content is
to navigate, the more
likely your team is
to engage with it!
Especially designers.
G all e r y 235
Primer design system (GitHub)
Similar to Marvel — only more pronounced this time — is GitHub’s reference
to recruitment, proudly and prominently presented in this beautifully
designed gateway page to their design system documentation. Sexy design is
certainly not the objective of design system documentation — don’t get me
wrong — but if you’re going to all the trouble of creating this documentation,
why not also make it look great. The better it’s designed and the easier the
content is to navigate, the more likely your team is to engage with it!
236
primary button should be used on a page. I particularly like their breakdown of
each button types’ purpose:
It’s also helpful that, alongside their code documentation for each component,
they include a link out to CodePen where you can view and edit the code (10.3).
I think this is a great idea, as it gives you the opportunity to play with the code
so you can really understand how it works. This also helps to bridge the gap
between design and development.
10.3 codepen.io/team/carbon/pen/xeZxLe
G all e r y 237
Seeds (Sprout Social)
I really like how Sprout Social presents their brand guidelines and design
system documentation in one central hub (fig 10.18). I’ve stressed the
importance of having a source of truth, and utilising digital brand guidelines as
the foundations of products and design systems. Keeping everything together
makes perfect sense. They should work together, so why separate them?
Seed’s home page introduces what their “Creative Hub” is and why it’s
238
important, and a simple navigation at the top breaks the content into “Brand”,
“Product”, “Visual”, and “Writing”. Love it. It also has a page with downloads, so
their brand assets are easily accessible.
I’m glad I found an example of a company who has chosen to protect some
of it’s design system content (fig 10.19). Not everything needs to be for the
public’s eyes — some content is sensitive, or you may just prefer not to share
it so openly. That’s totally fine, but you want to be sure you’re maintaining
your single source of truth, rather than have public content ‘here’ and private
content ‘there’. Password protecting content that’s for personnel eyes only is a
simple solution.
G all e r y 239
FIG 10.20 solid.buzzfeed.com/release-notes.html
10.4 designsystemfoundations.com/resources/
10.5 @andrewcouldwell
240
Thumbprint design system (Thumbtack)
Thumbprint has a great “Guidelines” section in their documentation; it makes
everything a little clearer for the system’s adopters. Within ‘Guidelines’ there is
a section on colour (fig 10.21), which has nice do’s and don’ts for each colour.
Moving on
It’s my hope that the examples in this chapter have given you a sense of the
range of possibilities and best practices for presenting Digital Foundations
and design system documentation, or even giving insight into your company’s
design and engineering cultures.
I’ve done my best to curate the finest examples being shared today. However,
there are so many more great examples out there, and new design system and
documentation websites are popping up all the time — so be sure to check out
this book’s website (10.4) to get even more inspiration! And please share (10.5)
any great examples you find.
Next up, we’ll talk about one of the most difficult — but arguably most vital —
parts of design system work: maintaining a design system.
G all e r y 241
L A Y I N G T H E F OUN D A T I ONS
Main—
tain—
ing a
design
system
11
242
Congratulations, you’ve designed, documented, built, and integrated a design
system! (Or let’s assume you have). Now for the bad news: that was the easy
part! Keeping the design, code, and documentation in sync is arguably the
most challenging part of working with design systems.
• Designers update their mockups, style guides, library, etc., but for whatever
reason, the developers miss the changes — or they never get around to
them — and the design changes don’t get implemented in the code.
• Team members save work on their desktop or personal computers, as
opposed to a shared team drive/location.
• Designers use their own personal set of foundations, components, and
patterns, as opposed to a shared team library.
• The design and code is updated, but the documentation isn’t.
• Team members use different (incompatible) tools and/or software.
• Teams aren’t kept in the loop about changes to the design system.
• Team members feel excluded when they don’t feel involved in — or have any
opportunities to influence — the design or evolution of the system.
All of the above scenarios lead to the same outcome: designers work with one
or more alternate versions of the design system, while developers work with
the actual live version of the design system. This is frustrating for all parties —
it’s also completely avoidable.
When design teams work with shared assets, it ensures consistency and cuts
down on unintentional design discrepancies. I think a shared library of design
assets is the real game changer part of design systems — it’s where much of the
speed, ease, and efficiency comes in (at least on the design side of things).
M ai n t ai n i n g a d e s ig n s y s t e m 243
I’m going to break my own rule concerning talking about tools in this book and
recommend Sketch (11.1) for web and product designers working with teams
of other designers. This is only going on my experience. I also recommend you
try other tools and see what works best for your team. I’ve linked to some of
these tools on this book’s website (11.2). But as a working example in this book,
I’ll use Sketch for demonstration purposes.
Using Sketch Library (11.3), you can create a master design system file
containing all design system foundations, components (fig 11.1 + 11.2), and
patterns and save it somewhere accessible by all your team. It needs to be
somewhere that will automatically sync any changes (e.g. Dropbox 11.4).
With your master design system file in a shared location, designers on your
team can very simply and quickly insert assets from the master file into their
11.1 sketch.com
11.2 designsystemfoundations.com/resources/
11.3 sketch.com/docs/libraries/
11.4 dropbox.com
11.5 skl.sh/2xWBObZ
244
FIG 11.2 Zoomed in on the same Sketch file as fig 11.1
own design files. Then, any updates made to the master file will sync to any
design files using its assets.
Don’t worry if this sounds difficult — it’s not — it’s actually really fast and easy
to set up! I’ve created a Skillshare class (11.5) demonstrating how to set up
editable design system components and a Sketch Library.
M ai n t ai n i n g a d e s ig n s y s t e m 245
If your team decides to change the colour of a button, it would be as simple as
updating the button symbol in the master design system library file. In Sketch,
the next time a member of your team is working on a design mockup, which
uses this button they will see a “Library Updates Available” prompt to the top-
right of their screen (fig 11.3) letting them know there’s been an update to a
design asset they are using.
FIG 11.4 Before and after view to compare what the updates are
For patterns which are too complex to work as editable (Sketch) symbols
accessed via Sketch Library, I recommend creating individual design files
for each pattern and saving them somewhere easily accessible by your team.
Again, this needs to be somewhere your team can easily sync updates or access
246
the latest version of the file. In the below example’s case (fig 11.5), I stored
pattern files in a folder on Dropbox:
Designers can also refer to the documentation for the pattern to see visuals,
a write-up, guidelines, and use cases (fig 11.7). Documentation can play a key
role in maintaining a design system, as it provides a ‘system of record’ for how
system elements are intended to be used.
M ai n t ai n i n g a d e s ig n s y s t e m 247
FIG 11.6 A pattern in Sketch, designed for each breakpoint’s grid
Your documentation should be a source of truth. When your team debates how
248
something should look or work, the documentation is the place they will look
for the answer — assuming you did due diligence and documented your design
thinking when you designed the foundation, component, or pattern in question.
Make it a part of your process to update design and code documentation
when you create new — or update existing — system elements.
Frustrated by having to keep Sketch files up to date and in-sync with the live
version of their design system components, Airbnb sought to bridge the gap
between design and code. They did this by experimenting with — and creating
— an open-source library that allows you to write React (11.7) components that
render to Sketch documents. This effectively allows designers and engineers
to ‘design in the browser’, working with real data, APIs, and Flexbox (11.8).
11.6 designsystemfoundations.com/resources/
11.7 reactjs.org
11.8 css-tricks.com/snippets/css/a-guide-to-flexbox/
M ai n t ai n i n g a d e s ig n s y s t e m 249
Make it part of your
process to update
design libraries and
any documentation
when you create new,
or update existing
design system
elements.
250
See Airbnb’s Painting with Code article (11.9) by Design Technologist, Jon Gold
(11.10) for more about this experiment.
More realistically speaking: keeping the design and code in sync comes down
to process and discipline.
Here’s the process — if you update the design of an existing system element, or
add a new one, you should:
1. Update the library, style guide(s), or whatever design file(s) your team uses
to share design assets.
2. Make sure the update is effectively tracked and queued for a developer to
update the code, (for example, by creating a Github Issue).
3. Update any documentation.
4. Inform your team about the change. Ideally, they should be aware of the
change before it’s been made. If you include them in the process of figuring
out why the change is needed and what the change should be, you will avoid
any conflicts or repetition of work.
It’s advisable to assign responsibilities within your team to make sure the
above process is adhered to. We’ll talk about design system guardians,
ambassadors, teams, and leaders later in this chapter.
11.9 airbnb.design/painting-with-code/
11.10 jon.gold
M ai n t ai n i n g a d e s ig n s y s t e m 251
Airbnb’s Head of Design, Alex Schleifer (11.11) comments:
The line between designer and developer is blurred at GitHub (11.12), which is
hardly surprising given the nature of their business. Diana Mounter (11.13), a
design system leader at GitHub, explains the benefit of designers writing code:
11.11 twitter.com/alexoid
11.12 medium.com/@broccolini/design-systems-at-github-c8e5378d2542
11.13 broccolini.net
252
2. Keep a changelog so team members can see what’s been updated, why the
change was made, and when it changed.
3. Update the team when changes are made so people are kept in-the-know.
A meeting is good, but people can be absent from meetings, and meetings
don’t always work well for remote teams, so consider something more
inclusive — like sending an email, or writing a journal, post, or log of release
notes — that detail the changes.
4. You could have a Slack channel dedicated to questions and updates related
to the design system.
5. You could hold ‘office hours’, where members of the team — or a design
system lead — are available to anybody who wishes to discuss anything
about the system.
6. Use a task tracking tool like GitHub Issues, Trello, or Jira so people can post
requests and bugs, or ask questions.
“We started using team posts to tell people about new Primer [design
system] updates, to give people a heads up when we shipped large
code changes, and share more information behind our decisions.”
It’s interesting to note that GitHub wanted to “share more information behind
our decisions”. Providing context is always important in design systems.
Context helps to prevent repeated tweaks of elements, which previous
iterations have already addressed. When making a change, be sure to note:
M ai n t ai n i n g a d e s ig n s y s t e m 253
doing office hours 3 days per week to give people a regular time to
ask us questions in person. This is used for pairing on code, talking
through product updates that need our support, and responding to
general questions.”
Whether you appoint ‘first responders’, set up office hours, or use a Slack
channel to field requests and address issues, it’s vital to the longevity and
health of your design system that you keep the whole team in the loop and
engaged with the system’s evolution.
We’re human. We forget things from time-to-time. Things slip through the
cracks. And then — to put it bluntly — you have some people who resist
adopting the system, for whatever reason.
And keep-in-mind: the goal is to educate, not enforce. People don’t generally
respond well to orders. Approach the management of a design system from a
teaching and collaborating perspective, not as the ruling authority.
With that said, let’s look at a few different strategies for establishing design
system leadership on your team.
254
You need to be
realistic about the
design system’s
chances of running
smoothly, and
evolving, without
some level of
oversight and
management.
M ai n t ai n i n g a d e s ig n s y s t e m 255
Appoint a design system lead
A design system lead’s key responsibilities are to:
Appointing a ‘design system lead’ can help to keep things running smoothly.
They advocate (and, when necessary, go to battle) for the system so your team
(and design system) can thrive.
Where designers on product teams can have a narrow vision of design at their
company (i.e. they generally only see what their team works on — they don’t
see what every team is working on), the design systems team should have
greater oversight of design across all product teams. This awareness helps to
identify patterns and components that can be shared across teams — avoiding
teams overlapping and needlessly creating the same elements twice.
11.14 link.medium.com/e6xYd06HGX
11.15 benlister.net
256
Ambassadors and guardians
For organisations with multiple product teams and/or locations, it’s somewhat
unrealistic to expect a single design system lead — or even a design systems
team — to manage everything. They can’t be everywhere at once. And perhaps
most importantly, they can’t be expected to know all the intricacies and edge
cases of each product team’s work, and the user and business problems they
are solving (which is vital knowledge for creating things like design system
patterns).
Sprout Social’s Design Systems Team Lead, Ben Lister (11.15) continues:
“When looking for ambassadors, we seek out people who are not
only passionate about design systems but also those who are systems
thinkers, willing to stand up for good design and advocate for best
practices.”
The great thing about this approach is — even if you’re not empowered to hire
a design system lead or create a separate team — you can suggest that you
or other members of your team take on a “design system guardian” role. As a
guardian, you and system-minded designers from other product teams meet to
collaborate on creating and maintaining your system.
M ai n t ai n i n g a d e s ig n s y s t e m 257
Whatever approach you choose, be mindful that a design system is unlikely
to take-off — or survive after the fact — without leadership. Be proactive in
helping your team and design system thrive. You can create a team and appoint
leaders at the outset of a design system project, or introduce them as the
project matures and gains trust (and a budget).
Closing thoughts
A design system is a marathon, not a sprint. They’re never finished. A good
design system is flexible and open to change. You will grow and develop your
foundations, components, and patterns as you learn more about your user’s
needs and behaviour, and as your brand and business evolve.
Ultimately, the goal is for design systems to become integral to how your
company designs and builds products. To achieve this you need to approach
system design not just from a technical stance, but also from a position of
cooperation. Diplomacy and communication are as important as the pixels you
craft and the code you write.
Linzi Berry (11.16), the Design Systems Lead at Lyft, wrote an excellent article
(11.17) on approaching design systems in a human-centered way. To quote
from her article:
“Systems design is not only scientific and meticulous, it’s the mastery
of interacting with people in a sensitive and effective way. The
system is an internal tool and our coworkers are its users. They’re
human, just like us, and they want to do a good job. By empathizing,
reassuring, educating, remaining flexible, sharing, communicating,
and staying positive — we’ve overcome many hurdles and are
excited to take on new challenges in the future.”
The designs we create can shape our world in positive ways. When we design
systematically, we are able to efficiently create better experiences for our users
— but design systems also empower us to work better together.
11.16 twitter.com/taptodismiss
11.17 medium.com/tap-to-dismiss/art-of-diplomacy-2ad1e2cac795
258
My hope is that by reading this book, you are inspired and empowered — not
just to lay strong foundations for the work you do, but also for the relationships
you build. Perhaps the most powerful advantage design systems have is that
they allow us to create better work together.
I sincerely hope you enjoyed this book, and that it helps you and your team.
Good luck :)
M ai n t ai n i n g a d e s ig n s y s t e m 259
About
the
author
— Andrew Couldwell
In 2014, he moved overseas to New York City to be the lead product designer
of a new Adobe product. Working with a team of developers at Behance,
together they launched Adobe Portfolio, a tool that helps creatives share their
work online. In 2016, he moved onto a new challenge at WeWork as the system
design lead, where he initiated, designed, and documented their digital brand
guidelines, and two design systems.
Andrew does his best work when he’s designing impactful, meaningful digital
products, and working with creative people who want to help people and make
the world a better place. He also loves to build what he designs.
Currently based in Los Angeles, California, Andrew lives with his wife, Meagan,
and their three cats. And they’re expecting their first child twins in 2020!
01 clubofthewaves.com
owlstudios.co
[email protected]
Club of the Waves
This name appears a few times thoroughout this
book — partly because it’s a website driven by a
design system, and partly because it’s something
I’m proud to share. Club of the Waves is a labour
of love I founded back in 2006. It’s an international
showcase of artists and photographers whose
work focusses on surfing and surf culture.
Check out the website and find new artists and
photographers I think you’ll love.
clubofthewaves.com
@clubofthewaves
B e hi n d t h e b o o k
Acknowledgments
I couldn’t have created this book without the support and love of my wonderful
wife and best friend, Meagan Couldwell (02). Writing and publishing a book
was only ever going to cost money, not make money. I had to take time out of
paid work to do it. She only ever encouraged me to do this, and that’s pretty
amazing! Meagan also did a brilliant job editing this book — it simply wouldn’t
be what it is without her. Her patience, input, revisions, and contributions (as
a web designer herself) made the content so much better — all for which I’m
very grateful.
Also, thanks to our little family of cats! Fluffy, Theo, and Junior. I most
certainly wrote some of this book with Fluffy on my lap, Theo pressed into me
by my side, or attempting to type while Junior, Fluffy, or Theo tried to sit on the
keyboard. Our little family of cats and my wife make me a happier person. A
happy, healthy mind helps you do your best work.
I’d like to thank my amazing family: Mum, Ian, grandparents, uncles, aunties,
cousins... everyone. Though I may live on a different continent to them
now, they shaped who I am — and have always been supportive in my crazy
endeavours to live and work abroad. And thank you to my ‘new’ family in the
United States who have made me feel so welcome. I love you all.
Professionally, almost everyone I’ve worked with has in some small or large
way informed much of what I cover in this book. Good and bad, thank you for
the learning experiences.
I’d like to specifically thank a few former work colleagues. Nick Stamas (03) is
one of the rare people I’ve worked with whose talent and experimental nature
pushed me to be better, learn, and grow. Working with Nick on design systems
informed a good deal of the content of this book — and for that, he deserves
huge credit and thanks. Also, thanks to Keaton Price (04), who’s patient,
systematic, and iterative approach to design problems (and office politics) is
inspiring — and something I held in mind a good few times while writing this
book. And finally, Bobby Ghoshal (05), who set me on the path to discovering
the Foundations Model and the idea of Digital Foundations. He didn’t tell me
what to do or how to do it. Instead, he freed me from the chains of my daily
routine and encouraged me to do what would ultimately be some of my best
and most influential work to date.
I’d like to thank Shane Mielke (06). The only part of this book process I knew
how to do was write. The rest was a mystery to me. Shane shared with me his
story of how he self-published his book, Launch It, and everything he’d learned
doing it.
Thank you to my good friend, Paul Davies (07). Paul took a chance on me early
in my career, which proved to be a big turning point for me (08). 11 years later,
he kindly volunteered to proof-read this book, which I graciously accepted. It’s
just a shame he hated it! Only joking :)
And finally, thank you! It means a lot to me that you read my book. I hope
you enjoyed it and found it useful. If you did, I’d really appreciate it if you’d
recommend this book to your friends, colleagues, and followers.
02 owltastic.com
03 nickstamas.com
04 keaton.design
05 twitter.com/ghoshal
06 shanemielke.com
07 bhvr.co.uk
08 medium.com/@andrewcouldwell/i-nearly-quit-42c246c15b74
A c k n o wl e dg e m e n t s
For you, Dad
I would like to dedicate this book to my dad,
Michael Couldwell. I lost my dad to a short battle
with cancer before my 30th birthday. It knocked
me sideways. He raised me to be competitive —
for better or for worse. Much of my teen years
and young adulthood were spent trying to make
my Dad proud. He never saw me leave England’s
shores to live and work in New York City. He only
caught a glimpse of my career taking off before
that. He never got to meet my wife, or my future
kids. I often wonder how he’d feel about much of
what I’ve done since he left. I wrote a book! I’m
proud of that. I think he would be too.
D e dica t i o n