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

Bulletproof your Design System

Eva Ferreira
September 19, 2023

Bulletproof your Design System

The hardest part of Design Systems is neither the coding nor the deploying; it’s the adoption. Encouraging teams to use it and to integrate it as part of their workflow is no easy task and it is the key to avoid the dreaded “Failure of the Design System”. In this talk, we are going to explore multiple tools and strategies that will help you and your teams increase the adoption of your design system across your company. From simplifying testing, to smooth implementation and maintenance. Join us to make your design system truly bulletproof.

Eva Ferreira

September 19, 2023
Tweet

More Decks by Eva Ferreira

Other Decks in Technology

Transcript

  1. Hi, I’m Eva! Front-end Engineer @ mabl Google Developer Expert

    & CSSConf Argentina organizer @evaferreira92
  2. Who likes it? Do you feel like it makes your

    work faster? Of better quality? Or… do you feel like it gets in the way? @evaferreira92
  3. What is a Design System? It’s the way your organization

    designs and builds new products 💅
  4. It might include… • UI Style guide • UX Guidelines

    • Development Guidelines • Writing Guidelines • Component Library • Repositories • Processes • Working agreements • And much more…
  5. Design Systems empower Engineers and Designers To do their work

    better, faster and with higher quality. @evaferreira92
  6. Benefits • Achieves visual consistency • Avoids redundancy • Lowers

    the amount of work on new features • Fosters a shared vocabulary • Helps onboarding new team members
  7. Benefits • Achieves visual consistency • Avoids redundancy • Lowers

    the amount of work on new features • Fosters a shared vocabulary • Helps onboarding new team members
  8. Benefits • Achieves visual consistency • Avoids redundancy • Lowers

    the amount of work on new features • Fosters a shared vocabulary • Helps onboarding new team members
  9. Visual consistency Consistency is one of the most powerful usability

    principles: When things always behave the same, users don't have to worry about what will happen. Instead, they know what will happen based on earlier experience. Top 10 Mistakes in Web Design (nngroup.com)
  10. Why do Design Systems fail? • It wasn’t sold correctly

    • It didn’t have enough research when created • It wasn’t built with team collaboration in mind • It was built at the wrong time @evaferreira92
  11. “Let’s just use Bootstrap” A kitten dies. A Front-end engineer

    cries. A Designer is desolated. @evaferreira92
  12. Pilot Project Test your Design System in a real application,

    in a controlled environment. @evaferreira92
  13. Pilot project • Potential for components and common patterns •

    Scope • Technically independent • Champion
  14. Interface inventory • Screenshot party 🎉 • Find common patterns

    • Find awfully old components • Keep / Kill • Beginning of a shared vocabulary https://bradfrost.com/blog/post/interface-inventory
  15. Who are the users of the Design System? Mostly designers

    and engineers. Cross-team. @evaferreira92
  16. Who are the users of the Design System? Mostly designers

    and engineers. Cross-team. @evaferreira92
  17. Design System Interview • What does success look like? Fast

    forward a year from now, things are going great, everyone is thrilled with the design system. How did that happen? • What’s going to sink this ship? Fast forward a year from now and the design system initiative is a total failure. Why did it fail?
  18. Unit tests • More confidence on your codebase • Spot

    bugs before they get to production • Use it as a way of documentation • Enables Continuous Integration (CI)
  19. Unit test it('renders with content', () => { render( <Alert>This

    is an alert</Alert> ); // Assert screen.getByText(This is an alert'); expectNoConsoleErrors(); });
  20. A11y on the Design System Take some pressure away from

    your Java developer. Let designers and Front-end engineers handle the heavy work.
  21. Adding axe-core to unit tests • Run accessibility tests on

    your components • Look for violations on different states • Add it to your pipelines
  22. Unit + a11y tests import { axe, toHaveNoViolations } from

    'jest-axe'; expect.extend(toHaveNoViolations); it('should not have a11y issues', async () => { const {container} = render(<App />); expect(await axe(container)).toHaveNoViolations() });
  23. Wait, what about the add-on? Not yet! But it’s in

    the roadmap ➡️ https://storybook.js.org/addons/@storybook/addon-a11y
  24. name: Here you go, axe! # Controls when the workflow

    will run on: # Triggers the workflow on push or pull request events but only for the "main" branch push: branches: [ "main" ] pull_request: branches: [ "main" ]
  25. # Steps represent a sequence of tasks that will be

    executed as part of the job steps: # Runs a set of commands using the runners shell - name: Install dependencies run: npm ci - name: Create build run: npm run build - name: Run tests run: npm run test
  26. # Steps represent a sequence of tasks that will be

    executed as part of the job steps: # Runs a set of commands using the runners shell - name: Install dependencies run: npm ci - name: Create build run: npm run build - name: Run tests run: npm run test
  27. # Steps represent a sequence of tasks that will be

    executed as part of the job steps: # Runs a set of commands using the runners shell - name: Install dependencies run: npm ci - name: Create build run: npm run build - name: Run tests run: npm run test
  28. Stories • Stories capture the rendered state of a component

    • It takes arguments that modify its state • Provides controls so non-engineers can play around with it
  29. Solidary “I made this for my team, I hope it

    works for yours” • Created based on the needs of one team • No scalability plans for other teams
  30. Centralized • Helps lots of teams and products • Evangelize

    and teach how to use it correctly • Lack of participation • Lack of visibility into the day-to-day of the projects and its needs
  31. Takeaways • Design Systems are an investment💸 • They require

    time to build and to maintain⏱️ • It’s a set of tools 🧰 • With loads of benefits✨ • And teamwork🫂