How to control chaos in software development with a design system and component library?
Developing a software solution is time-consuming and detailed, where design and development always go hand in hand for the best result. Large teams are not always very efficient when doing teamwork.
There are more misunderstandings; existing user interface patterns are often left undocumented or forgotten when team members change. Over time, a huge number of disposable components will be created, and eventually, no one will know where and what should be used.
Patterns that were supposed to stay the same have grown apart in appearance and functionality. Every component and pattern that is new and unique, like a snowflake, makes it very difficult to involve new developers and is not sustainable in a long-term project.
Design systems component library should only contain "clean" presentation components. Here are the most important features of reusable presentation components:
- only deal with the presentation layer;
- respond only to inputs;
- does not contain application-specific business logic;
- are agnostic to how or where the data is loaded.
A component library should not contain application-specific components that include business logic; otherwise, all applications using the system should have the same business logic constraints. In addition, the library should exclude one-off components, even if you hope they will one day become part of the design system - teams manage precisely as much code as they need.