Dealing with Software Complexity
The Discovery of Structure in Programs
Bartosz Milewski