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

Designing a Design System

Shai Mishali
November 15, 2019
110

Designing a Design System

"Designing a Design System" is a talk showcasing Gett's story into developing a custom solution to increase reliability and productivity of design hand-off between design and development teams.

Presented in:
- Swift Heroes 2019 (Turin, Italy) - November 15th, 2019
- droidCon Tel Aviv 2019 (Tel Aviv, Israel) - Deccember 19th, 2019

Shai Mishali

November 15, 2019
Tweet

Transcript

  1. iOS Tech Lead @ Gett Open Source ❤ Hackathon fan

    and winner of some International Speaker @freak4pc About Me
  2. Involved in dozens of tutorials and several published books Author

    & Editor at raywenderlich.com iOS Team @freak4pc About Me
  3. 7 2 Dozens Hundreds of screens of UI components iOS

    & Android engineers Designers Rider App Numbers of rides millions Hundreds of
  4. This is the story of synchronizing design and development teams

    The challenges, hardships, and solutions
  5. Redesign & New Components In 2018 we ramped up working

    on an entirely new branding and look for the Gett rider app, as well as ramped up our development of existing components and new features
  6. As we kept working on the app, we constantly bumped

    into issues with the design & development cycle Redesign & New Components
  7. Problem #1 Hey, can you update the button color to

    the primary orange? Uhm… the app has 26 different shades of orange. Which do you mean?! Actual design: Communication is hard
  8. Problem #1 Hey, can you update the button color to

    the primary orange? Uhm… the app has 26 different shades of orange. Which do you mean?! Actual design: Communication is hard
  9. Problem #2 Color reuse is problematic Design specs: Uhm.. did

    we ever use this color in the app? Eh, dunno. I’ll just copy-paste this for the 100th time. LGTM!
  10. Problem #3 Widespread changes are HARD Hey, can you change

    all primary orange to red and all titles in the app to 22pt? Sure! let me just manually find and replace the 1000 occurrences of that color and font
  11. Problem #3 Widespread changes are HARD Oh, I actually don’t

    like that red. Could you try a different red please?
  12. Problem #4 Style changes are not synchronised across platforms iOS

    Android Primary color is #FF9300 Hey, can you update the button color to the primary orange? Primary color is #FF8500 Oops! We forgot to update the Android app!
  13. Problem #5 Naming across platforms is inconsistent Design: Primary Orange

    iOS: fancyOrangeThing Android: orange_is_my_jam Web: ??? Design: Helvetica Neue Light, 24pt/sp, Primary Orange color iOS, Android:
  14. design system A shared set of colors, text styles and

    components to be used by all teams - Design, iOS, Android, and possibly others. (noun)
  15. Sketch Pre-define a well-named library of text styles, colors and

    symbols so designers constantly reuse them
  16. What do we want to solve? Keep design and development

    synchronized Single source of truth for colors and text styles Generate platform-specific code for iOS & Android Designers can push changes to developers easily
  17. http://upload.wikimedia.org/wikipedia/commons/thumb/9/9d/Swift_logo.svg/870px-Swift_logo.svg.png https:// upload.wikimedia.org/wikipedia/commons/thumb/9/9d/Swift_logo.svg/1138px-Swift_logo.svg.png This posed a few issues … 1.

    Our Android developers would need to learn Swift 5. The style guide files are owned by Prism, instead by the actual apps themselves 4. Long development cycle, having to compile code after each change 3. Changing style guides required deep knowledge of Prism’s code base 2. Every new consumer will need its own new class and requires making actual code changes in Prism
  18. http://upload.wikimedia.org/wikipedia/commons/thumb/9/9d/Swift_logo.svg/870px-Swift_logo.svg.png https:// upload.wikimedia.org/wikipedia/commons/thumb/9/9d/Swift_logo.svg/1138px-Swift_logo.svg.png Improving Prism We needed a way to

    define what code will be produced from our Colors and Text Style that’s: Flexible and fast Easy to create No Prism code changes Hosted with each app Synchronized from single source-of-truth
  19. http://upload.wikimedia.org/wikipedia/commons/thumb/9/9d/Swift_logo.svg/870px-Swift_logo.svg.png https:// upload.wikimedia.org/wikipedia/commons/thumb/9/9d/Swift_logo.svg/1138px-Swift_logo.svg.png Goals (so far) Synchronized from single source-of-truth

    Communicating and naming over styles and colors Color and Text Style reuse Easy widespread changes Flexible, fast and easy to create No tool code changes needed Hosted with each app Designers can push changes to developers easily
  20. http://upload.wikimedia.org/wikipedia/commons/thumb/9/9d/Swift_logo.svg/870px-Swift_logo.svg.png https:// upload.wikimedia.org/wikipedia/commons/thumb/9/9d/Swift_logo.svg/1138px-Swift_logo.svg.png Automate all the things We’re missing one

    crucial point ☝ We’d like to be able to automate the process of generating code using Prism, letting the designers themselves push changes to the development team - closing the entire loop. ↩ Pull Request Styleguide updates
  21. http://upload.wikimedia.org/wikipedia/commons/thumb/9/9d/Swift_logo.svg/870px-Swift_logo.svg.png https:// upload.wikimedia.org/wikipedia/commons/thumb/9/9d/Swift_logo.svg/1138px-Swift_logo.svg.png Automate all the things We need a

    safe environment that: Can host the Zeplin Token, and other secrets Has access to our GitHub repositories Can build and run Prism Can be triggered remotely via an API Continuous Integration Or, in our case …
  22. http://upload.wikimedia.org/wikipedia/commons/thumb/9/9d/Swift_logo.svg/870px-Swift_logo.svg.png https:// upload.wikimedia.org/wikipedia/commons/thumb/9/9d/Swift_logo.svg/1138px-Swift_logo.svg.png A quick recap! Updates Styleguide 
 Colors

    and Text Styles Triggers iOS/Android Bitrise Workflow Bitrise generates code using Prism New PR sent to Slack channel PR Created Reviews and merges code Designer CI Developer
  23. Dozens of hours of saved work, improved team work and

    reduced design handoff mistakes ♥ +
  24. http://upload.wikimedia.org/wikipedia/commons/thumb/9/9d/Swift_logo.svg/870px-Swift_logo.svg.png https:// upload.wikimedia.org/wikipedia/commons/thumb/9/9d/Swift_logo.svg/1138px-Swift_logo.svg.png The Future Except for Text Styles and

    Colors, Zeplin also has a concept called Components We are currently investigating the possibility of generating entire components based on their Zeplin specification
  25. http://upload.wikimedia.org/wikipedia/commons/thumb/9/9d/Swift_logo.svg/870px-Swift_logo.svg.png https:// upload.wikimedia.org/wikipedia/commons/thumb/9/9d/Swift_logo.svg/1138px-Swift_logo.svg.png Open Source Since we’re using Zeplin’s private

    API, sharing the code with the entire world is tricky. But then, something happened… We were very sad about this as we expected sharing it with the whole world!
  26. http://upload.wikimedia.org/wikipedia/commons/thumb/9/9d/Swift_logo.svg/870px-Swift_logo.svg.png https:// upload.wikimedia.org/wikipedia/commons/thumb/9/9d/Swift_logo.svg/1138px-Swift_logo.svg.png Open Source We’ve been in touch with

    Zeplin, and they let us know they’re working on an API which should be released to private beta by the middle of December ’19! Since then, another thing happened...
  27. http://upload.wikimedia.org/wikipedia/commons/thumb/9/9d/Swift_logo.svg/870px-Swift_logo.svg.png https:// upload.wikimedia.org/wikipedia/commons/thumb/9/9d/Swift_logo.svg/1138px-Swift_logo.svg.png Let's wrap it up! When many sources

    conflict, define a single source of truth If a recurring action wastes time or creates friction, automate it It it doesn't exist, don't be afraid building it yourself Building developer tooling is fun! Working with other teams to find pain points is crucial We can't wait to see how the community uses this!