October 1, 2019

Design, Composition, and Performance


Rich Hickey, Creator of Clojure


I am currently working in a greenfield project and I will take some step down and make sure I have all the pieces in place to move forward. I’ve being doing a lot of work to take things apart in this project, but I need a big picture to address things like comprehension, coordination, extension, reuse, testing, and efficiency.

I have a profound simpathy for this talk because I often engaged in discussions with colleagues about the situation of practice before work in software development. I came from the geophysics industry and before you touch any equipment or data, you have to be subjected to tons of training and simulations. Why people learn to code in production time? I think the problem is even worse because most managers do not even know that this situation happens, they think that the team is ready to solve anything. This is scary.


  1. In order to be creative you have to know how to prepare to be creative

  2. Separating into things that can be composed

  3. Move from want/need to problems

  4. Take apart time/order/flow using queues, idempotency, commutation, transactions

  5. Composition you usually have self-imposed problems/constrains

  6. Beginners are not yet players


Design: to prepare the plans for (a work to be executed), especially to plan the form and structure of

Tags: clojure design rich hickey