Slide 1

Slide 1 text

Systems of Systems DS Conference — Helsinki, Finland — March 14, 2018 Nathan Cur?s
 @nathanacur*s

Slide 2

Slide 2 text

Defining Design Systems bit.ly/8s-define-design-systems The Design System! A library of Visual Style and UI Components offered as 
 HTML/CSS code, Sketch assets, Tokens, and Documenta*on System

Slide 3

Slide 3 text

Visual Style UI Components Lato Light / Heavy COLOR TYPOGRAPHY SPACE ICONOGRAPHY BORDERS LAYERING Bu#on Sign In Don’t have an … Link with your… LAYOUT GRID HEADING DECK PARAGRAPH LINK INPUT SELECT BUTTON TABS TAB TAB TAB System

Slide 4

Slide 4 text

Product Sign In with your EightShapes account Email Address Don't have an account? Sign up now: Create an account Forgot password? Password Sign In Sign In with your EightShapes account Email Address Password Forgot password? Sign In Don't have an account? Sign up now: Create an account Visual Style UI Components Lato Light / Heavy COLOR TYPOGRAPHY SPACE ICONOGRAPHY BORDERS LAYERING Bu#on Sign In Don’t have an … Link with your… LAYOUT GRID HEADING DECK PARAGRAPH LINK INPUT SELECT BUTTON TABS TAB TAB TAB System

Slide 5

Slide 5 text

SignIn.js CreateAccount.js ForgotPassword.js Sign In with your EightShapes account Email Address Don't have an account? Sign up now: Create an account Forgot password? Password Sign In Enter your phone number or email: Forgot Password? Next Name Email Address Password Confirm Password Learn more about why we ask for this informa;on. Mobile Phone First Last Next Step Create your EightShapes Account Designer Sign In Artboard Create Account Artboard Forgot Password Artboar Engineer 2 System Product Visual Style UI Components Lato Light / Heavy COLOR TYPOGRAPHY SPACE ICONOGRAPHY BORDERS LAYERING Bu#on Sign In Don’t have an … Link with your… LAYOUT GRID HEADING DECK PARAGRAPH LINK INPUT SELECT BUTTON TABS TAB TAB TAB Engineer

Slide 6

Slide 6 text

SignIn.js CreateAccount.js ForgotPassword.js Sign In with your EightShapes account Email Address Don't have an account? Sign up now: Create an account Forgot password? Password Sign In Enter your phone number or email: Forgot Password? Next Name Email Address Password Confirm Password Learn more about why we ask for this informa;on. Mobile Phone First Last Next Step Create your EightShapes Account Designer Sign In Artboard Create Account Artboard Forgot Password Artboard Engineer System System .H TM L System .Sketch Product

Slide 7

Slide 7 text

Designers Engineers Product Manager Others (QA, etc) DESIGN ASSETS A library of design tooling offered in tool(s) relevant to the design community FRONT END CODE A library of reusable HTML/CSS assets (maybe built in a JavaScript framework) Product System Outputs System .H TM L System .Sketch

Slide 8

Slide 8 text

Product Tokens in Design Systems bit.ly/8s-tokens-in-design-systems Designers Engineers Product Manager Others (QA, etc) System Outputs System .H TM L System .Sketch System .Tokens TOKENS A library of hierarchical property/value pairs as an visual language abstrac?on. color.background.light: #d7d7d7
 color.text.primary.onLight: #333333
 border.control.default: solid 1px #808080 space.inset.1x: 16px

Slide 9

Slide 9 text

Product DOCUMENTATION SITE A separate codebase and content corresponding to the documenta?on describing the system. System .H TM L System .Sketch System .Tokens Designers Engineers Product Manager Others (QA, etc) System .D ocs System Outputs

Slide 10

Slide 10 text

Product v1.3.0 System .H TM L

Slide 11

Slide 11 text

No content

Slide 12

Slide 12 text

How to Adopt? “You choose…” ✅✅✅◻◻ BIG BANG
 (ALL AT ONCE) INCREMENTAL
 (ONE STORY AT A TIME)

Slide 13

Slide 13 text

13 Step-by-Step Adop7on Model 0
 NON-
 ADOPTER Branding / visual identity is out of date Product is obviously not complying with the design system Interface is dated and inconsistent with latest conventions 1
 DEPENDENCY & PLAN Codebase has system npm dependency Team has compiled, tuned, & organized systems assets for integration & extension Team has groomed the work to demonstrate timing & commitment via roadmap & backlog 2
 CORE
 STYLE Color Typography Icons Space Replaced variables and rules via tokens 3
 PRIORITY
 COMPONENTS Buttons Forms: Checkboxes, Radios, Text, Select Headings, Article Text Tabs Search Bar List Groups 4
 FULL 
 ADOPTION Data Tables Modals Dialogs Pills Toggles Adopted every relevant component offered No more than 9 months behind latest minor release AND No more than 6 months behind latest minor release AND No more than 3 months behind latest minor release AND Adop?ng Design Systems hZp:/ /bit.ly/8s-adop?ng-systems

Slide 14

Slide 14 text

14 Conversa7on with Adop7ng Product Squad 1. Will you?
 2. When will you?
 3. When will your roadmap and backlog reflect it? 4. When will you integrate the npm package? 5. When will you have a “Hello System!” in produc*on? STEP 1: 
 DEPENDENCY & PLAN STEP 2: CORE STYLE

Slide 15

Slide 15 text

Look for the Dependency in /package.json

Slide 16

Slide 16 text

Release History New Enhanced Fixed

Slide 17

Slide 17 text

Versioning How? System v1.8.0 MONOLITH PRIMARY OUTPUTS v2.7.0 v1.9.0 v1.9.2 v24.1.0 System .Sketch System .H TM L System .Tokens System .D oc System .Tokens Button Input Tooltip D ataTable v2.7.0 v1.4.2 v1.9.0 v3.2.0 v2.12.1 BY COMPONENT

Slide 18

Slide 18 text

hZps:/ /atlaskit.atlassian.com/packages

Slide 19

Slide 19 text

No content

Slide 20

Slide 20 text

When Versioning By Component… ON VISUAL STYLE ACROSS COMPONENTS When a token changes, do it propagate across everything at the same *me? Do button v2.3.1 and tabs v3.1.9 have color or font conflicts? Can I use button v2.3.1 and button v3.1.2 on the same page? 
 ON DOCUMENTATION Where’s doc for button v1.9.0 , since it’s now at v2.3.0 ?

Slide 21

Slide 21 text

MAJOR MINOR PATCH v1.3.0 semver.org (FEATURE) (BREAKING)

Slide 22

Slide 22 text

Is this a breaking change? Yes. Absolutely. Not at all. In a #core-system-team
 Slack channel somewhere… ¯\_(ϑ)_/¯ Credit: Kevin Powell (@kevinmpowell)

Slide 23

Slide 23 text

Versioning & Breaking hZp:/ /designsystem.morningstar.com/about/versioning.html Defines, generally, how versioning works. Defines, specifically, when updates are considered breaking changes.

Slide 24

Slide 24 text

Example: Breaking the UI via Wrapping Changes to weight, size, leZer spacing and other type proper?es that could wrap unexpectedly when used in fixed layout se`ngs. The Universe is a Big Place The Universe is a Big Place BEFORE AFTER

Slide 25

Slide 25 text

Example: Breaking the UI via Spacing Changes to box model props not of a component’s internal dynamic content. Tip: Be unopinionated on component’s margin without context. VIDEO VIDEO Supernova Supernova An astronomical event that occurs during the last stages of a massive star's life. An astronomical event that occurs during the last stages of a massive star's life. Galaxies Galaxies Speed of Light Speed of Light Milky Way Milky Way View View 16 32 BEFORE AFTER

Slide 26

Slide 26 text

Major version = backwards incompaNble (aka, “breaking”) changes are introduced to the public API (and UI) ≠ sweeping code refactoring ≠ radical redesign In many cases…

Slide 27

Slide 27 text

Oh no! A major release! We just adopted nine months ago. “

Slide 28

Slide 28 text

Upgrades are a Communica7on Challenge ADOPTING
 version 1.0.0 UPGRADING 
 to version 2.0.0 HTML
 Markup Complete Front End Refactor =
 Heavy Squad Effort Small Tac*cal Changes =
 Minimal HTML Impact, Use Upgrade Guide CSS
 Styling Complete Redesign =
 Heavy UI Impact & Restyling Small Tac*cal Changes =
 Minimal UI Impact, Use Upgrade Guide Packaging & IntegraNon New Framework =
 Moderate Investment Updated Packaging =
 Minimal Retooling

Slide 29

Slide 29 text

System .H TM L Product 2 Product 3 Product 3 Product 1 Product 1 v1.1.0 v1.1.0 v1.1.0 v1.1.0 v1.2.0 v1.2.1 v1.2.1 v1.2.1 v1.2.1 v1.2.1 v1.3.0 v1.3.0 v1.3.0 v1.3.0

Slide 30

Slide 30 text

Products own their desNny.
 System equip products to realize that desNny. Principles of Design Systems bit.ly/8s-principles-systems

Slide 31

Slide 31 text

Intermediary between a system and those making experiences with it

Slide 32

Slide 32 text

INTERMEDIARY 1 OF 3 Distributor An en*ty managing packaged dependencies other teams use to make an experience.

Slide 33

Slide 33 text

We’d love to adopt, but we must leverage it through the platform. Otherwise, our hands are tied. “

Slide 34

Slide 34 text

System .H TM L

Slide 35

Slide 35 text

Platform System .H TM L

Slide 36

Slide 36 text

Intermediary 1 of 3: Distributor Platform Disseminate quickly Manage change predictably Signal mature prac*ces Block ini*al adop*on Prevent frequent upgrades Complicate upgrades
 (must sync across products) Product 3 Product 2 v1.8.0 v1.1.0 System .H TM L

Slide 37

Slide 37 text

Distributors Takeaways 1. Can’t adopt without ‘em, so live with them. 2. Forge strong(er) rela*onships. 3. Have the dependents make the case: 
 “We need this system (upgrade?), now!”

Slide 38

Slide 38 text

INTERMEDIARY 2 OF 3 Translator An en*ty transla*ng a system (HTML & CSS) into their framework (usually, JavaScript or a CMS).

Slide 39

Slide 39 text

REACT VUE EMBER ANGULAR

Slide 40

Slide 40 text

EMBED INTO A
 JAVASCRIPT FRAMEWORK? RELEASE JUST
 “VANILLA” HTML & CSS? OR

Slide 41

Slide 41 text

System .React

Slide 42

Slide 42 text

CommiTng to a JavaScript Framework System .React JavaScript is powerful! JavaScript encapsulates! It’s what devs want! (right?) Tooling startup is *me consuming Tes*ng is more complex Unusable by minority adopters

Slide 43

Slide 43 text

System .React Tokens Offer a Back Door to Visual Style System .Tokens

Slide 44

Slide 44 text

System .H TM L

Slide 45

Slide 45 text

System .H TM L System .React System .Vue

Slide 46

Slide 46 text

YOUR CUSTOMERS YOUR SYSTEM THEIR CUSTOMERS System .H TM L System .React System .Vue v1.1.0 v?.?.? v?.?.? v1.2.0 v1.9.0

Slide 47

Slide 47 text

1. Includes some components, not others. 2. Renames components 3. Adds components (DatePicker, Carousel) 4. Omits component features SYSTEM.REACT Bukons Selects Dialogs Forms Links Spinner Modals Container No*fica*on PopOver ProgressIndicator Tool*ps SYSTEM Alerts Bukons Bukon Groups Combo Boxes Data Tables Dialogs Forms Links List Groups Loaders Mastheads Menus Modals Nav Containers No*fica*ons Page Shells Pagina*on Popovers Range Sliders Search Fields Site Naviga*on Steppers Switches Tags Tool*ps Top Hats

Slide 48

Slide 48 text

System
 Product Manager Awesome, a Primary React ! Are you also making Secondary & Flat? System.React Dev
 (from a Product squad) I’m no*ced you use our v1.2.0. We’re at v1.9.0. When might you upgrade? System
 Product Manager Um, I’m on deadline for six months. So, not soon. System.React Dev
 (from a Product squad)

Slide 49

Slide 49 text

Intermediary 2 of 3: Translator Praise the ini*a*ve! Leverage a community Incomplete features Missing components Different documenta*on
 (if it even exists) Poor support
 (devs have a product to make!) No commitment to upgrade in sync as system improves System .H TM L System .React

Slide 50

Slide 50 text

Could You Support All the Frameworks? Sync releases Integrate documenta*on Integrate support OMG, seriously? Our org is challenged by suppor*ng one! System .H TM L System .React System .Vue v2.0.0 v2.0.0 v2.0.0

Slide 51

Slide 51 text

Translator Takeaways 1. Approach with cau*ous curiousity. 2. Educate on how to turn an open source passion play into a success. 3. Protect your brand: if they age or don’t meet your standards, they aren’t part of the program.

Slide 52

Slide 52 text

INTERMEDIARY 3 OF 3 Themer A team that themes a system’s UI components with a different visual style (color, type, etc).

Slide 53

Slide 53 text

Team
 1 Team
 2 Team
 3 Team
 4 designsystem.morningstar.com/charts/donut.html CORE COMPONENTS developer.morningstar.com/components/poreolio-x-ray COMPLEX COMPONENTS
 PRODUCTS THEME
 Montserrat Streamline New Colors New Typography New Icons , THEMED

Slide 54

Slide 54 text

TEAM 2 TEAM 3 “DESIGN SYSTEM” CLIENT TEAMS CLIENT 1 CLIENT 2 CLIENT 3 System .Tokens System .U I System .Charts Them e 1 Them e 2 Them e 3 Com plex Com ponents

Slide 55

Slide 55 text

Theming Basics 1. Separate library-wide and component-specific styles. 2. Embed library-wide in design tokens useful across plaCorms. 3. Isolate component variables from CSS selectors and rules. 4. Leverage compiler features, like Sass’ !default.

Slide 56

Slide 56 text

Themer Takeaways 1. Build a sophis*cated theming architecture only if you need one. Avoid it otherwise. 2. Beware the innocuous request that quickly grows into library-wide refactoring (breaking change!).

Slide 57

Slide 57 text

OR O ur System Another System

Slide 58

Slide 58 text

CompeNtor A design system available as a subs*tute for your system.

Slide 59

Slide 59 text

Star7ng from Nothing, Teams Have Choices ADOPT A CODE KIT,
 SKIN W/ STYLE ADOPT A LANGUAGE, CODE OURSELVES CREATE DESIGN & CODE FROM SCRATCH Op?on
 1 Op?on
 2 Op?on
 3 Op?on
 4 ADOPT AN 
 IN-HOUSE SYSTEM

Slide 60

Slide 60 text

Limited doc Outdated visual style Rampant accessibility issues across library 2015 MAD HATTER For a Flagship Product MUI-BOOTSTRAP For a Flagship Product &
 “Whoever Else Wants It” 2016 MDS For Everyone 2017 hZp:/ /designsystem.morningstar.com/ When Living, Systems Go Through Genera7ons

Slide 61

Slide 61 text

M U I-B (O ld) M D S (N ew )

Slide 62

Slide 62 text

CSS Methodology Label BOOTSTRAP CSS BEM

Slide 63

Slide 63 text

Rebuild from the ground up. 
 For everyone. Systems Team
 January 25, 2017 at 2pm “

Slide 64

Slide 64 text

Another team is making a library. 
 It’ll be available sooner. So…. we may adopt that instead. 
 Others are considering it too. Lead Product Design working on Flagship Product
 January 25, 2017 at 4pm “

Slide 65

Slide 65 text

No content

Slide 66

Slide 66 text

M U I-B (O ld) M D S (N ew ) M U I-C (Com petitor)

Slide 67

Slide 67 text

Op7ons for Handling Compe77on 1. Put our heads down: Make ours awesome. Hope for the best. 2. MarkeNng blitz: Our system is the future, not theirs! 3. Complain to leadership: Shut down us or them, now! 4. Live with two: Some use ours, others use theirs.

Slide 68

Slide 68 text

☎ Op*on 5: Pick up the phone

Slide 69

Slide 69 text

MUI-B CODE MUI-C CODE TO BE
 RETIRED MDS CODE MIGRATE MERGE EFFORTS TO BE
 RETIRED

Slide 70

Slide 70 text

Considera7ons When Consolida7ng Systems 1. Agree on approach for a unified, company-wide source-of-truth. 2. Remove redundant services/cost. 3. Improve lack-of-bias for teams to build for more / all teams. 4. Increase capacity to make & doc more than either would have alone. OPPORTUNITIES 1. Deliver in Nmely way 2. Revisit tooling and approach (code style, conven*ons, etc) 3. Blend rituals for Europe & US CHALLENGES

Slide 71

Slide 71 text

OR Another System System

Slide 72

Slide 72 text

AND Another System AND Another System AND Another System System

Slide 73

Slide 73 text

Brand Corporate M arketing Intranet Corporate Site, Governance, Investors, “Brand” Sites .com Home, Marke*ng, eCommerce, Customer Support Web & na*ve product experiences “Portals”, Internal Tools, Expenses, HR, Wikis, etc Feb 2018 Dec 2017 Sep 2016 Mar 2013 Product

Slide 74

Slide 74 text

Brand Corporate M arketing Intranet Feb 2018 Dec 2017 Sep 2016 Mar 2013 Product

Slide 75

Slide 75 text

M arketing Corporate Product Brand N ative Apps Credit Card Consum er Banking Consum er Loans Business Banking Institutional

Slide 76

Slide 76 text

Customers use Product’s system, and it’s better. Shouldn’t employee tools use it, too? – Design system team members for both Intranet & product systems “

Slide 77

Slide 77 text

ConsolidaNon Ra*onalizing and removing redundant systems that serve non-overlapping sets of products.

Slide 78

Slide 78 text

Feature Product’s System Intranet’s System Visual Style Color
 Typography
 Icons Color
 Typography
 Icons Component Overlap BuZon, Input, Radio, Checkbox, List Group, Tool?p, Card, Alert, Loader, Menu, No?fica?on, Dialog, Popover, Range Slider, Switch, Tag Dis?nct Components Top Hat, Modal, “Site” Naviga?on, Data Tables, BuZon Groups, Combo Boxes
 + 14 more Local Naviga?on, “Global” Naviga?on, Carousel, Tiles, Dashboard Module, Filter Bar
 + 2 more Design Assets Sketch AND Figma, FTW! Adobe Illustrator Codebase Vanilla HTML & CSS + React Transla?on Mustache Templates Team 2 Designers, 3 Engineers (all full ?me) 1 Designer, 1 Engineer (both half ?me) Arial Regular, Arial Bold Font Awesome Montserrat Streamline

Slide 79

Slide 79 text

Op7on 1: Do Nothing Intranet Teams remain focused Avoids costly change from at least one group Doesn’t scale design Sustains duplica*ve efforts Risks morale Product

Slide 80

Slide 80 text

Op7on 2: Start Small, with Tokens Intranet Product Product’s Tokens ’s H TM L

Slide 81

Slide 81 text

Op7on 3: Product “Acquires & Re7res” Intranet System Intranet Scales system investment across broader porqolio Raises Intranet quality Unifies design community Requires costly and unexpected change in Intranet app Increases Product’s burden to support teams not in “our organiza*on” Product Retired

Slide 82

Slide 82 text

N ew Op7on 4: Systems Merge, Building a New System Intranet Opportunity to refresh! Merges as equals as opposed to one feeling subservient Huge, unrealis*c cost Very difficult to coordinate Requires many to relinquish control Product Retired Retired

Slide 83

Slide 83 text

ConsolidaNon Takeaways 1. Expand a system’s boundaries very carefully. 2. Let acquired systems make the asser*ve move. 3. Others – par*cularly intranet tools – must demo they want and are willing to pay for the switch.

Slide 84

Slide 84 text

More on Medium.com bit.ly/8s-systems-medium Read more on systems topics including: Strategy & Planning Design & Development Adop*on Documenta*on Process Teams & Opera*ons

Slide 85

Slide 85 text

Join Design System Slack (5,900+ members) hkp:/ /design.systems

Slide 86

Slide 86 text

Nathan Cur?s @nathanacur*s Thanks!