Design, Composition and Performance

by Rich Hickey (51min)


03:00 Good design is about taking things apart in such a way, that they can be put back together.

03:37 Every component of a design should be about one or very few things.

03:48 First break things apart and only then compose them to solve the problem.

04:00 A good design process is iterative.

25:40 Programming languages and tools are like instruments.

I replaced the instrument metaphor with its counterpart in the following notes:

26:15 Programming languages are about one thing.

26:46 Programming languages have a human control interface.

28:25 Programming languages are limited.

29:00 Programmers overcome these limitations.

30:30 No one wants to program in languages that are complex.

32:00 Programming languages are made for people that know them.

34:11 Humans have evolved to learn and teach. Neither of these things are effort-free.

We are only absolute beginners for a very short period of time. On the flipside we are beginners forever. We never totally get it. This is just the human condition. This is not something to be fixed. This is how it works.

— Rich 34:43

35:20 Programming languages shouldn’t target beginners in their designs nor should they try to eliminate all effort.

36:58 Like musicians, programmers should spent more time not programming for practicing and studying.

40:39 Tools and languages should have a human interface and a machine interface to the same things.

What’s wrong with SQL? There is no machine interface to SQL. They only designed a human interface.

— Rich 41:00

41:14 You can always build a human interface on top of a machine interface.

42:46 You have to pay attention to where you are in the stack. For software developers it’s code all the way down from the highest level of abstraction to the lowest level.

44:05 This yields to a tremendous amount of distraction and expansion. You need to decide what you want to do.

44:44 Constraint is a driver of creativity.

47:26 Design is about making decisions. The value of design is conveying those decision to the next person.

48:06 If you leave every option open and you make everything configurable you are not designing. You are failing to design.

50:34 Instruments are simple.

a favourite talk shared by @max_hoffmann