The effort required to build a design system is tiny compared to the effort required to maintain it.
Our design system isn’t our UI kit or our style guide. It’s the shared language we have when we talk about our work.
I like to use the literal example of languages to describing this. A language is something we use to communicate with each other. But it’s not rigid. It’s not our records of those words — the dictionaries — that matter. It’s the meaning behind those words. That’s why our languages are constantly evolving — and our shared understanding of the language is what keeps us together.
When it comes to systems, our tools are like dictionaries. They should be representative, but they don’t arbitrate. Systems people need to be observers and ethnographers, not enforcers.
By exerting pressure on the teams to follow our guides and use the system, we created an equal pressure to avoid novel solutions or out-of-the-box thinking. We’d still see good designs that didn’t use the system because it wasn’t working for them — and the system would grow to include those things. But there were far fewer moon shots.
What we really wanted to create was a quality elevator. A floor that constantly rises and a ceiling that’s constantly rises with it. It elevates the entire UX team’s ability to do amazing work. To do that, we started a concept car team. This is a small team whose sole job is to create novel concepts for our experience.
We introduced too much structure too quickly. We overthink preventing future maintenance. We tried to limit things to protect ourselves from future failures. This is a bad thing. Your team and your system need the time to evolve on its own. You can’t plan it too far ahead of time. Fail first — then figure out how you can prevent it from happening again.