What Does a Good Design System Feel Like?

When folks talk about design systems they often mention developer productivity (ew), or consistency (better), or accessibility (best).

However, one thing folks don’t talk about often is what a good design system feels like. A good design system, to me at least, isn’t about me being able to make a website faster or a little bit more consistent—although yeah I do like those things. The reason I care about making a good design system is because of that rare yet incredible moment once you’ve cleaned things up; the whole system begins to make sense in your mind. You can click-clack things together effortlessly, you can reach for the right tool without thinking about it, and you feel like every contribution you make is to the system, rather to this one-off thing.

(This is what I realize now is the difference between senior and junior folks: senior folks care way more about the system of things, rather than the success of this one feature or product. Every contribution they make is to the system so that everyone feels the benefits.)

But that feeling of a good design system! It’s like reading a book that’s so very clear and concise, without a word in the wrong place. It’s like opening a cupboard and the world inside is structured, has a hierarchy, is easy to get to without a second thought. In a good design system you spend almost 100% of your time on the problem itself rather than trying to understand the eighteen different ways of solving it, like...

“Ah, so team X does this and team B has done that but team X is adamant that we do things this very specific way because they just built this other thing last week.”

This is the feeling of a bad design system; no one has the answer, everyone has opinions, the rules are counter-intuitive and poorly documented, and the world is spinning out from under you to reveal only an enormous soupy mess of confusion.

With all this in mind, I wonder how many folks hate front-end development and CSS because they see the clutter and the clusterfuck of disorganized arguments in the codebase. They see there’s umpteen ways to add a label and they’re annoyed that there’s this one loud person that keeps looking over their shoulder saying that they’re not doing things consistently.

So perhaps when folks complain about the front-end what they’re really complaining about is the feeling of a bad design system.