September 16, 2017
Sometimes it can be hard to know what to work on in a design system. There are so many things which command our attention. There's always a very delicate balancing act between wanting to use the design system as a way to advance systems-level thinking inside the organization while at the same time utilizing the system as a way to embrace what there already is, and set up a set of guidelines to help others understand the decisions that have been made thus far.
This gets trickier in very large design systems or in cases where the design system has been neglected or absent up until this point. Both the amount of time saved by advancing foundational parts of the design system and the debt accrued by failing to document new things as they come into existence can be a zero sum game.
One way I've taken to dealing with this is to think about any aspect of building a design system in terms of variance, mass, and size.
Variance tends to be the enemy of design systems. Variance might be defined as the point at which a portion of the design system takes on new form to meet a new goal. Variance may also be at a low or high intensity. A high intensity variance would be one in which two states of an object in the design system exist to meet the a wildly different goal. A variance of normal intensity would be one in which two objects or states exist for similar, more closely related, but not congruent purposes. A low intensity variance would be one that simply needs to specify state or interaction related to the same goals.
When cataloging a design system, the intensity of variance tends to come into play not so much in the objects themselves as in the combinatorial sets of these objects. Objects which are comprised of many other objects, or objects with a high intensity of variance, can be said to be of great size. The parts of the design system with the smallest size consider the least relationships and goals possible.
An object in a design system has mass if producing a chance in that object affects other objects in the system. An object can be incredibly complex (i.e. it can be said to be of great size) but be fairly isolated in its application. It would be isolated to a specific surface or seldom used situation, and thus, would have a small mass. Conversely, an object could exist at a relatively low state of complexity but have a cascading effect that has implications on many, many other parts of the design system, thus giving it large mass
Design systems can do a lot to keep the overall complexity of the system down by considering the parts before the whole. By prioritizing the parts of the design system which have the smallest size, but the greatest mass, it's easier to start building a design system that pays dividends. Likewise, when new objects come into existence, the question about whether or not to let new circumstances impact the momentum of the design system should also be a matter of the mass and size of that change relative to the current state of the overall system.
This is by no means a perfect way to build a design system. I recognize that the massive complexity of building at scale and parallel to ongoing product development efforts can strongly impact one's ability to always rationalize system adaptation against the notions of mass and size. At the end of the day, design systems are built for people, and we should be doing whatever we can to make their lives better, in both the short term and the long, and not let any guiding notions like these become dogmatic treatises any more than should the idea that these systems are winding and complex and cannot be neatly put into boxes mock the attempt.