{"id":19527,"date":"2020-03-26T10:00:09","date_gmt":"2020-03-26T10:00:09","guid":{"rendered":"https:\/\/marvel7077.wpengine.com\/?p=19527"},"modified":"2020-09-03T11:18:17","modified_gmt":"2020-09-03T10:18:17","slug":"why-design-systems-fail-how-to-make-them-work","status":"publish","type":"post","link":"https:\/\/marvelapp.com\/blog\/why-design-systems-fail-how-to-make-them-work\/","title":{"rendered":"Why Design Systems Fail, and How to Make Them Work"},"content":{"rendered":"<p class=\"pageWrap pageWrap--s marginBottom-m paddingBottom-s c-slate lineHeight-l fontSize-l fontWeight-3 breakPointM-fontSize-xl breakPointM-lineHeight-xl\">This article was previously published in <a class=\"link link--blue fontWeight-4\"href=\"https:\/\/uxdesign.cc\/why-design-systems-fail-and-how-to-make-them-work-6f6d812e216d\">UX Collective.<\/a><\/p>\n<p class=\"pageWrap pageWrap--s marginBottom-m paddingBottom-s c-slate lineHeight-l fontSize-l fontWeight-3 breakPointM-fontSize-xl breakPointM-lineHeight-xl\">For a short period of time I worked on a design system at <a class=\"link link--blue fontWeight-4\"href=\"https:\/\/www.webnl.nl\/\">WebNL<\/a>, an agency specialised in web design, development and marketing based in the Netherlands. Our design system was aimed at improving the bridge between the design and development of the products we\u2019re making.<\/p>\n<p class=\"pageWrap pageWrap--s marginBottom-m paddingBottom-s c-slate lineHeight-l fontSize-l fontWeight-3 breakPointM-fontSize-xl breakPointM-lineHeight-xl\">In this blog I will explain how we did this, and why it didn\u2019t work eventually. Hopefully this will prevent others from making the same mistakes we made, even though we\u2019ve learned a lot from them.<\/p>\n<p class=\"pageWrap pageWrap--s marginBottom-m paddingBottom-s c-slate lineHeight-l fontSize-l fontWeight-3 breakPointM-fontSize-xl breakPointM-lineHeight-xl\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-6580 size-full\" title=\"Why Design Systems Fail, and How to Make Them Work\" src=\"https:\/\/marvel7077.wpengine.com\/wp-content\/uploads\/2020\/03\/0FDbVVcfrDD-Ipodw.jpg\" alt=\"\" width=\"800\" height=\"600\" \/><\/p>\n<h2 class=\"pageWrap pageWrap--s marginTop-xl marginBottom-l c-black lineHeight-xl fontSize-xl fontWeight-5 breakPointM-lineHeight-xxl breakPointM-fontSize-xxl\" style=\"margin-left: auto; margin-right: auto;\">The beginning of the journey<\/h2>\n<p class=\"pageWrap pageWrap--s marginBottom-m paddingBottom-s c-slate lineHeight-l fontSize-l fontWeight-3 breakPointM-fontSize-xl breakPointM-lineHeight-xl\">When I started working at WebNL, one of my first tasks was to look into the possibilities of improving the transition between design and development of web products. Traditionally this has been a process of developers \u2018copying\u2019 the mock-ups made by designers.<\/p>\n<p class=\"pageWrap pageWrap--s marginBottom-m paddingBottom-s c-slate lineHeight-l fontSize-l fontWeight-3 breakPointM-fontSize-xl breakPointM-lineHeight-xl\">The designers did their work primarily in Sketch. They translated their vision of the product into static designs. The developers then wrote HTML, CSS, Javascript and PHP to convert these static designs into a working product.<\/p>\n<p class=\"pageWrap pageWrap--s marginBottom-m paddingBottom-s c-slate lineHeight-l fontSize-l fontWeight-3 breakPointM-fontSize-xl breakPointM-lineHeight-xl\">One of the biggest ambitions inside the company was to find a way to make this process less time consuming as the work was basically done twice.<\/p>\n<p class=\"pageWrap pageWrap--s marginBottom-m paddingBottom-s c-slate lineHeight-l fontSize-l fontWeight-3 breakPointM-fontSize-xl breakPointM-lineHeight-xl\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-6580 size-full\" title=\"Why Design Systems Fail, and How to Make Them Work Handoff\" src=\"https:\/\/marvel7077.wpengine.com\/wp-content\/uploads\/2020\/03\/1s19LxD4ZH0emRoBdXFguEw.jpeg\" alt=\"\" width=\"800\" height=\"359\" \/><\/p>\n<p class=\"pageWrap pageWrap--s marginBottom-m paddingBottom-s c-slate lineHeight-l fontSize-l fontWeight-3 breakPointM-fontSize-xl breakPointM-lineHeight-xl\">So the first step I took was to find out more about ways in which this process of \u2018copying\u2019 could be automated. I looked into automation in Sketch and found out there were plugins that used the Sketch API for this purpose. But the plugins I found lacked reliability and I wasn\u2019t really interested in writing my own Sketch plugin.<\/p>\n<p class=\"pageWrap pageWrap--s marginBottom-m paddingBottom-s c-slate lineHeight-l fontSize-l fontWeight-3 breakPointM-fontSize-xl breakPointM-lineHeight-xl\">I looked further and discovered that Sketch had recently opened up their file system format so their files could be used in other tools. Every property of every group and layer in the design was now easily accessible outside of Sketch and I quickly realised that I could use this to translate these properties into working products automatically.<\/p>\n<h2 class=\"pageWrap pageWrap--s marginTop-xl marginBottom-l c-black lineHeight-xl fontSize-xl fontWeight-5 breakPointM-lineHeight-xxl breakPointM-fontSize-xxl\" style=\"margin-left: auto; margin-right: auto;\">Building the first prototype<\/h2>\n<p class=\"pageWrap pageWrap--s marginBottom-m paddingBottom-s c-slate lineHeight-l fontSize-l fontWeight-3 breakPointM-fontSize-xl breakPointM-lineHeight-xl\">After my discovery, I quickly made a proof of concept. It was a very simple prototype that could turn a Sketch file into a working website. A Sketch file is basically a zip file consisting of images and json files. The prototype translated these json files into a Javascript array so it could read all the properties stored inside the Sketch files and use it to generate a standard website.<\/p>\n<p class=\"pageWrap pageWrap--s marginBottom-m paddingBottom-s c-slate lineHeight-l fontSize-l fontWeight-3 breakPointM-fontSize-xl breakPointM-lineHeight-xl\"><img class=\"size-full\" title=\"\" alt=\"\" \/><a class=\"link link--blue fontWeight-4\"href=\"https:\/\/marvel7077.wpengine.com\/wp-content\/uploads\/2020\/03\/16TI_UBBaKqieOtFJTvKEww.jpeg\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-6580 size-full\" title=\"Why Design Systems Fail, and How to Make Them Work process\" src=\"https:\/\/marvel7077.wpengine.com\/wp-content\/uploads\/2020\/03\/16TI_UBBaKqieOtFJTvKEww.jpeg\" alt=\"\" width=\"1295\" height=\"324\" \/><\/a><\/p>\n<p class=\"pageWrap pageWrap--s marginBottom-m paddingBottom-s c-slate lineHeight-l fontSize-l fontWeight-3 breakPointM-fontSize-xl breakPointM-lineHeight-xl\">Our developers were using a centralized file in which SCSS variables were stored. These variables controlled visual aspects of elements like colors, typography, buttons, and form elements. I took those elements and build them into a library of Sketch symbols which could be edited by designers. Designers could then use these elements as a starting point for new projects.<\/p>\n<p class=\"pageWrap pageWrap--s marginBottom-m paddingBottom-s c-slate lineHeight-l fontSize-l fontWeight-3 breakPointM-fontSize-xl breakPointM-lineHeight-xl\">When the visual appearance of these symbols had been changed, I could take the Sketch file and use it to create a new file with variables. Designers could now control these elements in the final product.<\/p>\n<aside class=\"pageWrap pageWrap--s marginBottom-m paddingBottom-s\">\n<pre><code class=\"language-javascript\">\r\n\/**********************\r\nColors\r\n**********************\/$brand-primary: rgb(229,0,68);\r\n$brand-secondary: rgb(172,171,171);\r\n$brand-tertiary: rgb(0,0,0);\r\n$brand-lightest: rgb(248,249,250);\r\n$brand-darkest: rgb(52,58,63);$brand-success: rgb(85,184,144);\r\n$brand-error: rgb(229,0,68);\r\n$brand-warning: rgb(255,190,61);\r\n$brand-info: rgb(23,162,184);\r\n$text-color: black;\r\n\r\n<\/code><\/pre>\n<\/aside>\n<p class=\"pageWrap pageWrap--s marginBottom-m paddingBottom-s c-slate lineHeight-l fontSize-l fontWeight-3 breakPointM-fontSize-xl breakPointM-lineHeight-xl\">There were also some drawbacks. We could only translate the properties of the design into code if they had been standardised. Designers could change properties like colors, font properties, borders and shadows, which were then translated into working code. But the layers and symbols they added would not be translated.<\/p>\n<p class=\"pageWrap pageWrap--s marginBottom-m paddingBottom-s c-slate lineHeight-l fontSize-l fontWeight-3 breakPointM-fontSize-xl breakPointM-lineHeight-xl\">That didn\u2019t seem like a problem. When designers would come up with new properties or elements, developers could just write new code to extend the existing code. I also started making more complicated elements like cards and menus in a standard way to make sure designers would not have to come up with new properties or elements as much as before.<\/p>\n<p class=\"pageWrap pageWrap--s marginBottom-m paddingBottom-s c-slate lineHeight-l fontSize-l fontWeight-3 breakPointM-fontSize-xl breakPointM-lineHeight-xl\"style=\"text-align: center;\"><img class=\"size-full\" title=\"\" alt=\"\" \/><a class=\"link link--blue fontWeight-4\"href=\"https:\/\/marvel7077.wpengine.com\/wp-content\/uploads\/2020\/03\/1MqBcYw-dd4d2n0nmieP_zA.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-6580 size-full\" title=\"Why Design Systems Fail, and How to Make Them Work atomic system\" src=\"https:\/\/marvel7077.wpengine.com\/wp-content\/uploads\/2020\/03\/1MqBcYw-dd4d2n0nmieP_zA.png\" alt=\"\" width=\"2048\" height=\"1708\" \/><\/a>A modular approach for the symbols in our design system<\/p>\n<p class=\"pageWrap pageWrap--s marginBottom-m paddingBottom-s c-slate lineHeight-l fontSize-l fontWeight-3 breakPointM-fontSize-xl breakPointM-lineHeight-xl\">My first prototype got everyone at the company excited. The standardised way things worked had the potential to speed up the workflow of designers and developers alike. While designers could use the standardised elements as templates to make a jumpstart, developers would spent less time on getting things right.<\/p>\n<p class=\"pageWrap pageWrap--s marginBottom-m paddingBottom-s c-slate lineHeight-l fontSize-l fontWeight-3 breakPointM-fontSize-xl breakPointM-lineHeight-xl\">We got permission to spend 100 hours as an investment for future projects. I used these hours to make more elements, and translate them into code. A frontend developer worked alongside me to build the same elements as HTML with SCSS properties.<\/p>\n<p class=\"pageWrap pageWrap--s marginBottom-m paddingBottom-s c-slate lineHeight-l fontSize-l fontWeight-3 breakPointM-fontSize-xl breakPointM-lineHeight-xl\">When we were done, we started using the design system in production. The results were still moderate in the early phase, but showed a lot of potential.<\/p>\n<h2 class=\"pageWrap pageWrap--s marginTop-xl marginBottom-l c-black lineHeight-xl fontSize-xl fontWeight-5 breakPointM-lineHeight-xxl breakPointM-fontSize-xxl\" style=\"margin-left: auto; margin-right: auto;\">Realising we were building a design system<\/h2>\n<p class=\"pageWrap pageWrap--s marginBottom-m paddingBottom-s c-slate lineHeight-l fontSize-l fontWeight-3 breakPointM-fontSize-xl breakPointM-lineHeight-xl\"><img class=\"size-full\" title=\"\" alt=\"\" \/><a class=\"link link--blue fontWeight-4\"href=\"https:\/\/marvel7077.wpengine.com\/wp-content\/uploads\/2020\/03\/1U1GPY621qA299SiI6HUuog.jpeg\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-6580 size-full\" title=\"Why Design Systems Fail, and How to Make Them Work building blocks\" src=\"https:\/\/marvel7077.wpengine.com\/wp-content\/uploads\/2020\/03\/1U1GPY621qA299SiI6HUuog.jpeg\" alt=\"\" width=\"800\" height=\"363\" \/><\/a><\/p>\n<p class=\"pageWrap pageWrap--s marginBottom-m paddingBottom-s c-slate lineHeight-l fontSize-l fontWeight-3 breakPointM-fontSize-xl breakPointM-lineHeight-xl\">Ironically, when we started to work on the system we didn\u2019t know what a design system was. We had never heard of it before until our boss introduced the term design system as an existing thing, and as a way to give the project a noticeable name.<\/p>\n<p class=\"pageWrap pageWrap--s marginBottom-m paddingBottom-s c-slate lineHeight-l fontSize-l fontWeight-3 breakPointM-fontSize-xl breakPointM-lineHeight-xl\">We named our project the WebNL Design System, and I started to look into other companies that used design systems.<\/p>\n<p class=\"pageWrap pageWrap--s marginBottom-m paddingBottom-s c-slate lineHeight-l fontSize-l fontWeight-3 breakPointM-fontSize-xl breakPointM-lineHeight-xl\">During this time I read about <a class=\"link link--blue fontWeight-4\"href=\"http:\/\/bradfrost.com\/\">Brad Frost<\/a>, a pioneer in design systems. He talked a lot about them, and he was even writing a <a class=\"link link--blue fontWeight-4\"href=\"http:\/\/atomicdesign.bradfrost.com\/\">book <\/a>about it. From his book I learned about atomic design systems, a concept I implemented in our design system.<\/p>\n<p class=\"pageWrap pageWrap--s marginBottom-m paddingBottom-s c-slate lineHeight-l fontSize-l fontWeight-3 breakPointM-fontSize-xl breakPointM-lineHeight-xl\"style=\"text-align: center;\"><img class=\"size-full\" title=\"\" alt=\"\" \/><a class=\"link link--blue fontWeight-4\"href=\"https:\/\/marvel7077.wpengine.com\/wp-content\/uploads\/2020\/03\/1EYUNZupa0sVlwuPX25H79A.jpeg\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-6580 size-full\" title=\"Why Design Systems Fail, and How to Make Them Work atomic system\" src=\"https:\/\/marvel7077.wpengine.com\/wp-content\/uploads\/2020\/03\/1EYUNZupa0sVlwuPX25H79A.jpeg\" alt=\"\" width=\"4160\" height=\"1913\" \/><\/a>Atoms, molecules, organisms, templates and pages<\/p>\n<p class=\"pageWrap pageWrap--s marginBottom-m paddingBottom-s c-slate lineHeight-l fontSize-l fontWeight-3 breakPointM-fontSize-xl breakPointM-lineHeight-xl\">I also read about how Airbnb was <a class=\"link link--blue fontWeight-4\"href=\"https:\/\/marvelapp.com\/blog\/automate-user-testing-process\/\">automating the design process<\/a>. They used <a class=\"link link--blue fontWeight-4\"href=\"https:\/\/airbnb.design\/sketching-interfaces\/\">intelligent image recognition<\/a> to analyse sketches made on paper and translate them into working prototypes immediately. I showed a video of their work inside my own company and that caused people to be even more excited about the potential of design systems.<\/p>\n<p class=\"pageWrap pageWrap--s marginBottom-m paddingBottom-s c-slate lineHeight-l fontSize-l fontWeight-3 breakPointM-fontSize-xl breakPointM-lineHeight-xl\">Another example from Airbnb was <a class=\"link link--blue fontWeight-4\"href=\"https:\/\/airbnb.design\/painting-with-code\/\">react-to-sketch<\/a>. Airbnb uses it to generate Sketch symbols from existing React components. They can use the react components as a single source of truth like this. For us that didn\u2019t work because we started a lot of new projects where the Sketch designs were the source of truth. So instead we tried to generate code components from existing Sketch symbols.<\/p>\n<p class=\"pageWrap pageWrap--s marginBottom-m paddingBottom-s c-slate lineHeight-l fontSize-l fontWeight-3 breakPointM-fontSize-xl breakPointM-lineHeight-xl\">This difference also exposed another difficulty we had compared to other companies. They usually had a single brand, providing a single service through a few digital products. But we were making products for a wide range of brands providing even more services. So our design system had to be more flexible.<\/p>\n<p class=\"pageWrap pageWrap--s marginBottom-m paddingBottom-s c-slate lineHeight-l fontSize-l fontWeight-3 breakPointM-fontSize-xl breakPointM-lineHeight-xl\">Vox Media has an excellent example of <a class=\"link link--blue fontWeight-4\"href=\"https:\/\/www.youtube.com\/watch?v=qy4TgWvqEWE\">a flexible design system<\/a> that can be used across brands. To me, this proves the feasibility of such a design system, even when it will still make things hard when trying to automate the workflow between design and development.<\/p>\n<h2 class=\"pageWrap pageWrap--s marginTop-xl marginBottom-l c-black lineHeight-xl fontSize-xl fontWeight-5 breakPointM-lineHeight-xxl breakPointM-fontSize-xxl\" style=\"margin-left: auto; margin-right: auto;\">Fixing bugs in production<\/h2>\n<p class=\"pageWrap pageWrap--s marginBottom-m paddingBottom-s c-slate lineHeight-l fontSize-l fontWeight-3 breakPointM-fontSize-xl breakPointM-lineHeight-xl\">After the first hype about our design system, things started to head south. We used the system extensively, but never without trouble.<\/p>\n<p class=\"pageWrap pageWrap--s marginBottom-m paddingBottom-s c-slate lineHeight-l fontSize-l fontWeight-3 breakPointM-fontSize-xl breakPointM-lineHeight-xl\">We decided to use the system in short sprints where products were made within one week because that was where we needed it the most. But on several occasions, especially in the beginning, we had to solve issues during the sprints.<\/p>\n<p class=\"pageWrap pageWrap--s marginBottom-m paddingBottom-s c-slate lineHeight-l fontSize-l fontWeight-3 breakPointM-fontSize-xl breakPointM-lineHeight-xl\">Instead of spending time on production we had to debug the system and produce bug fixes. Sometimes the designers had just broken things while editing the Sketch file. During those first trials, I worked on getting fixes into the system and making things more enduring so designers couldn\u2019t accidentally break things.<\/p>\n<p class=\"pageWrap pageWrap--s marginBottom-m paddingBottom-s c-slate lineHeight-l fontSize-l fontWeight-3 breakPointM-fontSize-xl breakPointM-lineHeight-xl\"><img class=\"size-full\" title=\"\" alt=\"\" \/><a class=\"link link--blue fontWeight-4\"href=\"https:\/\/marvel7077.wpengine.com\/wp-content\/uploads\/2020\/03\/1ckt_AOEQ-lVgrPXr3YqB7A.jpeg\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-6580 size-full\" title=\"Why Design Systems Fail, and How to Make Them Work bugs\" src=\"https:\/\/marvel7077.wpengine.com\/wp-content\/uploads\/2020\/03\/1ckt_AOEQ-lVgrPXr3YqB7A.jpeg\" alt=\"\" width=\"829\" height=\"238\" \/><\/a><\/p>\n<p class=\"pageWrap pageWrap--s marginBottom-m paddingBottom-s c-slate lineHeight-l fontSize-l fontWeight-3 breakPointM-fontSize-xl breakPointM-lineHeight-xl\">And it worked, the system became better and more reliable. But the system still wasn\u2019t meeting up to expectations.<\/p>\n<h2 class=\"pageWrap pageWrap--s marginTop-xl marginBottom-l c-black lineHeight-xl fontSize-xl fontWeight-5 breakPointM-lineHeight-xxl breakPointM-fontSize-xxl\" style=\"margin-left: auto; margin-right: auto;\">Managing expectations<\/h2>\n<p class=\"pageWrap pageWrap--s marginBottom-m paddingBottom-s c-slate lineHeight-l fontSize-l fontWeight-3 breakPointM-fontSize-xl breakPointM-lineHeight-xl\">Beforehand we didn\u2019t expect that having a design system that could automate things would have us spent less time on projects. The time we saved could be spent as extra time on our projects, we reasoned. But after a while, a product manager still mentioned that we weren\u2019t spending less time.<\/p>\n<p class=\"pageWrap pageWrap--s marginBottom-m paddingBottom-s c-slate lineHeight-l fontSize-l fontWeight-3 breakPointM-fontSize-xl breakPointM-lineHeight-xl\">So not everyone was expecting the same thing from our design system. But things were also not exactly as how we expected them to be. This was because there were still a lot of bugs, not related to the design system but related to the projects. So any time left at the end of the projects would be spent on solving bugs instead of nice features.<\/p>\n<p class=\"pageWrap pageWrap--s marginBottom-m paddingBottom-s c-slate lineHeight-l fontSize-l fontWeight-3 breakPointM-fontSize-xl breakPointM-lineHeight-xl\">In a way, this was not what anyone had expected to happen. But I didn\u2019t see this as a problem. We just had to make the system more efficient so more time could be freed up, and fewer bugs would be produced.<\/p>\n<h2 class=\"pageWrap pageWrap--s marginTop-xl marginBottom-l c-black lineHeight-xl fontSize-xl fontWeight-5 breakPointM-lineHeight-xxl breakPointM-fontSize-xxl\" style=\"margin-left: auto; margin-right: auto;\">Error handling<\/h2>\n<p class=\"pageWrap pageWrap--s marginBottom-m paddingBottom-s c-slate lineHeight-l fontSize-l fontWeight-3 breakPointM-fontSize-xl breakPointM-lineHeight-xl\">Yet this wasn\u2019t were our problems ended. Even though the system had become more reliable, the designers were still making mistakes while building their Sketch files. These mistakes didn\u2019t result in breaking the system anymore, because I had set up error messages that could be analysed by the developers.<\/p>\n<p class=\"pageWrap pageWrap--s marginBottom-m paddingBottom-s c-slate lineHeight-l fontSize-l fontWeight-3 breakPointM-fontSize-xl breakPointM-lineHeight-xl\"><img class=\"size-full\" title=\"\" alt=\"\" \/><a class=\"link link--blue fontWeight-4\"href=\"https:\/\/marvel7077.wpengine.com\/wp-content\/uploads\/2020\/03\/12_2CP4lQ4R2bUzwdnzL6dg.jpeg\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-6580 size-full\" title=\"Why Design Systems Fail, and How to Make Them Work error system\" src=\"https:\/\/marvel7077.wpengine.com\/wp-content\/uploads\/2020\/03\/12_2CP4lQ4R2bUzwdnzL6dg.jpeg\" alt=\"\" width=\"1343\" height=\"480\" \/><\/a><\/p>\n<p class=\"pageWrap pageWrap--s marginBottom-m paddingBottom-s c-slate lineHeight-l fontSize-l fontWeight-3 breakPointM-fontSize-xl breakPointM-lineHeight-xl\">My idea was that these messages would cause developers and designers to talk more about problems together so they would understand each other better. But while they were indeed talking more to each other, it didn\u2019t help them understand each other. The designers still didn\u2019t understand the design system.<\/p>\n<p class=\"pageWrap pageWrap--s marginBottom-m paddingBottom-s c-slate lineHeight-l fontSize-l fontWeight-3 breakPointM-fontSize-xl breakPointM-lineHeight-xl\">Eventually, I even heard some developers who weren\u2019t directly working with the design system talk about how it didn\u2019t work because designers weren\u2019t using it right. I realized that I had to spent more time explaining the system to designers and co-creating with them.<\/p>\n<h2 class=\"pageWrap pageWrap--s marginTop-xl marginBottom-l c-black lineHeight-xl fontSize-xl fontWeight-5 breakPointM-lineHeight-xxl breakPointM-fontSize-xxl\" style=\"margin-left: auto; margin-right: auto;\">Teaching designers about design systems<\/h2>\n<p class=\"pageWrap pageWrap--s marginBottom-m paddingBottom-s c-slate lineHeight-l fontSize-l fontWeight-3 breakPointM-fontSize-xl breakPointM-lineHeight-xl\">I had already spent a lot of time with developers. But I hadn\u2019t spent much time explaining the design system to designers, assuming they would intuitively know how to use it. This was a mistake.<\/p>\n<p class=\"pageWrap pageWrap--s marginBottom-m paddingBottom-s c-slate lineHeight-l fontSize-l fontWeight-3 breakPointM-fontSize-xl breakPointM-lineHeight-xl\">After that realisation, I spent a lot of time teaching our designers how to use the design system. I found out that they had some understanding about components, but they just weren\u2019t used to working with nested components, naming conventions, and working with layer and text styles.<\/p>\n<p class=\"pageWrap pageWrap--s marginBottom-m paddingBottom-s c-slate lineHeight-l fontSize-l fontWeight-3 breakPointM-fontSize-xl breakPointM-lineHeight-xl\"><img class=\"size-full\" title=\"\" alt=\"\" \/><a class=\"link link--blue fontWeight-4\"href=\"https:\/\/marvel7077.wpengine.com\/wp-content\/uploads\/2020\/03\/1JdVnrF4Rk2nC0NToOZ8gfQ.jpeg\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-6580 size-full\" title=\"Why Design Systems Fail, and How to Make Them Work confused\" src=\"https:\/\/marvel7077.wpengine.com\/wp-content\/uploads\/2020\/03\/1JdVnrF4Rk2nC0NToOZ8gfQ.jpeg\" alt=\"\" width=\"1517\" height=\"900\" \/><\/a><\/p>\n<p class=\"pageWrap pageWrap--s marginBottom-m paddingBottom-s c-slate lineHeight-l fontSize-l fontWeight-3 breakPointM-fontSize-xl breakPointM-lineHeight-xl\">This caused them to ignore some core Sketch principles that the design system relied upon. But moreover, they also weren\u2019t used to working with design templates.<\/p>\n<p class=\"pageWrap pageWrap--s marginBottom-m paddingBottom-s c-slate lineHeight-l fontSize-l fontWeight-3 breakPointM-fontSize-xl breakPointM-lineHeight-xl\">Before the design system was created they always started out with a blank page, using ideation to create new and innovative designs. They wanted each design to be unique and incomparable\u00a0to\u00a0another. Even though the design system had been built upon patterns used in their previous work, they wanted to deviate from that work.<\/p>\n<p class=\"pageWrap pageWrap--s marginBottom-m paddingBottom-s c-slate lineHeight-l fontSize-l fontWeight-3 breakPointM-fontSize-xl breakPointM-lineHeight-xl\">This caused headaches with developers because they now had to do more work instead of less, complying with the wishes of designers.<\/p>\n<h2 class=\"pageWrap pageWrap--s marginTop-xl marginBottom-l c-black lineHeight-xl fontSize-xl fontWeight-5 breakPointM-lineHeight-xxl breakPointM-fontSize-xxl\" style=\"margin-left: auto; margin-right: auto;\">The end of our Design System<\/h2>\n<p class=\"pageWrap pageWrap--s marginBottom-m paddingBottom-s c-slate lineHeight-l fontSize-l fontWeight-3 breakPointM-fontSize-xl breakPointM-lineHeight-xl\">We did eventually reach a point where designers understood enough about Sketch principles and design systems so they could use it without much trouble.<\/p>\n<p class=\"pageWrap pageWrap--s marginBottom-m paddingBottom-s c-slate lineHeight-l fontSize-l fontWeight-3 breakPointM-fontSize-xl breakPointM-lineHeight-xl\">But by the time we reached this point, an unexpected decision was made to completely overhaul our standard code base. There would be no central file with SCSS variables anymore, making it harder to generate SCSS variables from our Sketch files. All of the existing code components were also put out of order, they would all have to be rebuild before we could automate them again.<\/p>\n<p class=\"pageWrap pageWrap--s marginBottom-m paddingBottom-s c-slate lineHeight-l fontSize-l fontWeight-3 breakPointM-fontSize-xl breakPointM-lineHeight-xl\">At the same time, another company launched its Design Systems Manager (DSM). This was a product which had become available in beta a short while after we had made the first prototype. Their system offered an API to translate designs into SCSS variables like we had been doing ourselves before. Now it was out of beta and could be used in production.<\/p>\n<p class=\"pageWrap pageWrap--s marginBottom-m paddingBottom-s c-slate lineHeight-l fontSize-l fontWeight-3 breakPointM-fontSize-xl breakPointM-lineHeight-xl\"><img class=\"size-full\" title=\"\" alt=\"\" \/><a class=\"link link--blue fontWeight-4\"href=\"https:\/\/marvel7077.wpengine.com\/wp-content\/uploads\/2020\/03\/169Y5GZ212rwIAgpdQ8uh1g.png\"><img decoding=\"async\" class=\"aligncenter size-full wp-image-6580\" src=\"https:\/\/marvel7077.wpengine.com\/wp-content\/uploads\/2020\/03\/169Y5GZ212rwIAgpdQ8uh1g.png\" title=\"\" alt=\"\" \/><\/a><\/p>\n<p class=\"pageWrap pageWrap--s marginBottom-m paddingBottom-s c-slate lineHeight-l fontSize-l fontWeight-3 breakPointM-fontSize-xl breakPointM-lineHeight-xl\">Even better, it offered a Sketch plugin for designers which made it easier for them to work with the components and styles used in our design system. We also decided that it would be best to switch to their API for future use, as we had found out that Sketch was continuously updating their file format, making it time-consuming to maintain generating SCSS variables ourselves.<\/p>\n<p class=\"pageWrap pageWrap--s marginBottom-m paddingBottom-s c-slate lineHeight-l fontSize-l fontWeight-3 breakPointM-fontSize-xl breakPointM-lineHeight-xl\">These events finally made us decide to pull the plug on the design system. We would have to rebuild the design system in a new way to make it automated again, and we just didn\u2019t have the time at that moment. Instead, we focused on smaller improvements and our new codebase.<\/p>\n<p class=\"pageWrap pageWrap--s marginBottom-m paddingBottom-s c-slate lineHeight-l fontSize-l fontWeight-3 breakPointM-fontSize-xl breakPointM-lineHeight-xl\"><img class=\"size-full\" title=\"\" alt=\"\" \/><a class=\"link link--blue fontWeight-4\"href=\"https:\/\/marvel7077.wpengine.com\/wp-content\/uploads\/2020\/03\/1R9qw1Ono2DZRCWpFVzvIHA.jpeg\"><img decoding=\"async\" class=\"aligncenter size-full wp-image-6580\" src=\"https:\/\/marvel7077.wpengine.com\/wp-content\/uploads\/2020\/03\/1R9qw1Ono2DZRCWpFVzvIHA.jpeg\" title=\"\" alt=\"\" \/><\/a><\/p>\n<h2 class=\"pageWrap pageWrap--s marginTop-xl marginBottom-l c-black lineHeight-xl fontSize-xl fontWeight-5 breakPointM-lineHeight-xxl breakPointM-fontSize-xxl\" style=\"margin-left: auto; margin-right: auto;\">Takeaways<\/h2>\n<p class=\"pageWrap pageWrap--s marginBottom-m paddingBottom-s c-slate lineHeight-l fontSize-l fontWeight-3 breakPointM-fontSize-xl breakPointM-lineHeight-xl\">I still think design systems can do a lot of good, and at WebNL we are also still working on new design systems for clients. They are just more customized now and less automated. But there are some lessons we have learned that everyone should take in mind before creating their own design system.<\/p>\n<ul class=\"pageWrap pageWrap--s list list--unordered marginBottom-l lineHeight-l fontSize-l fontWeight-3 breakPointM-fontSize-xl breakPointM-lineHeight-xl\">\n<li><strong class=\"c-slate lineHeight-l fontSize-l fontWeight-5 breakPointM-fontSize-xl breakPointM-lineHeight-xl\">Manage expectations.<\/strong> Don\u2019t make yourself or other people think your design system will change the world by saving you time. Instead, focus on things that are really important, like designers and developers understanding each other.<\/li>\n<li><strong class=\"c-slate lineHeight-l fontSize-l fontWeight-5 breakPointM-fontSize-xl breakPointM-lineHeight-xl\">Don\u2019t do everything at once.<\/strong> At the start of your journey, it can be tempting to try and make a complete design system. This won\u2019t work as you\u2019ll have to explain and decide upon everything you make together with other designers and developers. Instead, try to take small steps over time.<\/li>\n<li><strong class=\"c-slate lineHeight-l fontSize-l fontWeight-5 breakPointM-fontSize-xl breakPointM-lineHeight-xl\">Design for people.<\/strong> The biggest mistake I made is thinking that I could improve the connection between designers and developers by putting a system between them. It\u2019s much better to actually get them in a room and have them making decisions together, even when this process takes a lot of time and effort.<\/li>\n<\/ul>\n<p class=\"pageWrap pageWrap--s marginBottom-m paddingBottom-s c-slate lineHeight-l fontSize-l fontWeight-3 breakPointM-fontSize-xl breakPointM-lineHeight-xl\">I hope these lessons can help you avoid the mistakes we made during our first attempt at building a design system. Hopefully, I will be able to share about our new design systems workflow in the near future. I\u2019m also curious to know about how other people use design systems in their workflow. Leave a comment if you\u2019d like to share your experience or if you have any questions.<\/p>\n<blockquote class=\"pageWrap pageWrap--s position-relative marginTopBottom-l breakPointM-marginTopBottom-xl\"><div class=\"blog-quote-before position-absolute bg-marvel\"><\/div><div class=\"tweet-quote blog-quote-after position-absolute bg-marvel cursor-pointer transitionDuration-l transitionProperty-all transitionTimingFunction-cv-easeOutCircular scaleUp--hover zi-weak\"><svg class=\"fill-white opacity-0 pointerEvents-none position-absolute pinCenter transitionProperty-all transitionTimingFunction-easeInOut\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"24\" height=\"20\" viewBox=\"0 0 24 20\"><path d=\"M24,2.37a9.64,9.64,0,0,1-2.83.79A5,5,0,0,0,23.34.37a9.72,9.72,0,0,1-3.13,1.23A4.86,4.86,0,0,0,16.62,0a5,5,0,0,0-4.8,6.2A13.87,13.87,0,0,1,1.67.92,5.13,5.13,0,0,0,3.19,7.67,4.81,4.81,0,0,1,1,7a5,5,0,0,0,3.95,5,4.82,4.82,0,0,1-2.22.09,4.94,4.94,0,0,0,4.6,3.51A9.72,9.72,0,0,1,0,17.73,13.69,13.69,0,0,0,7.55,20c9.14,0,14.31-7.92,14-15A10.17,10.17,0,0,0,24,2.37Z\"\/><\/svg><\/div><p class=\"blog-quote position-relative textAlign-center c-marvel\"><span class=\"blog-quote-text transitionDuration-l transitionProperty-all transitionTimingFunction-easeInOut\">\"Get your designers and developers into a room and have them make decisions together.\"<\/p><\/span><\/blockquote>\n","protected":false},"excerpt":{"rendered":"<p>This article was previously published in UX Collective. For a short period of time I worked on a design system at WebNL, an agency specialised in web design, development and marketing based in the Netherlands. Our design system was aimed at improving the bridge between the design and development of the products we\u2019re making. In this blog I will explain&#8230; <a class=\"link link--blue fontWeight-4\" href=\"https:\/\/marvelapp.com\/blog\/why-design-systems-fail-how-to-make-them-work\/\">Read More &#65515;<\/a><\/p>\n","protected":false},"author":327,"featured_media":19699,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[484],"tags":[],"class_list":["post-19527","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-design-systems"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v15.5 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/marvelapp.com\/blog\/why-design-systems-fail-how-to-make-them-work\/\" \/>\n<meta property=\"og:locale\" content=\"en_GB\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Why Design Systems Fail, and How to Make Them Work | Marvel Blog\" \/>\n<meta property=\"og:description\" content=\"This article was previously published in UX Collective. For a short period of time I worked on a design system at WebNL, an agency specialised in web design, development and marketing based in the Netherlands. Our design system was aimed at improving the bridge between the design and development of the products we\u2019re making. In this blog I will explain... Read More &#65515;\" \/>\n<meta property=\"og:url\" content=\"https:\/\/marvelapp.com\/blog\/why-design-systems-fail-how-to-make-them-work\/\" \/>\n<meta property=\"og:site_name\" content=\"Marvel Blog\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/marvelapp\" \/>\n<meta property=\"article:published_time\" content=\"2020-03-26T10:00:09+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2020-09-03T10:18:17+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/marvelapp.com\/wp-content\/uploads\/2020\/03\/61.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1600\" \/>\n\t<meta property=\"og:image:height\" content=\"700\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@marvelapp\" \/>\n<meta name=\"twitter:site\" content=\"@marvelapp\" \/>\n<meta name=\"twitter:label1\" content=\"Est. reading time\">\n\t<meta name=\"twitter:data1\" content=\"9 minutes\">\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https:\/\/marvelapp.com\/blog\/#organization\",\"name\":\"Marvel\",\"url\":\"https:\/\/marvelapp.com\/blog\/\",\"sameAs\":[\"https:\/\/www.facebook.com\/marvelapp\",\"https:\/\/www.instagram.com\/marvelapp\/\",\"https:\/\/www.linkedin.com\/company\/marvel-app\/\",\"https:\/\/twitter.com\/marvelapp\"],\"logo\":{\"@type\":\"ImageObject\",\"@id\":\"https:\/\/marvelapp.com\/blog\/#logo\",\"inLanguage\":\"en-GB\",\"url\":\"https:\/\/marvelapp.com\/wp-content\/uploads\/2018\/06\/Logo-Light.png\",\"width\":1605,\"height\":1130,\"caption\":\"Marvel\"},\"image\":{\"@id\":\"https:\/\/marvelapp.com\/blog\/#logo\"}},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/marvelapp.com\/blog\/#website\",\"url\":\"https:\/\/marvelapp.com\/blog\/\",\"name\":\"Marvel Blog\",\"description\":\"Ideas and words on user experience, design, collaboration and more\",\"publisher\":{\"@id\":\"https:\/\/marvelapp.com\/blog\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":\"https:\/\/marvelapp.com\/blog\/?s={search_term_string}\",\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"en-GB\"},{\"@type\":\"ImageObject\",\"@id\":\"https:\/\/marvelapp.com\/blog\/why-design-systems-fail-how-to-make-them-work\/#primaryimage\",\"inLanguage\":\"en-GB\",\"url\":\"https:\/\/marvelapp.com\/wp-content\/uploads\/2020\/03\/61.png\",\"width\":1600,\"height\":700,\"caption\":\"Why Design Systems Fail, and How to Make Them Work\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/marvelapp.com\/blog\/why-design-systems-fail-how-to-make-them-work\/#webpage\",\"url\":\"https:\/\/marvelapp.com\/blog\/why-design-systems-fail-how-to-make-them-work\/\",\"name\":\"Why Design Systems Fail, and How to Make Them Work | Marvel Blog\",\"isPartOf\":{\"@id\":\"https:\/\/marvelapp.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/marvelapp.com\/blog\/why-design-systems-fail-how-to-make-them-work\/#primaryimage\"},\"datePublished\":\"2020-03-26T10:00:09+00:00\",\"dateModified\":\"2020-09-03T10:18:17+00:00\",\"inLanguage\":\"en-GB\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/marvelapp.com\/blog\/why-design-systems-fail-how-to-make-them-work\/\"]}]},{\"@type\":\"Article\",\"@id\":\"https:\/\/marvelapp.com\/blog\/why-design-systems-fail-how-to-make-them-work\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/marvelapp.com\/blog\/why-design-systems-fail-how-to-make-them-work\/#webpage\"},\"author\":{\"@id\":\"https:\/\/marvelapp.com\/blog\/#\/schema\/person\/e62c48d83465dd62685a861fda1422b5\"},\"headline\":\"Why Design Systems Fail, and How to Make Them Work\",\"datePublished\":\"2020-03-26T10:00:09+00:00\",\"dateModified\":\"2020-09-03T10:18:17+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/marvelapp.com\/blog\/why-design-systems-fail-how-to-make-them-work\/#webpage\"},\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/marvelapp.com\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/marvelapp.com\/blog\/why-design-systems-fail-how-to-make-them-work\/#primaryimage\"},\"articleSection\":\"Design Systems\",\"inLanguage\":\"en-GB\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/marvelapp.com\/blog\/why-design-systems-fail-how-to-make-them-work\/#respond\"]}]},{\"@type\":\"Person\",\"@id\":\"https:\/\/marvelapp.com\/blog\/#\/schema\/person\/e62c48d83465dd62685a861fda1422b5\",\"name\":\"Dani\\u00ebl de Wit\",\"image\":{\"@type\":\"ImageObject\",\"@id\":\"https:\/\/marvelapp.com\/blog\/#personlogo\",\"inLanguage\":\"en-GB\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/f25e90dbbe2d7fda3f0d0eddbe426a8b75e1d0e6f6122c5fea638b7a8bf3cf45?s=96&d=mm&r=g\",\"caption\":\"Dani\\u00ebl de Wit\"},\"description\":\"UX Engineer at WebNL | Follow me on Medium and daniel-dewit.nl\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","_links":{"self":[{"href":"https:\/\/marvelapp.com\/blog\/wp-json\/wp\/v2\/posts\/19527","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/marvelapp.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/marvelapp.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/marvelapp.com\/blog\/wp-json\/wp\/v2\/users\/327"}],"replies":[{"embeddable":true,"href":"https:\/\/marvelapp.com\/blog\/wp-json\/wp\/v2\/comments?post=19527"}],"version-history":[{"count":0,"href":"https:\/\/marvelapp.com\/blog\/wp-json\/wp\/v2\/posts\/19527\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/marvelapp.com\/blog\/wp-json\/wp\/v2\/media\/19699"}],"wp:attachment":[{"href":"https:\/\/marvelapp.com\/blog\/wp-json\/wp\/v2\/media?parent=19527"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/marvelapp.com\/blog\/wp-json\/wp\/v2\/categories?post=19527"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/marvelapp.com\/blog\/wp-json\/wp\/v2\/tags?post=19527"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}