Note: Five Principles for Thinking Less (Expensively) And Accomplishing More

Brian Marick (author of Functional Programming for the Object-Oriented Programmer, which I loved) gave a talk at ACCU 2013. Ostensibly it was called “Cheating Decline: Acting Now to Let You Program Well for a Really Long Time”, but actually ended up being called “Five Principles for Thinking Less (Expensively) And Accomplishing More” after he realised there wasn’t much research available to discuss on the first topic.

The talk is actually pretty interesting and cross-disciplinary, but the essence is the five principles mentioned in the talk’s title. I don’t have time to summarise the entire talk, but wanted to at least extract the principles so I have them written down:

  1. Constrain possible perceptions (limit inputs so they don’t even hit your processing system, let alone need to be filtered out — eg certain crickets’ tracheal tubes are tuned to only allow chirps of their species to pass through as things to be processed by the brain)
  2. Make perceptions one-to-one with actions (eg you get a signal, you turn left, without any intermediary logic)
  3. Convert goals to achieve into invariants to maintain (eg just keep this line in the center of your vision, or just make all the tests pass)
  4. Convert effortful calculation into automatic perception
  5. Make changes to simplify perception.