Give users building blocks

Good design lets people use it in ways you did not script.

In software, it means you should give users a few basic elements that they can combine as they wish, like Lego.
Paul Graham, Taste for Makers · Feb 2002

From Taste for Makers · 4 notesNoteExampleDemo

Good design is suggestive. Jane Austen's novels contain almost no description; instead of telling you how everything looks, she tells her story so well that you . Likewise, a painting that suggests is usually more engaging than one that tells. Everyone makes up their own story about the Mona Lisa.

In architecture and design, this principle means that a building or object should let you use it how you want: a good building, for example, will serve as a backdrop for whatever life people want to lead in it, instead of making them live as if they were .

In software, it means you should give users a few basic elements that they can combine as they wish, . In math it means a proof that is preferable to a proof that was difficult, but doesn't lead to future discoveries; in the sciences generally, citation is considered a rough indicator of merit.

1Note

A blank page with good defaults gives people room. A form with 20 fields doesn't.

2Example

A 7-step wizard. It works for the path the team imagined and nothing else.

3Demo

Same idea in code: small parts you combine.

Compose the parts you need →

4Demo

Build screens from a few primitives, not one-off markup.

Primitives over raw elements →

Read article ↗

Try it