A Philosophy of Software Design by John Ousterhout - All about complexity