The web was built as a set of interconnected pages, and blossomed from how content was historically consumed: through books. Since books format content in a series of pages, it was only natural for web pages to leverage the familiar paradigm. Thus, web pages were born.
Other technology terminology stems from printed books: bookmarks and pagination are two such examples. And while the traditional concept of web pages worked for decades, we've quickly realized that this paradigm is no longer viable for building sustainable web applications.
Many companies are in the throes of a paradigm shift towards more modular web applications through the use of reusable components. And while modular web applications are more scalable and testable, they can also provide some challenges.
Building component libraries is good practice, so long as all teams within an organization are developing and consuming one library; unfortunately this often isn't the case. More likely you'll see multiple teams building the same component in different places; this is a catalyst for application inconsistency.
This is where design systems shine.
Design systems allow teams throughout an organization to define their own identity and bake it into accessible and consistent components. These are subsequently consumed by product teams and can have an invaluable impact on the success of a product.
Let's delve into some of the foundational knowledge of design systems, and learn how your team can adopt them to build accessible, scalable, and consistent products.
What Is A Design System?
A design system is a set of reusable standards and components which reinforce a brand's identity. These standards and components allow teams to efficiently build user interfaces with respect to accessibility, performance, consistency, and brand.
While the industry hasn't officially defined a design system, in general it's comprised of three facets: a design language, a component library, and a style guide. We'll dive into each of these areas in-depth a bit later.
Benefits Of A Design System
There are many benefits of establishing a design system. Here are some of the benefits.
Accessibility
Design systems bake accessibility into the design language and component library, ultimately ensuring that every customer can use your product, or products, and achieve the same results.
Through the design language we can ensure that the color palette has sufficient contrast, the typography scale is legible, and the content is digestible.
These design language patterns are the foundation for building the component library, which ensures we leverage semantic HTML elements. And when HTML isn't sufficient, we incorporate WAI-ARIA to fill in the gaps.
Accessibility is no longer an after-thought.
Trickle-Down Style Updates
When a design pattern is updated, developers no longer have to struggle to update the components in multiple places. Design systems provide one source-of-truth for components and patterns. Thus, styles must only be updated in one place. The changes are then propagated to products with just a quick update to the library package version.
Responsiveness
Component libraries are built to be responsive. They account for varying screen resolutions and viewports.
Consistency
Arguably one of the most vital benefits of a design system is consistency. As the number of teams working on a product scales, the UI remains consistent.
Easy On-Boarding
Having a design system significantly reduces the on-boarding time of new team members by providing one source-of-truth for them to learn. By providing comprehensive documentation in one easy-to-find location, we reduce the overwhelm of staring a new job.
Additionally, developer and designers can easily collaborate cross-team when there is one component library being used.
Improved Development Speed
Once the component library has had a stable release, development speed will be drastically improved.
Developers will no longer be burdened with building components from scratch and ensuring that they're accessible and responsive. They will simply be able to import and leverage these components.
Drawbacks Of A Design System
While there are many benefits of a design system, there are also some drawbacks. Below are some of the most common.
Time Consumption
Design systems aren't built overnight. Often they take many months to years to build a stable version.
Additionally, design systems are never "done." There will be points within a system life cycle where the focus is primarily on maintenance instead of active development. And while these periods of maintenance take less designer and developer resources, the ultimate reality is that design systems are products, not projects; they must be nurtured to survive.
Large, Up-Front Commitment
For a system to succeed, there must be an up-front investment of designers and developers. Often a lack of dedicated resources leads to system failure.
Product Team Buy-In
Product teams are a design system's primary stakeholders. Without their buy-in and support a system cannot succeed.
Who Is Building Design Systems?
There are many revered companies adopting the paradigm of design systems. The benefits of systems are being more widely acknowledged, causing industry leaders to pave the way for adoption.
Below are some of the most widely known design systems being developed.
Mailchimp
Mailchimp is a popular tool for marketing email campaigns. They have developed a comprehensive design system.
They've even published a separate content style guide to help their employees build products with the persona of Mailchimp.
Material Design
Google Material Design is one of the most notable systems to date. Not only does the style guide include foundation such as color and iconography, but their component library serves iOS, web, Android, and Flutter.
IBM Carbon
IBM Carbon is another revered design system. They provide components in React, Vue, Angular, and of course, vanilla JavaScript.
Atlassian
Atlassian's design system is housed within a beautiful style guide. They provide many resources for brand, identity, and iconography.
I hope part one served as a solid foundation of design systems. Part two will cover Design Language in-depth. Feel free to let me know what you think about design systems down below.
All graphics are courtesy of unDraw.
Top comments (31)
Thank you for writing about this. I stumbled across design system information when trying to find tools that checked color accessibility based on a base color and was not totally sure what I was looking at when I found that the US Government even has a design system.
This helped clear up my understanding on what design systems are and their purpose. Also gives me some much needed help learning more about design.
Great article Emma. I look forward to learning more.
Great article 👌
I also love Microsoft's design system "fluent", it's incredible:
microsoft.com/design/fluent/#/
Also like it, but their icons license leads to ditching the style guides entirely 😅
😂😂
Loved that, Emma.
Looking forward to the part II.
I believe you are splitting your insightful slides (slides.com/emmawedekind/design-for...) into three in-depth write-ups?
Thanks for sharing it, Emma.
Yep it'll be a big series!
My team is in the process of building a design system, and you're absolutely right that it doesn't happen overnight. We're several months into the process and haven't even begun writing code yet (small team + other projects to balance). We're hopeful though that it's going to be worth all of the upfront effort & maintenance effort to keep our branding more consistent and to improve developer experience on future projects.
I've thinking about it, but didn't know how important it is to split you web pages into components. Now I now the basics, and will start working (even though takes me so much time 😂) in my own design system.
Thank you so much Emma for taking the time to write about this important topic.
This is the one of the best posts I have ever seen because I am a developer but I am not good at UI Design and Creation, But I think that the websites that you have mentioned and the things that you have described will help me very much and it is very amazing to read this post as well. So I am going to follow you because I am sure that your articles will help me doing better in the case of building better GUI and UX Applications.
I've been using MUI for awhile now and I'm really happy to see it in your article. Your point about accessibility is really important. MUI is very studious about documenting the accessibility concerns at the component level.
For example: material-ui.com/components/links/#...
It makes sense in some projects but I can also see your point about the cost (time and sweat) to get on board with MUI (or any design system).
We have plans to adopt PatternFly for our software.
Unlike the design systems presented in this article PatternFly has a specific focus: web-based enterprise software. It can also be applied to other areas that feature a lot of forms and data, like administration interfaces.
It is mainly developed by RedHat.
Hey, It’s my first visit on your Post. Very interesting article and very helpful Post.
If anyone required website development and design for your business or product visit Kamil web solutions for the best web designing and development also get SEO Services in Dubai, UAE.
I'm also new to this your. You're welcome on board. I discuss all topics for ecommerce businesses. A step by step guide on Print On demand & dropshipping, tutorials for apps & online tool thesuccessmade.com/