Improve the Efficiency of Your Design System 🚀

Reduce Build Time & Improve Development Accuracy With This Collaborative Approach

Matthew Lawes
3 min readSep 16, 2024

Introduction

Design systems are crucial for consistency, efficiency, and collaboration between design and engineering teams in modern digital product development. In this study, I present key insights to align design libraries with front-end development.

Building a Design System: Key Lessons Learned

Sorting Variables into Collections

Organising variables into distinct collections, such as colour and spacing, improves clarity and maintainability. For example:

  • Segregating tokens allows light and dark colour modes without unintentional overlap into areas like spacing.
  • Creating clear collections allows designers to update and maintain variables without unnecessary cross-references between unrelated tokens.
Fig 1.1 — Figma local variables collections.

Creating Alias Tokens

Alias tokens provide context for designers, offering guidance on how and when to use specific tokens. Global tokens, by contrast, are context-agnostic and only reflect values. Alias tokens enhance clarity and ensure alignment between design and engineering teams.

For example, instead of using a generic name like “mineShaft,” an alias token could specify “Content > Default.” This added layer of context reduces confusion and ensures consistency across different platform areas.

Fig 2.1 —Figma local variables colour > alias.

Starting with the Foundations

  • Atomic design principles enhance consistency, scalability, and maintainability by breaking the user interface into smaller, reusable components like atoms, molecules, and organisms.
  • This modular approach ensures flexibility, promoting faster development while maintaining a cohesive user experience.

Naming Conventions

Use meaningful component names that help designers understand their purpose. Employ syntax representing actual front-end component names.

Fig 3.1 — Figma local variables colour details (web syntax).

Nested Elements

  • Enabling nested elements within components ensures future updates to the design system are consistent across projects without detaching components.
  • Avoid overcomplicating components with excessive nested elements to maintain usability and flexibility.
Fig 3.2— Button component with nested elements.

Collaborating with Engineering

A design system must accurately represent the platform it supports. Collaboration with engineers ensures design assets are practical, efficient, and correctly implemented. This partnership also accelerates development by providing engineers with direct access to the design team’s intent, reducing rework.

Collaborating with the Design Team

Designers are key end users of the design system. Regular collaboration ensures that tokens and components align with real-world use cases. The system remains practical and functional because designers understand how to use utilitarian tokens. Feedback loops are vital for creating systems that balance design and development needs.

Collaborating with the design team ensured alignment with their workflows. Adjusting token usage guidance helped implement a system that mirrored actual practices rather than imposing a theoretical framework.

Fig 4.1 — Design team onboarding for new components with creative tasks.

Onboarding & Updates

Publishing updates without context can confuse designers. Regular onboarding ensures they understand changes to the design system, facilitating correct usage. Proactively seek feedback to refine updates iteratively and maintain alignment with team needs.

Summary

Building a design system from scratch has taught me that aligning design and development through effective communication and collaboration is crucial. This approach makes systems more efficient, functional, and scalable.

--

--

Matthew Lawes
Matthew Lawes

No responses yet