https://www.flavioderoni.ch/2014/03/thinking-like-a-programmer/
Thinking like a programmer