Slide 1

Slide 1 text

Design Systems Engineering
 Scaling User Interfaces
 
 Christoph Reinartz | @pistenprinz |

Slide 2

Slide 2 text

Title
 subtitle

Slide 3

Slide 3 text

Based on a true story
 Share what worked

Slide 4

Slide 4 text

Design Systems
 An Overview

Slide 5

Slide 5 text

Components Process UI Layer Styleguide Design 
 Language Documentation Assets UI Kit Design 
 Principles Inspired by: https://medium.com/@NateBaldwin/anatomy-of-a-design-system-7a6b0677bf5

Slide 6

Slide 6 text

Definition
 CSS Framework This is the front-end code and production-ready design assets. The CSS framework is referenced and consumed by the product(s). It is a modular, scalable, and extensible tool that fosters rapid development and typically confirms to a CI/ CD development environment. https://medium.com/@NateBaldwin/clarifying-our-style-guide-nomenclature-ab72358ee111#.nduusckg1

Slide 7

Slide 7 text

Title
 subtitle

Slide 8

Slide 8 text

This is the documentation resource for the design system. Since the design system is purely code and assets, the style guide is a site to demonstrate the UI patterns with references to aid in implementation and usage. Definition
 Styleguide https://medium.com/@NateBaldwin/clarifying-our-style-guide-nomenclature-ab72358ee111#.nduusckg1

Slide 9

Slide 9 text

Title
 subtitle

Slide 10

Slide 10 text

Definition
 Pattern Library This is a library of standardized UI patterns. They are the final designs, and can be delivered in the form of a repository of design files, or a symbol library/UI kit. It is the resource for designers to build from. https://medium.com/@NateBaldwin/clarifying-our-style-guide-nomenclature-ab72358ee111#.nduusckg1

Slide 11

Slide 11 text

Definition
 Design System The entirety of the standardized UI patterns, framework, assets, and documentation, as well as the processes and people involved. It is the ecosystem that drives and supports the unified evolution of the product(s). https://medium.com/@NateBaldwin/clarifying-our-style-guide-nomenclature-ab72358ee111#.nduusckg1

Slide 12

Slide 12 text

Design Systems
 Examples

Slide 13

Slide 13 text

No content

Slide 14

Slide 14 text

No content

Slide 15

Slide 15 text

No content

Slide 16

Slide 16 text

No content

Slide 17

Slide 17 text

Design System Why do we need it?

Slide 18

Slide 18 text

#1 Establish design and code consistency Remove clutter in code code and design

Slide 19

Slide 19 text

#2 Improve code quality and maintainability Reduce technical debt

Slide 20

Slide 20 text

#3 Provide base for modern & sustainable UI rebuild Build modern applications fast

Slide 21

Slide 21 text

Specificity graph 2012
 The specificity wall

Slide 22

Slide 22 text

#banner_topnav div.tablink li div.dropdown #table.localization
 a.plain:hover { color:#fff !important; } Show me your code
 Specificity 254

Slide 23

Slide 23 text

No content

Slide 24

Slide 24 text

peaks at the beginning of the stylesheet Graph 2015 
 Way better, but still…

Slide 25

Slide 25 text

HTML5

Slide 26

Slide 26 text

#1 Sprites were out of control We built Frankenstein with Icons

Slide 27

Slide 27 text

Title
 subtitle

Slide 28

Slide 28 text

#2 Too much CSS How many Selectors do you use? ALL!

Slide 29

Slide 29 text

#3 Desktop first approach Oh you poor mobile devices

Slide 30

Slide 30 text

#4 Inconsistency and missing Styleguide Or how to create fifty shades of grey

Slide 31

Slide 31 text

No content

Slide 32

Slide 32 text

Title
 subtitle

Slide 33

Slide 33 text

Title
 subtitle

Slide 34

Slide 34 text

Title
 subtitle

Slide 35

Slide 35 text

#5 Repeat yourself 97 different footers - no single source of truth

Slide 36

Slide 36 text

Title
 subtitle

Slide 37

Slide 37 text

Title
 subtitle

Slide 38

Slide 38 text

Title
 subtitle

Slide 39

Slide 39 text

Title
 subtitle

Slide 40

Slide 40 text

#6 Overly complex CSS/DOM structure div, div, div, span, span, span

Slide 41

Slide 41 text

#7 Too much confusion in code Scary comments

Slide 42

Slide 42 text

Title
 subtitle

Slide 43

Slide 43 text

Components Process UI Layer Styleguide Design 
 Language Documentation Assets UI Kit Design 
 Principles

Slide 44

Slide 44 text

Processes & Integration Methodologies and people

Slide 45

Slide 45 text

#issue JPG to Jira Task driven development Developing on the live system

Slide 46

Slide 46 text

No content

Slide 47

Slide 47 text

# Transforming the workflow Migration to a Design Systems Engineering Team

Slide 48

Slide 48 text

Digital Design UI Engineering

Slide 49

Slide 49 text

Design Development HTML CSS JavaScript

Slide 50

Slide 50 text

Design Development Accessibility Animations Integration Semantic Usability Performance JS Framework X

Slide 51

Slide 51 text

Design Development Accessibility Animations Integration Semantic Usability Performance JS Framework X

Slide 52

Slide 52 text

Design Development Accessibility Animations Integration Semantic Usability Performance JS Framework X

Slide 53

Slide 53 text

Design Development Accessibility Animations Integration Semantic Usability Performance JS Framework X

Slide 54

Slide 54 text

# Atomic Design An approach for modular interfaces

Slide 55

Slide 55 text

http://bradfrost.com/blog/post/atomic-design-in-one-gif/

Slide 56

Slide 56 text

The initial version 
 Simple but it worked

Slide 57

Slide 57 text

No content

Slide 58

Slide 58 text

Form Elements Buttons Navigation Teaser Header Footer Typographie Icons Tabs Grid

Slide 59

Slide 59 text

No content

Slide 60

Slide 60 text

Good news everyone
 We do it differently now - The sales pitch

Slide 61

Slide 61 text

No content

Slide 62

Slide 62 text

Components Process UI Layer Styleguide Design 
 Language Documentation Assets UI Kit Design 
 Principles

Slide 63

Slide 63 text

No content

Slide 64

Slide 64 text

No content

Slide 65

Slide 65 text

No content

Slide 66

Slide 66 text

Title
 subtitle Project Ironman Large scale CSS refactoring Christoph Reinartz - ScotlandCSS - Edinburgh, June 1st 2016

Slide 67

Slide 67 text

New CSS Core Old CSS Core normalize.css reset.css border-box content-box mobile first (min-width) desktop first (max-width) media queries inline in separate files embed SVG icon image sprites ITCSS layering [something] BEM, OOCSS [something] Post processing (MQPacker etc.) nothing (Assetic)

Slide 68

Slide 68 text

peaks at the beginning of the stylesheet Graph before Ironman
 Way better, but still…

Slide 69

Slide 69 text

New CSS base refactored CSS Graph after Ironman
 Improved curve…

Slide 70

Slide 70 text

Components Process CSS 
 Framework Styleguide Design 
 Language Documentation Assets UI Kit Design 
 Principles

Slide 71

Slide 71 text

From refactoring to rebuilding
 A new Search Result component

Slide 72

Slide 72 text

Refactoring first
 Disposable refactoring of old code

Slide 73

Slide 73 text

Step 1 New codebase integrated Old layout kept because don’t release what you haven’t tested

Slide 74

Slide 74 text

Step 2 Iterate new versions of UI components A new Search Result component based on the new base

Slide 75

Slide 75 text

Rebuilding later
 Relaunch a few weeks after the refactoring

Slide 76

Slide 76 text

Release and test
 And qualify it

Slide 77

Slide 77 text

Step 3 Go to step 2 Rebuild more Components

Slide 78

Slide 78 text

Rebuild more components
 Relaunch a few weeks after the refactoring

Slide 79

Slide 79 text

No content

Slide 80

Slide 80 text

Components Process UI Layer Styleguide Design 
 Language Documentation Assets UI Kit Design 
 Principles

Slide 81

Slide 81 text

<3 New Icon System From sprites to Inline-SVG

Slide 82

Slide 82 text

Title
 subtitle

Slide 83

Slide 83 text

Title
 subtitle

Slide 84

Slide 84 text

Title
 subtitle

Slide 85

Slide 85 text

Title
 subtitle

Slide 86

Slide 86 text

description details infobig hotelconnect smiley heart towel star pictures wifi spa beach breakfast pool pet golf tv family eco parking bed_single bed_double bed_small couple universal home menu share edit checkout checkin general rates faq_circle faq info_circle info arrow_right_circle arrow_left_circle arrow_down_circle arrow_up_circle arrow_right arrow_left arrow_down arrow_up tick exclamation x plus minus image media bag chair team candy journalist news hoteltest plus_circle minus_circle x_circle filter dashboard statistics hotel2 hotel travel2 travel booking hotelchain upload delete tick_circle exclamation_circle contact profile info product history giveback lock calendar search publisher career comment download map smiley_belowaverage smiley_satisfactory smiley_good smiley_verygood smiley_excellent smiley_belowaverage smiley_satisfactory smiley_good smiley_verygood smiley_excellent level sort department poi_citycentre poi_airport poi_sight poi_conference poi_harbor poi_mainstation poi_nature poi_nightlife poi_sports filterreset join thin share2 movie call piechart diagram music multimedia wifi spa beach breakfast pool pet golf tv family eco parking bed_single bed_double bed_small couple universal home menu share edit checkout checkin general rates description details infobig hotelconnect smiley heart towel star pictures icn_profile icn_info icn_product icn_history icn_giveback icn_lock icn_calendar icn_search icn_publisher icn_career icn_comment icn_download icn_map icn_dashboard icn_statistics icn_hotel2 icn_hotel icn_travel2 icn_travel icn_booking icn_hotelchain icn_upload icn_delete icn_tick_circle exclamation_circle contact image media bag chair team candy journalist news hoteltest plus_circle minus_circle x_circle icn_filter arrow_right_circle arrow_left_circle arrow_down_circle arrow_up_circle arrow_right arrow_left arrow_down arrow_up tick exclamation x plus minus faq_circle faq info_circle info smiley_belowaverage smiley_satisfactory smiley_good smiley_verygood smiley_excellent smiley_belowaverage smiley_satisfactory smiley_good smiley_verygood smiley_excellent level sort department poi_citycentre poi_airport poi_sight poi_conference poi_harbor poi_mainstation poi_nature poi_nightlife poi_sports join thin filterreset share2 movie call piechart diagram music multimedia

Slide 87

Slide 87 text

No content

Slide 88

Slide 88 text

Components Process UI Layer Styleguide Design 
 Language Documentation Assets UI Kit Design 
 Principles

Slide 89

Slide 89 text

<3 Sorted the colors Established and introduce a color palette

Slide 90

Slide 90 text

trv-blue-light #3f9fc1 trv-red-light #d67763 trv-green-light #8cba3f trv-green-lighter #b2d17f trv-green-dark #4c7b00 trv-juri-light #697379 trv-juri-lighter #9ba2a6 trv-juri-lightest #ebeced trv-blue-dark #005f81 trv-blue #007fad trv-orange #f48f00 trv-red #c94a30 trv-orange-dark #b76b00 trv-orange-light #f6ab3f trv-blue-lightest #e5f2f6 trv-red-lightest #f9ecea trv-orange-lightest #fdf3e5 trv-red-dark #963724 trv-green #66a400 trv-juri #37454d trv-juri-dark #293339 16 12 18 16 12 12 18 12 18 16 * trv-juri-very-light #cdd0d2 trv-red-very-light #f1d1cb trv-green-very-light #d8e8bf trv-orange-very-light #fce3bf trv-blue-very-light #bfdfea trv-red-lighter #e4a49b trv-orange-lighter #f9c780 trv-blue-lighter #7fbfd6 trv-green-lightest #eff5e5

Slide 91

Slide 91 text

Title
 subtitle Now 2015

Slide 92

Slide 92 text

<3 Code Styleguide And Documentation

Slide 93

Slide 93 text

No content

Slide 94

Slide 94 text

No content

Slide 95

Slide 95 text

No content

Slide 96

Slide 96 text

No content

Slide 97

Slide 97 text

No content

Slide 98

Slide 98 text

Components Process UI Layer Styleguide Design 
 Language Documentation Assets UI Kit Design 
 Principles

Slide 99

Slide 99 text

Lessons learned What went wrong? And why?

Slide 100

Slide 100 text

No content

Slide 101

Slide 101 text


 “We built a Design System for you w/o knowing your needs. You should totally use it”

Slide 102

Slide 102 text

No content

Slide 103

Slide 103 text


 “We built a Design System together. Everybody can use it”

Slide 104

Slide 104 text

Slide 105

Slide 105 text

pull-left vs. fl-leading
 nobody uses this old thing, or? deprecated class non - deprecated class 97% 3%

Slide 106

Slide 106 text

Slide 107

Slide 107 text

The roll-out Vision handling
 The verbose version

Slide 108

Slide 108 text

The roll-out Vision
 Filtered by Designers

Slide 109

Slide 109 text

21 admin-library patternlab-loader admin-lib trivago-core_patterns daisy-and-trivi fork visualisation admin-tools application composer package composer package composer package symfony application scss _patterns _patterns

Slide 110

Slide 110 text

patternlab-loader dmin-lib -core_patterns admin-tools application oser package oser package composer package symfony application scss _patterns _patterns

Slide 111

Slide 111 text

100% Pattern lab loader reusable shared templates 100%

Slide 112

Slide 112 text

CSS Components to be open sourced soon 80%

Slide 113

Slide 113 text

Slide 114

Slide 114 text

daisy-and-trivi applications

Slide 115

Slide 115 text

daisy-and-trivi applications trivago core patterns

Slide 116

Slide 116 text

daisy-and-trivi applications trivago core patterns

Slide 117

Slide 117 text

No content

Slide 118

Slide 118 text

No content

Slide 119

Slide 119 text

No content

Slide 120

Slide 120 text

No content

Slide 121

Slide 121 text

No content

Slide 122

Slide 122 text

No content

Slide 123

Slide 123 text

No content

Slide 124

Slide 124 text

daisy-and-trivi applications trivago core patterns

Slide 125

Slide 125 text

Design System Metrics
 Some data

Slide 126

Slide 126 text


 “We saved two weeks when using the System” * *) Communication Team

Slide 127

Slide 127 text


 16 contributors

Slide 128

Slide 128 text


 12 teams using it

Slide 129

Slide 129 text


 15 public applications using it

Slide 130

Slide 130 text

Title
 subtitle

Slide 131

Slide 131 text

Title
 subtitle

Slide 132

Slide 132 text

Title
 subtitle

Slide 133

Slide 133 text


 5 external companies using it

Slide 134

Slide 134 text

Christoph Reinartz UI/UX Engineer @trivago
 
 Web: www.creinartz.de
 twitter: @pistenprinz