Solving Problems
September 14, 2015
These are my notes on Rich Hickey's Talk "Hammock Driven Development". It distills his experience in the methodology of coding/problem solving and even psychology.
- State the problem. What are you solving with this software?
- Understand the problem.
- what do you know?
- facts
- context
- constraints
- what do you not know?
- are there related problems?
- number one way to get up to speed with current progress.
- write it all down
- what do you know?
- Be discerning
- not everything is awesome.
- find problems in your own solutions.
- solve those too
- look for tradeoffs
- write down your questions. Things you know you don't know.
- there should be question marks
- Look around
- read about and around your space.
- other people around trying to do the same thing.
- be extremely critical at other solutions.
- Tradeoffs
- need two or more possible solutions to say it's a tradeoff
- write them down.
- Focus
- on a hammock, nobody knows you're not sleeping.
- computer is prime source of distraction.
- you can't do everything. emails will be not responded to.
- let loved ones know you will be "gone".
Waking Mind
- good at critical thinking
- analysis
- tactics
- finds local maxima
- use waking time to feed work to background mind.
- and to analyze its products
- good at making connections
- syntehsis
- strategy
- abstracts, analogizes
- solves most non-trivial problems
Can only focus on 7+/-2 things. write down proposed solutions, with pictures.
Work on multiple things at once. Capture the results of your background processes.
Usually code is small. You gain confidence during implementation.
You will be wrong, and you will think of better ideas. Also, the facts change. The requirements, too.
Don't be afraid to be wrong.