February 24, 2020

Hammock Driven Development


Rich Hickey, creator of Clojure


I remember my days prior software development when I worked as to-be-scientist and I loved it. So many difficult problems and constraints and equations and ideas…​ I was fortunate to work with Geophysics, therefore the planet Earth and some physical laws were my constraints to solve real world problems.

You could measure it or infer. It was great. My TCC took more than 6 months of thinking and researching along side with many FORTRAN 77 code.

Many days I couldn’t make ANY improvements in the research so I did something else. I started to code, I build my linux box from ArchLinux Guide, them it became too simple and I move along to LFS (Linux From Scratch) books. Them I came back to the project when some idea sparkle in the wild.

Good days!


When was the last time you…​

  1. Thought hard about something for an hour?

  2. a day?

  3. over the course of a month? year?


Solve Problems!

  1. Features are results, not objectives.

  2. No guarantee that a sum of features is going to solve anyone’s problem

  3. or not introduce new problems

  4. avoiding problems != solving them


Waking Mind

  1. Good at critical thinking

  2. analysis

  3. tactics

  4. Prone to finding local maxima


Background Mind

  1. Good at making connections

  2. synthesis

  3. strategy

  4. abstractions

"When the facts change, I change my mind. What do you do, sir?" - John Maynard Keynes


  1. Step away from the Computer

  2. Most of the biggest problems in software are problems of misconception

  3. Analysis & Design are about making sure we understand, and are solving, problems

  4. Humans get good at what they practice

  5. How to do it?

    1. State the problem (say it somehow, out loud in conversation, write it down)

    2. Understand the problem (what do you know? write it all down!)

    3. Be discerning (find the problems in your solutions, write these down too)

    4. More input, better output (read in and around your space)

    5. Tradeoffs (you need to enumerate two or more possible solutions)

    6. Focus (the computer is a prime source of distraction)


  1. How to Solve it - by Conway

Tags: learning rich hickey