• The real work of any process of design lies in the task of making up the language from which you can generate the one particular design. The language gives the structure and content to the design and is (ideally) generalizable to similar contexts and problems.

  • The process of design is a process of complexification. Gradually, iteratively, new structure is laid out and emerges

  • Design is a wicked problem — it can only be clearly defined only by solving it

  • Design is sloppy because a good solution is often only subtly different from a poor one. Even the definition of “good” is hard t define.

  • Design is about tradeoffs, priorities, and restrictions.

  • The design space is so big and multiple designs may be valid. Design decisions are thus often heuristics.

  • One of the most effective guidelines is to not get stuck on a single approach. ( see more here)

    • The more dogmatic you are about applying a design method, the fewer real-life problems you are going to solve
  • You don’t have to solve the whole design problem at once. Don’t be afraid to put off resolving issues when you don’t have enough information.

  • Often there are two approaches to design

    • Top Down starts with a high level of abstraction and slowly increases the level of detail.
      • Continue decomposing until it seems as if it would be easier to do the next step than to decompose it. Work until you become somewhat impatient at how obvious and easy the design seems.
      • It is easier to use than bottom up but low-level complexity might ripple back to the top.
    • Bottom Up starts with specifics and works towards generalities in an inductive manner.
      • Start with what you know the object needs to do and then compose parts to form the whole based on what you know the object needs to be
      • It is harder to use because it starts complex, but identifies the complexities of the design early on.
    • Both approaches are valid and synergize with each other

Topics