My Life Long Obsession
The first design system I created was for my senior thesis, in 2018, during my Master’s program. I coded it in pure vanilla html, css, and javascript. I was obsessed with creating a system that could be branded. This meant that I created my own bootstrap system. You could plug in the colors, type, and spacing which would then brand every single component.

Here is a screen shot of the pattern library I developed. It helps me understand how things work for engineers to have a thorough understanding of how code works.
Github of my Pattern Library
I have been creating design systems for companies for the last 6 years. I have developed 6 design systems in collaboration with engineering teams. These systems were created in Storybook, adapted from Bootstrap, Contentful, and custom coded from scratch.
Why Design Systems Exist
My first project at big tech was on a government application. I sat in an engineering retro reviewing the user interface with one of three 15 person teams. I kindly asked the engineer to change the color of a button from red, which meant warning, to blue, which meant confirm or success. He let me know that each color was encoded directly into the html. After reviewing 10,000 lines of CSS, I realized the project had wasted a lot of time and money on a system they could never change. I helped the engineers understand how to write css and establish a style guide so that they didn’t have to keep rewriting the code base.

Starting Right
The next design system I worked on was for a large bank. We were rewriting their legacy system. It was an opportunity to do things right the first time. I helped them choose a front-end library that was out of the box. They didn’t need a fully custom solution. I showed them how to brand bootstrap, set up their files, and gave them the first iteration of code in Github.

This design system had a dark mode by request of the analysts using the system. The team tested everything for WCAG compatibility which took some color and typography adjustments between modes.
Top 10 Do's & Absolutely Nots
After this, I started working with designers on my team on how to format their system in Figma so that they could hand off their designs to engineers. Here are my pro tips for creating a design system that will successfully be delivered.
1. Use the Same Language
Designers like to use design languages that are convoluting to engineers. Use the same terms in css and html in your design system to reduce confusion. Then, make sure that everyone using the system understands the language. If you are creating design management systems for marketing, they won’t know what H2 means.

2. Release Components Tied to Epics
Only roll out what is necessary for the next project. This applies to design systems that are changing over from a previous system. Don’t expect engineers to care about your components when they have a laundry list of epics to deliver. Tie the system into the epics that are being prioritized.