Among the many (many, many) points Ursula Franklin makes in The Real World of Technology, she suggests that technology is best understood not as software or gadgets, but as a practice: as a way of doing something.
It’s fairly possible to judge a component and say that it’s easy to implement it in HTML&CSS. I agree, it’s easy when you are working for practice purposes only, but for a real-life project, it’s completely different. The perfect responsive component that you just built will fail quickly in case it was used for a real-life project with real content. Why? It’s because judging on how a component can be built without considering the edge cases.
A lesson that we’ve learned at Shopify from building Polaris is that maintaining a system takes more effort than building it. That’s because design systems inevitably create debt. Components will be used and forked in unpredictable ways. Dependencies can make it difficult to predictably make a change. We ran into these issues while rolling out a new design language for Shopify’s admin in October. The time it took to test the impact of a small visual change across the product slowed down the rollout.
In her article, Jess Sattell discusses the importance of establishing a standardized lexicon within design systems to ensure clarity of communication and intention. She presents a framework for creating meaningful names, terms, and definitions within design teams, emphasizing the need for observation, discussion, and collaboration in the design process.