Design Systems for Software Engineers

A comprehensive guide to design system engineering (DSE): when it’s relevant, how AI changes things, and pointers for getting started. From Michael Abernethy, Principal Frontend Engineer at Rubrik

Design Systems for Software Engineers

TL;DR

  • A design system unifies a product's identity, serving as a source of truth for design and engineering teams.
  • Key components of a design system include rules, patterns, reusable code, and documentation.
  • Building a design system requires collaboration between UX researchers, designers, and engineers, addressing numerous detailed decisions for each component.
  • Benefits of a design system include faster delivery times, higher quality UI, improved collaboration, and cost savings.
  • AI can assist in tasks like writing unit tests and documenting components, but cannot currently generate a full design system.
  • For smaller teams, using pre-built design system libraries like Material UI or Chakra UI is a viable alternative.
  • Testing, including unit tests, Storybook documentation, and visual regression testing with tools like Chromatic, is crucial for maintaining quality.
  • Modern design systems incorporate async awareness and handle loading states for improved performance and user experience.