Journal tags: lego

3

Composability in design systems

When I documented my approach to HTML web components I sang the praises of composability:

Rather than having a few powerful web components, I like having lots of simple web components. The power comes with how they’re combined. Like Unix pipes.

I feel the same way about design systems. In my experience, the design systems that encourage mixing and matching different combinations are the ones that actually get used.

The design systems that struggle with adoption often have the best of intentions. “Look, there are all these pre-made components for you—you should just use them!” But that can be very disempowering. Where’s the sense of agency in using a pre-made solution?

Robin wrote a fascinating post recently called The Other Side (almost certainly not a reference to the Salter Cane song of the same name). He went from being on a design system team trying to enforce adoption to being on a team on the receiving end:

I don’t wanna have to think about hex values or button sizes or box shadows. I don’t want to rethink padding and margins or rethink the grid each time I design a page.

But by golly if a design system says “no” to me then I will do my very best to blow it up.

Colours, spacing, type; these are all building blocks that a designer can compose with. But it gets murkier after that. Pre-made form fields? Sure. Pre-made forms? No thank you!

It’s like there’s a line where a design system crosses over from being a useful toolkit into being a bureaucratic hurdle to overcome. When you hear a designer complaining that a design system is stifling their creativity, I bet it’s because that line has been crossed.

There’s a tired cliché of an analogy when it comes to design systems: LEGO. It’s not a good analogy but I think it can help to understand this imbalance.

Remember old-school LEGO? The pieces were unopinionated. You had to use your imagination to combine them into something.

Later we got LEGO kits. You followed instructions to create a pre-ordained final combination.

I’m not just being an old man yelling at a cloud when I say that those later sets were different. Not bad, necessarily. But the fun came from cosplaying as a factory worker rather than inventing from whole cloth.

There are certainly organisations where pre-made kits are going to be useful. But when you start mandating their use, don’t be surprised when you get pushback from designers who miss the combinatorial power of using simple building blocks. As Robin says:

I want the design system to carefully guide me instead of brute-forcing its decisions onto my work.

Brad recently wrote about the art of design system recipes. Recipes are combinations of the building blocks in a design system, but they’re not intended to be The One True Way for everyone else solving a similar problem. It’s totally fine if a recipe is a one-off solution.

The design system’s core components are the ingredients stocked in the pantry. Other product designers then take those ingredients to create product-specific compositions that meet their product needs.

I suspect that a lot of design systems have made the mistake of canonising recipes too soon, mandating their use.

A Darwinian approach works better. If multiple people keep creating the same recipe independently then and only then should it be considered for inclusion in the design system.

A design system team should be reluctant to allow a new component into the inner sanctum. Instead I see design system teams eager to mint as many ready-made components as possible.

But if the true test of a design system is in its adoption, then the safest bet is to stick to the basic building blocks. Support designers by taking care of their baseline needs. But don’t stop them from composing.

Legrid

Can’t stop. Too busy. Working. I’m up to my elbows in markup, CSS and JavaScript—just the kind of stuff I enjoy getting stuck into. Mind you, I’d enjoy it more if it weren’t for IE6.

Patterns The site I’m working on has a nice sturdy grid underpinning the page layouts. Before opening up a text editor and marking up the structure, I plotted each grid variation on graph paper. That helped me figure out the range of variation in layout possibilities. But if I wanted to try a new variation, I’d have to draw a new sketch.

Lego grid That’s when I reached for a new design tool: Lego. Think about it: they’re pre-structured into consistently sized chunks that can be easily combined into different combinations: perfect for messing about with grid layouts.

Or I might have been procrastinating, playing with Lego when I should have been tied to my keyboard.

In either case, the Lego phase is behind me. Now I’m in the tippety-tap, edit, save, tab, refresh phase.

Edenbee design

I’m pretty excited about this site and not just because of its griddy goodness. This is a site that I can see myself using. To oversimplify, it’s a social network based around setting personal goals to improve environmental responsibility. Given the ridiculous amount of air travel I’ve indulged in over the past year, my goals might have to involve planting a forest.

The site is called Edenbee. There’s just a holding page up for now (that’s rapidly becoming Paul’s speciality). If it sounds like the kind of thing you might be interested in, pop your email address in there.

The Empire Moves House

A few weeks ago, Norm! was down in Brighton to visit Jessica and myself (he came bearing gifts of Flickr schwag). In the course of his visit, we paid a visit to the local lego shop. Norm! bought a B-Wing bomber and Jessica bought a TIE interceptor — they may think of themselves as Star Wars fans but I wiped the floor with them when we played Star Wars Trivial Pursuit.

We were discussing our impending move and Norm! made Jessica promise that when she was bringing the TIE interceptor to the new flat, she would have to:

  1. keep it one piece and
  2. fly it down the street making TIE fighter engine noises.

Well, the move continues apace. Jessica and I have managed to get most of our junk over to the new flat. True to her word, Jessica flew her lego TIE interceptor through the streets of Brighton.