Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Flexible Design Systems

Flexible Design Systems

Design Systems are the language that binds UX and Engineering together at scale. The nuances in their delivery are many spanning multiple disciplines and workflows from maintaining living documentation to deployment & rollback across many consuming products. This talk will explore what Design Systems are, how they can be built, documented and delivered at scale. It will cover topics such as:

* What makes a good Component example?
* How can I coordinate deployment of a Design System across multiple product teams?

It will compare & contrast choices in answering these questions along with demos of how Charlie's team at GoDaddy delivers Design Systems at scale across dozens of product teams and nearly 19 million customers using React, Storybook, and more.

Charlie Robbins

July 20, 2019
Tweet

More Decks by Charlie Robbins

Other Decks in Technology

Transcript

  1. WARNING: THIS TALK CONTAINS MOVING & FLASHING IMAGES. IF YOU

    ARE SENSITIVE TO THESE IN ANY WAY PLEASE BE ADVISED.
  2. SENIOR DIR., UX PLATFORM GoDaddy ON THE INTERNET THEY CALL

    ME @INDEXZERO BOARD MEMBER, OPENJS FOUNDATION
  3. UXCore2 Our design system ABOUT 50 COMPONENTS REACT BASED OVER

    100 CONTRIBUTORS STARTED IN LATE 2015 DEPLOYED WORLDWIDE ~40% OF FRONT END ENGINEERS
  4. λ-CALCULUS OF COLOR SELECTION WHAT IF A BRAND WANTS TO

    USE “SECONDARY” FOR “PRIMARY” BUTTON? MORE BUTTON-SPECIFIC VARIABLES FOR REBINDING In λ-calculus this is an “α-conversion”
  5. AS SIMPLE possible with as CLEAR REQUIRE / IMPORT USAGE

    DESIGN DOCUMENTATION PLATFORM SPECIFIC EXAMPLES ZERO CONFIG, SANE DEFAULTS
  6. EXEMPLAR evolving to is USE STORYBOOK PRESETS SUPPORT DESIGN DOCS

    (MDX) API DOCS (REACT-DOCGEN) SUPPORT MULTIPLE TOOLS (DOCZ)
  7. can break publishing NPM INSTALL & UNIT TESTS UPSTREAM BUILD

    TOOLCHAINS REACT NATIVE APPS MISCONFIGURED CONSUMERS
  8. WARNING: CONSUMER BUNDLES SHOULD NOT INCLUDE YOUR DESIGN SYSTEM OR

    DEPENDENCIES THAT CHANGE INFREQUENTLY PLEASE BE ADVISED.
  9. Your computer npm publish your design system all your users

    any install version they want npm get different versions!
  10. centralized deployment benefits of FIX BUGS FASTER ACROSS SITES EASILY

    REBRAND YOUR SYSTEM ROLLBACK ANY BREAKS QUICKLY BETTER INSIGHTS INTO USAGE
  11. ANY ORDINARY WEBPACK BUNDLE MODULE LOADER – THE “FACTORY” MODULE

    0 module.exports = /* module 0’s code */ MODULE 1 module.exports = /* module 1’s code */ MODULE 2 module.exports = /* module 2’s code */ MODULE 3 module.exports = /* module 3’s code */
  12. ANY ORDINARY WEBPACK BUNDLE MODULE LOADER – THE “FACTORY” MODULE

    0 module.exports = /* module 0’s code */ MODULE 1 module.exports = /* module 1’s code */ MODULE 2 module.exports = /* module 2’s code */ MODULE 3 module.exports = /* module 3’s code */ module.exports = window.path.to.module2;
  13. Your computer npm publish Warehouse.ai your design system all your

    users new request versions every Xm get the same version!
  14. warehouse.ai Using npm dist-tag add @your/[email protected] prod makes this trivial

    ... TRY IT OUT! HTTPS://GITHUB.COM/GODADDY/WAREHOUSE.AI
  15. Your computer npm publish Warehouse.ai your design system all your

    users new request versions every Xm get the same version!
  16. Your computer npm publish Warehouse.ai your design system all your

    users new request versions every Xm UNEXPECTED DOWN-TIME get the same version!
  17. Your computer npm publish Warehouse.ai your design system all your

    users new request versions every Xm requests next will FAIL! UNEXPECTED DOWN-TIME get the same version!
  18. Your computer npm publish Warehouse.ai your design system all your

    users new request versions every Xm requests next will FAIL! UNEXPECTED DOWN-TIME get the same version! AND
 THEN EVERY
 CONSUMER
 IS
 DOWN
  19. Your computer npm publish Warehouse.ai your design system all your

    users new request versions every Xm +80ms
  20. Your computer npm publish Warehouse.ai your design system all your

    users new request versions every Xm +80ms +80ms for your users
  21. Your computer npm publish Warehouse.ai your design system all your

    users new request versions every Xm +80ms use always cached copy +80ms for your users +0ms for your users
  22. Your computer npm publish Warehouse.ai your design system everyone is

    still up! new request versions every Xm requests next will FAIL! UNEXPECTED DOWN-TIME AND
 THEN EVERY
 CONSUMER
 IS
 DOWN
  23. Your computer npm publish Warehouse.ai your design system everyone is

    still up! new request versions every Xm requests next will FAIL! UNEXPECTED DOWN-TIME the use FAILOVER CACHE
  24. ... YOU CAN’T AVOID IT WARNING: ON A LONG ENOUGH

    TIMELINE, IF LEFT UNCHECKED ALL SOFTWARE WILL CRUMBLE FROM TECHNICAL DEBT PLEASE BE ADVISED.
  25. UPGRADING TO NEW VERSIONS: REACT, BABEL, WEBPACK, ETC. REMOVING DEPRECATED

    APIS E.G. componentWillReceiveProps, etc. USING LATEST APIS – E.G. PORTALS, REACT@16 CONTEXT, etc.
  26. IT ADDS UP QUICKLY UPGRADING TO NEW VERSIONS: REACT, BABEL,

    WEBPACK, ETC. REMOVING DEPRECATED APIS E.G. componentWillReceiveProps, etc. USING LATEST APIS – E.G. PORTALS, REACT@16 CONTEXT, etc.
  27. MAY THE SOURCE BE WITH YOU SLIDES WILL BE POSTED

    ON TWITTER SHORTLY – FOLLOW ME @INDEXZERO THANKS FOR LISTENING!