Hi there, welcome to Beyond 1.0, lessons learned, things to do after the first release of a design system. By the end of this talk, I hope you can answer this one question. How can you scale and maintain your design system?
Hi there, my name is Amir Sami, I'm a senior software engineer at SNC Electric Company. In my free time, I like to bake delicious baked goods, I like to code, it's not just my profession, it's a hobby as well. I like to hike and explore nature. And I also like to lift heavy circles for some reason.
I'd also like to give a big shout out to my amazing team, without whom none of what I'm about to discuss with you would have been possible. My team and I work at SNC Electric Company, which is a global provider of equipment and services for electric power systems. We were founded in 1911 in Chicago where we design and manufacture switching and protection products. Today, our diverse global workforce develops innovative solutions for a more intelligent and resilient electrical grid. Building on this legacy of technological innovation and customer service, SNC empowers the transformation of the grid for an outage-free, sustainable electrical energy future.
Now what is a design system? A design system is a collection of reusable components, principles, constraints, and best practices governed by clear standards. There's many aspects to a design system, and one that you're most likely familiar with is a component library. There's many popular component libraries out there, such as MaterialUI, XDUI, ShadCN, and AntDesign. And basically, a component library is a set of reusable components you can use to construct an interface more effectively and efficiently. A design system expands upon a component library and includes information about what, when, and how to use color, iconography, and typography, as well as how to rate content for your application. It also includes support docs, and it also includes patterns for constructing interfaces with. This all comes together to form a design system. The role of a design system is not to constrain its users, but rather to make design and development easier, faster, and more consistent.
When we were working on our design system, we evaluated many libraries, ultimately selecting React. Hence, why I'm speaking at React Summit. We selected React due to its amazing support and community, its great performance for large and complex applications, as well as its multi-platform support through things such as React Native. We decided to use TypeScript in conjunction with React to make sure that our design system codebase was as type-safe as possible. We originally began working on our design system way back in 2018 when my manager and I realized that we were recreating the same components over and over again across multiple projects and we were answering the same design-related questions as well. After this realization, we began our research into design systems in early 2018, documenting requirements for our own design system, and we had an initial prototype ready by the end of 2018. Over the course of 2019, we continued to improve and iterate upon this prototype, eventually launching our version 1.0 at the end of 2019. In 2020, we continued to work on our version 1.0 and began planning for our version 2.0, which was a major revamp and overhaul of both the design system components and documentation. In 2021, we continued to iterate upon that, and in early 2022, we released our first version 2.0 of our design system. By then, we almost immediately began working on our mobile component development and figuring out how to incorporate that alongside our web components that we had already built. We continued to iterate upon our web components and release those, ultimately launching our mobile components beside them at the end of 2022 with the version 22.1, which was a major revamp and overhaul of our design system.
Comments