Building design systems

My experience with scaling design systems for small and large teams

5

min read


Background

The teams I have built design systems for have been varied.


Pain points

The problems I have seen repeatedly, and sometimes been hired to precisely solve

  • Different team members at different stages 
    Often with team changes a company ends up having no single source of truth. Instead they need to rely on many documents and Figma files with duplicated, inconsistent elements. The same dashboard can end up having 5 different styles of buttons!

  • Multiple sub-apps
    A suite of applications by a single brand which needed tweaked branding and served different purposes. A singular design system becomes too monotone and not distinct enough for product verticals.

  • Development and design conflicts
    With a growing team, it is much harder to keep UI components in code synced with designs. Getting engineers and designers to speak the same language is difficult.


Solutions

There were some instances where the product was split into 2 or more verticals, with tweaked branding and purposes. In these complex cases, I leaned heavily on Figma's native variables, instance swaps, layered tokens, etc. When time was of the essence, and products much simpler, I adapted and used existing UI kits


Impact

  • Our product looked more polished and consistent.

  • Business value was boosted as the product sold itself

  • Man hours spent on building were reduced by up to 60% 

  • Developers could track changes leading to fewer dev-to-design conflicts or deltas


Who is this advice for?

For everyone looking to

  • Speak a common (design) language

  • Manage one or more design systems

  • Build scalable products

  • Reduce time-to-market

  • Learn about the process of setting up a design system


Approaches

How does one go about getting an improved design system?

  • Adopt an existing design system

  • Adapt an existing design system

  • Create your own design system


Conclusion

In my experience with design systems, I have gotten the chance to see up close how it is meant to be different for everyone, there is no perfect implementation.

  • The design system doesn’t need to be complete for it to be useful

  • A design system exercise doesn’t need to be a major undertaking, for it to have impact on the team.

  • Write as much or as little documentation works for you.

  • A nimble design system that is flexible and useful is the goal