Skyscanner Design System. One year in.

JamesFerguson16 1,646 views 34 slides Nov 12, 2017
Slide 1
Slide 1 of 109
Slide 1
1
Slide 2
2
Slide 3
3
Slide 4
4
Slide 5
5
Slide 6
6
Slide 7
7
Slide 8
8
Slide 9
9
Slide 10
10
Slide 11
11
Slide 12
12
Slide 13
13
Slide 14
14
Slide 15
15
Slide 16
16
Slide 17
17
Slide 18
18
Slide 19
19
Slide 20
20
Slide 21
21
Slide 22
22
Slide 23
23
Slide 24
24
Slide 25
25
Slide 26
26
Slide 27
27
Slide 28
28
Slide 29
29
Slide 30
30
Slide 31
31
Slide 32
32
Slide 33
33
Slide 34
34
Slide 35
35
Slide 36
36
Slide 37
37
Slide 38
38
Slide 39
39
Slide 40
40
Slide 41
41
Slide 42
42
Slide 43
43
Slide 44
44
Slide 45
45
Slide 46
46
Slide 47
47
Slide 48
48
Slide 49
49
Slide 50
50
Slide 51
51
Slide 52
52
Slide 53
53
Slide 54
54
Slide 55
55
Slide 56
56
Slide 57
57
Slide 58
58
Slide 59
59
Slide 60
60
Slide 61
61
Slide 62
62
Slide 63
63
Slide 64
64
Slide 65
65
Slide 66
66
Slide 67
67
Slide 68
68
Slide 69
69
Slide 70
70
Slide 71
71
Slide 72
72
Slide 73
73
Slide 74
74
Slide 75
75
Slide 76
76
Slide 77
77
Slide 78
78
Slide 79
79
Slide 80
80
Slide 81
81
Slide 82
82
Slide 83
83
Slide 84
84
Slide 85
85
Slide 86
86
Slide 87
87
Slide 88
88
Slide 89
89
Slide 90
90
Slide 91
91
Slide 92
92
Slide 93
93
Slide 94
94
Slide 95
95
Slide 96
96
Slide 97
97
Slide 98
98
Slide 99
99
Slide 100
100
Slide 101
101
Slide 102
102
Slide 103
103
Slide 104
104
Slide 105
105
Slide 106
106
Slide 107
107
Slide 108
108
Slide 109
109

About This Presentation

Presentation from Codemotion Milan, Friday 10th October.

Design and Engineering at scale is hard. I’ll uncover our journey in creating a Design System for Skyscanner in a bid to bridge the gap between design and engineering. I’ll share our learnings on how we sold it to the business by proving ...


Slide Content

@mrjamesferguson
Skyscanner Design System
One year in.

@mrjamesferguson
Hello!

@mrjamesferguson
I’m James, a designer and maker.
Hello!

@mrjamesferguson
Hello!
I’m from Edinburgh.

@mrjamesferguson
Hello!
I work here, at Skyscanner.

@mrjamesferguson
Who are Skyscanner?

@mrjamesferguson
The world’s travel search engine.
Who are Skyscanner?

@mrjamesferguson
Who are Skyscanner?

@mrjamesferguson
Who are Skyscanner?

@mrjamesferguson
Who are Skyscanner?
Founded in 2003.

@mrjamesferguson
Who are Skyscanner?
Nearly 1000 employees across 11 global cities.

@mrjamesferguson
Who are Skyscanner?
Over 60m monthly active users.

@mrjamesferguson
Who are Skyscanner?
Over 70m app downloads.

@mrjamesferguson
Who are Skyscanner?
Recently acquired by Chinese travel giant, Ctrip.

@mrjamesferguson
Setting the scene

@mrjamesferguson
Setting the scene
2014

@mrjamesferguson
Setting the scene
2014
One monolithic codebase.

@mrjamesferguson
Setting the scene
2014
Designs were funnelled

through a centralised and

co-located team

@mrjamesferguson
Setting the scene
2015

@mrjamesferguson
Setting the scene
2015
We squadified.

@mrjamesferguson
Setting the scene
Product Design Engineering Growth

@mrjamesferguson
Setting the scene
Product Design Engineering Growth

@mrjamesferguson
Setting the scene
2015
Spotify and other Interney Economy businesses

@mrjamesferguson
Setting the scene
Squad
Small cross functional teams made
up of around 10 people.

@mrjamesferguson
Setting the scene
Squad
Each squad has a clear mission

and are empowered to be

fully autonomous.

@mrjamesferguson
Setting the scene

@mrjamesferguson
Setting the scene

@mrjamesferguson
Setting the scene
Tribe

@mrjamesferguson
Setting the scene
Tribe

@mrjamesferguson
Setting the scene
Tribe Tribe Tribe Tribe

@mrjamesferguson
Setting the scene
GOOD

@mrjamesferguson
Setting the scene
GOOD
Accelerated our ability to ship at scale.

@mrjamesferguson
Setting the scene
BAD

@mrjamesferguson
Setting the scene
BAD
Duplicated efforts and lack of sharing

@mrjamesferguson
BAD
Setting the scene

@mrjamesferguson
BAD
Setting the scene

@mrjamesferguson
BAD
Setting the scene

@mrjamesferguson
BAD
Setting the scene

@mrjamesferguson
Setting the scene
BAD
Inconsistency amongst our products and platforms.

@mrjamesferguson
Setting the scene
BAD

@mrjamesferguson
Setting the scene
BAD

@mrjamesferguson
Setting the scene
BAD

@mrjamesferguson
Setting the scene
BAD
Making site wide changes was really difficult.

@mrjamesferguson
Setting the scene
BAD

@mrjamesferguson
Setting the scene
BAD
SearchSearch Search Search

@mrjamesferguson
Setting the scene
UGLY

@mrjamesferguson
Setting the scene
UGLY
No standards resulted in a free for all.

@mrjamesferguson
Setting the scene
UGLY

@mrjamesferguson
Setting the scene
UGLY

@mrjamesferguson
Setting the scene

@mrjamesferguson
Setting the scene

@mrjamesferguson
How we got started

@mrjamesferguson
Unify the colour palette.
How we got started

@mrjamesferguson
From this…
Section
#B2E57F
#FFA500#FF0027#F6A1B3
#E7E7E8
#4191D3
#6ACA26
#8265D9
#ED5173
#9CE708
#4C4C4C
#3B404D
#FFD726
#FA8A19
#FF5C4D
#B03743
#00BF96
#008075
#86DD41
#FFC506
#D0021B
#0084FF
#C9C9CE
#000000
#71A220
#C6DAA6
#F5F5F5
#AAE702
#FA7F19
#D00620
#B0B0B0
#17C0E9
#21D7EE
#00BBCC
#02BBC4
#1BA8BC
#006982
#21C4D9
#0094B8
#5BE2ED
#29A8BB
#9EE8ED
#C2EAEC
#1394B5
#E1A70A
#FAC25F
#E8B401
#C7D834
#AAE700
#34363D
#4D5059
#FAF3B0

@mrjamesferguson
…to this.
Section

@mrjamesferguson
If we did nothing else, this was still a huge achievement.
How we got started

@mrjamesferguson
Published an npm package of sass variables.
How we got started

@mrjamesferguson
Hard sell
How we got started
Getting teams to try
something new alongside
their existing schedules
was hard. Really hard.

@mrjamesferguson
Beer pays!
How we got started
Naturally, our team at

the time became the

first adopter.
A few beers later, we managed to convince a couple of other
teams to give it ago.

@mrjamesferguson
Started to gain traction
How we got started

@mrjamesferguson
Getting buy in.
How we got started

@mrjamesferguson
An equal partnership between design and engineering.
How we got started

@mrjamesferguson
Money talks
How we got started
SearchSearch

@mrjamesferguson

@mrjamesferguson

@mrjamesferguson
Our approach

@mrjamesferguson
Our mission
Our approach
Bring Design and
Engineering together to
enable squads to create
beautiful, coherent
products at scale.

@mrjamesferguson
The need to standardise.
Our approach

@mrjamesferguson
Clarity Conf
Our approach

@mrjamesferguson
Tech tour
Our approach
•Salesforce
•Facebook
•Dropbox
•Twitter
•Google

@mrjamesferguson
Our approach
Atomic Design principles

@mrjamesferguson
Our approach
Atomic Design principles
Tokens
e.g. colour

@mrjamesferguson
Our approach
Atomic Design principles
Atoms
e.g. buttons
Tokens
e.g. colour

@mrjamesferguson
Our approach
Atomic Design principles
Atoms
e.g. buttons
Tokens
e.g. colour
Molecules
e.g. date picker

@mrjamesferguson
Our approach
Atomic Design principles
Atoms
e.g. buttons
Tokens
e.g. colour
Molecules
e.g. date picker
Organisms
e.g. search controls

@mrjamesferguson
Our approach
Atomic Design principles
Atoms
e.g. buttons
Tokens
e.g. colour
Molecules
e.g. date picker
Organisms
e.g. search controls
Systems
e.g. results view

@mrjamesferguson
Our approach
Atomic Design principles
Atoms
e.g. buttons
Tokens
e.g. colour
Molecules
e.g. date picker
Organisms
e.g. search controls
Systems
e.g. results view
Owned by Us

@mrjamesferguson
Our approach
Atomic Design principles
Atoms
e.g. buttons
Tokens
e.g. colour
Molecules
e.g. date picker
Organisms
e.g. search controls
Systems
e.g. results view
Owned by Us Owned by Squads

@mrjamesferguson
Our approach
Typography + Spacing

@mrjamesferguson
Baseline grid
Our approach
A baseline grid is an underlying
structure that helps guide the
vertical spacing of a design.
Just like using columns for laying out elements horizontally, the baseline

grid is a way to help you make decisions and build consistency into a layout.

@mrjamesferguson
Native font-stack
Our approach
-apple-system, BlinkMacSystemFont, 'Roboto', 'Oxygen',
'Ubuntu', 'Cantarell', 'Fira Sans', 'Droid Sans',
'Helvetica Neue', 'Arial', sans-serif

@mrjamesferguson
Our approach
Core principles

@mrjamesferguson
Our approach
Core principles
Accessibility

@mrjamesferguson
Our approach
Core principles
ThemingAccessibility

@mrjamesferguson
Our approach
Core principles
ThemingAccessibility Right to Left

@mrjamesferguson
Our approach
Supporting Designers

@mrjamesferguson
Our approach
Supporting Designers
Vs

@mrjamesferguson
Our approach
Supporting Designers
And many, many others.
Vs

@mrjamesferguson
Our approach
Supporting Engineers

@mrjamesferguson
Our approach
Supporting Engineers
JSON{ }
Design tokens

@mrjamesferguson
Our approach
Supporting Engineers
JSON{ }
Design tokens Mixins

@mrjamesferguson
Our approach
Supporting Engineers
JSON{ }
Design tokens Mixins
React
components

@mrjamesferguson
Our approach
Supporting Engineers
JSON{ }
Design tokens Mixins
React
components
React Native
components

@mrjamesferguson
Our approach
Supporting Engineers
JSON{ }
Design tokens Mixins
React
components
React Native
components
All opt-in, versioned using SEMVER and available as npm packages.

@mrjamesferguson
3 simple steps
Our approach

@mrjamesferguson
3 simple steps
Our approach

@mrjamesferguson
3 simple steps
Our approach

@mrjamesferguson
3 simple steps
Our approach

@mrjamesferguson
Adoption

@mrjamesferguson
Adoption

@mrjamesferguson
Adoption

@mrjamesferguson
2017
Adoption
0
75
150
225
300
2017
JanFebMarAprMayJunJulAugSeptOct
Sass React React Native

@mrjamesferguson
The elephant in the room

@mrjamesferguson
The elephant in the room
Design Engineering

@mrjamesferguson
The elephant in the room
Design EngineeringPeople

@mrjamesferguson
Collaborating, enabling and helping.
The elephant in the room

@mrjamesferguson
Stu! we found useful

@mrjamesferguson
Useful tools
Section
•Sketch libraries
•Auto layout plugin for Sketch
•React Storybook
•Lerna
•Theo
•Design Systems Slack

@mrjamesferguson
backpack.prod.aws.skyscnr.com