Grokking Simplicity: Taming complex software with functional thinking - Normand (IEEE, 2003)