This is a 3 volume book that includes A Pattern Language. This set of books is probably one of the most influential book from outside of computing to affect computing. It was the seed that started Patterns.
The volume A Pattern Language has about 250 pattern on architecture, ranging from world scale, through countries, regions, towns, building, shelves, to screws. (It also states that by no means is this all of them. Where as the 1st pattern book on programming had about 20 patterns and declared that to be all of them. It got better after that.)
This explores nature and architectural styles, and demonstrates:
- The beauty of a design can be fairly and with repeatability, judged: to do this ask how it makes you feel, avoid intellect. You will need to practice to be good at it, but most people (80%) agree on the simple ones (in blinded trials). The other 20% just argue that it is silly, this can not be done. After several round almost everyone is in agreement.
- There are about 15 properties that occur in nature and good design.
- By using these 15 properties you can create good designs.
He also extends on Darwin (it is not random, there is a lot of order. Therefore the probability of it happening by chance is better than you would think).
The 15 properties are:
- LEVELS OF SCALE is the way that a strong center is made stronger partly by smaller strong centers contained in it, and partly by its larger strong centers which contain it.
- STRONG CENTERS defines the way that a strong center requires a spatial field-like effect, created by other centers, as the primary source of its strength.
- BOUNDARIES is the way in which the field-like effect of a center is strengthened by the creation of a ring-like center, made of smaller centers which surround and intensify the first. The boundary also unites the center with the centers beyond it, thus strengthening it further.
- ALTERNATING REPETITION is the way in which centers are strengthened when they repeat, by the insertion of other centers between the repeating ones.
- POSITIVE SPACE is the way that a given center must draw its strength, in part, from the strength of other centers immediately adjacent to it in space.
- GOOD SHAPE is the way that the strength of a given center depends on its actual shape, and the way this effect requires that even the shape, its boundary, and the space around it are made up of strong centers.
- LOCAL SYMMETRIES is the way that the intensity of a given center is increased by the extent to which other smaller centers which it contains are themselves arranged in locally symmetrical groups.
- DEEP INTERLOCK AND AMBIGUITY is the way in which the intensity of a given center can be increased when it is attached to nearby strong centers, through a third set of strong centers that ambiguously belong to both.
- CONTRAST is the way that a center is strengthened by the sharpness of the distinction between its character and the character of surrounding centers.
- ROUGHNESS is the way that the field effect of a given center draws its strength, necessarily, from irregularities in the sizes, shapes, and arrangements of other nearby centers.
- GRADIENTS is the way a center is strengthened by a graded series of different-sized centers which then “point” to the new center and intensify its field effect.
- ECHOES is the way that the strength of a given center depends on similarities of angle and orientation and systems of centers forming characteristic angles thus forming larger centers, among the centers it contains.
- THE VOID is the way that the intensity of every center depends on the existence of a still place–an empty center–somewhere in its field.
- SIMPLICITY AND INNER CALM is the way the strength of a center depends on its simplicity–on the process of reducing the number of different centers which exist in it, while increasing the strength of these centers to make them weigh more.
- NON-SEPARATENESS is the way the life and strength of a center is merged smoothly-sometimes even indistinguishably–with the centers that form its surroundings.
Examples in programming (not from the book)
- THE VOID: The space made my indentation and blank lines (paragraphing).
- BOUNDARIES: When we use contracts, each method has a strong boundary, that is of similar size to the implementation 1:1 to 1:3.
- DEEP INTERLOCK AND AMBIGUITY: are the contract part of the method/callee or of the caller.
- GRADIENTS: each layer in the design should be about 3× more abstract than the layer below.
- ALTERNATING REPETITION: Test driven development, see https://cseducators.stackexchange.com/a/4869/204
Some languages, and some source code, exhibit the 15 properties more than others. I have noticed that there is a correlation — the higher it exhibits these properties, the easier it is to write powerful, bug free software.
How Building Learn — Stewart Brand
This covers piecemeal growth: Creating a design one step at a time (like agile). Don't design it all up front; learn as you build, so that you can make a better design.