Creating a design system can feel like building a house while still living in it—daunting, messy, and constantly evolving. Yet, the long-term benefits of consistency, scalability, and efficiency make it a worthwhile investment. Here’s how to navigate some of the common challenges product teams face when developing a design system.
1. Challenge: Lack of Time
Designers often juggle multiple priorities: product deadlines, stakeholder requests, and user testing. Carving out time to build a design system may seem impossible.
Solution: Create Space for Allocation
Treat the design system like a product in its own right. Advocate for dedicated time by articulating its ROI: reduced duplication, faster design cycles, and improved cross-functional collaboration.
Start small with incremental contributions—e.g., updating a component during a project redesign.
Consider assigning a “design system advocate” within the team to prioritize system updates and champion its value. It’s important to give this person access to key meetings to think through critical design elements across projects that are re-usable.
Schedule sprints or cycles specifically for system development, even if it’s just a few hours a week.
Create alignment between the product leaders and design leaders. The product team needs to be bought in on this concept - if design feels like they are working against product, it’s going to be hard to achieve success.
2. Challenge: Integration and Collaboration with Engineering
A design system isn’t just for designers—it lives and breathes through engineering. Misalignment or lack of buy-in from devs can lead to inconsistencies and a system no one wants to use.
Solution: Co-create with Engineers
Involve engineering from the start, treating them as co-owners of the design system. Their input can help shape components for ease of implementation.
Host workshops to define shared goals and standards.
Use tools like Storybook to make components accessible and interactive for developers.
Build processes that prioritize dev feedback to keep the system usable and lightweight.
Ask the engineers which components are the hardest to build and how the design system could help them the most. Build with them in mind and they will be supportive and want to work together on the system.
3. Challenge: Doing It in Phases
The temptation to build the perfect design system upfront is strong, but waiting for perfection often means waiting forever.
Solution: Start with Critical Components
Focus on the 20% of components that account for 80% of your design needs (e.g., buttons, typography, spacing). These foundational elements will bring the most immediate impact.
Draft a high-level vision or "north star" for the system to guide priorities.
Adopt a project-by-project approach: each time you work on something new, make it scalable and repeatable. Try to find small areas to apply the design system with each project rather than just trying to swap everything out in one massive workstream.
Set milestones for progress, not completion—e.g., publishing a component library MVP or standardizing typography by the next sprint.
4. Challenge: Strive for Progress, Not Perfection
Sending a team off to build a design system in isolation is a recipe for irrelevance. Without user feedback and iteration, the system risks being out of touch with real-world needs.
Solution: Build in Public and Iterate
The best design systems evolve alongside the teams that use them. Share early drafts and gather input from designers, engineers, and even stakeholders.
Establish regular feedback loops to identify gaps or pain points in the system.
Create clear documentation and templates to onboard users quickly.
Monitor adoption metrics—are teams actually using the system? What’s working or not?
Final Thoughts
Building a design system is as much about process as it is about the end product. Prioritize collaboration, focus on incremental progress, and don’t shy away from messy starts. Over time, the investment pays off, delivering a unified and efficient way for teams to create user experiences at scale.
Key Takeaways:
Allocate time strategically and start small.
Partner with engineering to create a system that’s easy to implement and maintain.
Tackle critical components first; let perfection emerge over time.
Keep the system alive through iteration, feedback, and real-world use cases.