Skip to content

Instantly share code, notes, and snippets.

@rigdern
Last active February 17, 2024 12:02
Show Gist options
  • Star 4 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save rigdern/121fdb66bff927f7cc336961bad4344d to your computer and use it in GitHub Desktop.
Save rigdern/121fdb66bff927f7cc336961bad4344d to your computer and use it in GitHub Desktop.
Outline of the talk "Design in Practice by Rich Hickey (2023)": https://youtu.be/fTtnx1AAJ-c

Below is the high-level structure of Design in Practice by Rich Hickey (2023). The talk gives a concrete description of some tools and processes he and his team use for designing things.

Rich says that he believes very strongly that if you take this kind of rigorous approach to doing design, then the thing you make will be smaller and more general due to having designed it.

How do you measure progress in the design process? In programming, progress can be measured by the accretion of functionality. In design, progress can be measured by the accretion of understanding.

Techniques

  1. Glossary
    • Example
    • Carefully choosing words that have the meaning you intend helps everybody come to a shared understanding. Precision in naming yields precision in thinking.
  2. The Socratic Method
  3. Reflective inquiry
    These questions are used over and over throughout the design process:
    Understanding Activity
    Status (to stand) What do you know? Where are you at?
    Agenda (to be done) What do you need to know? Where are you going?
  4. Project management top story/ticket
    • Example story (This isn't a top story. The top story will follow the same format but it'll be about the overarching objective.)
  5. Description
  6. Scientific method
  7. Problem statement
  8. Use cases
    • Template
    • Describe user intentions. Be sure not to think about solutions yet. The next phase will explore solutions and attempt to discover a great one. If you think about a solution now, you'll miss out on this design opportunity.
    • If you receive a feature request (a solution), figure out the underlying user intention.
  9. Decision matrix
    • Template
    • A decision matrix is about creating a great approach, not merely shopping. It's about going through the exercise of examining how the approaches differ from each other, what their qualities are, and hopefully driving the birth of one or more new approaches (potentially while sleeping).
  10. Diagrams (TODO: what talk are these described in?)
    • Some things are better represented visually rather than in prose or tables. Diagram your problems, not just your solutions.

The design phases are not monotonic in that sometimes you'll realize an idea wasn't so good and you'll have to backtrack.

  1. Describe (situation)
  2. Diagnose (possible problems)
  3. Delimit (the problem you are going to solve)
  4. Direction (strategy, approach)
  5. Design (tactics, implementation plan)
  6. Dev (build it)
  7. At any time: Decide (to do, or not)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment