Excellent Design
3 ideas to keep in mind when designing systems
3 principles to keep in mind when designing large complex systems:
- Progressive Disclosure of Complexity — Chris Latner
- Great Design is Iterative — Paul Graham
- Entropy is not on your side — Elon Musk
Progressive Disclosure of Complexity - Chris Latner
Discussed in the context of programming language design, but easily generalisable, Latner talks about “Progressive Disclosure of Complexity”.
Make it simple to get going, & powerful to dig in. Enable power users to discover the power as they progress in their experience instead of thrusting all that complexity in their faces all at once.
This reduces the cognitive load on users, usually you don’t need the complexity or the power, but it’s available and naturally, incrementally, discoverable as needed.
Latner says they “massively failed at this” when designing swift UI, but are achieving it at Mojo by:
- Building in the open from the start.
- Being honest about not prioritising stability.
- Focus on small local subsets of features and make them excellent before moving on.
- Avoiding special cases wherever possible.
- Hesitate to build features without excessive evidence that it is required.
Great Design is Iterative — Paul Graham
Graham discusses a number of concepts to support good design. My favourite of which:
Small, complete iterations with repeated feedback.
Whenever you try to top-down over-engineer a system, it’ll likely lead to convergence on the wrong things, poor delivery (both in speed and value) and reduced morale.
There are several other interesting takeaways from his essay:
- The difference between design and research: Design has to be good and research has to be novel, they converge at the top but take different approaches.
- Keep a specific narrow user group in mind, all decisions are made with respect to this group.
- Don’t design for idiots. Don’t assume your audience is unsophisticated.
- The best way to know your audience is to be a part of it. This also radically changes your feedback loop.
- Making what users want does not mean simply making what users tell you. Users don’t know what all the choices are, and are often mistaken about what they really want.
- Things are designed for people, and people struggle with complexity.
- Good design can only come from workly closely with and iterating on user feedback.
- The best design is usually done by a single person. “Good design requires a dictator”.
See the full essay: https://paulgraham.com/desres.html
Entropy, Bureaucracy & Complexity
“entropy is not on your side” — Elon Musk
I live by the mantra that the world tends towards entropy, bureaucracy & complexity.
It is natural for things to decay, for processes to become bloated and inefficient, and for complexity to arise to compound. These are all effectively the same thing instantiating in different ways.
It takes genius to keep things simple.
Resources
- Hackers and Painters — Paul Graham.
- Chris Latner on several podcasts, including Lex Fridman and TheTopShelf.