Let us start by seeing how the great cathedrals, Chartres and Notre Dame, were made within a pattern language…. There were hundreds of people, each making his part within the whole, working, often for generations. At any given moment there was usually one master builder, who directed the overall layout…but each person in the whole had, in his mind, the same overall language. Each person executed each detail in the same general way, but with minor differences. The master builder did not need to force the design of the details down the builders’ throats, because the builders themselves knew enough of the shared pattern language to make the details correctly, with their own individual flair…. We imagine, because of the distorted view of architecture we have learnt, that some great architect created these buildings, with a few marks of the pencil, worked out laboriously at the drawing board. The fact is that Chartres, no less than the simple farmhouse, was built by a group of men, acting within a common pattern language, deeply steeped in it of course. It was not made by “design” at the drawing board. ♦ The Timeless Way of Building, Christopher Alexander
Over the course of time humankind has diversified the possibilities of construction. With the development of new technologies such as programming in the middle of the last century people have discovered a new environment, totally unexplored, in which build complicated structures. The way it was first handled wasn’t far different from the way highlanders were building their farmhouses in the beginning of the second century : exploring, step by step, how to have a solid roof without really knowing if it will work or fall at the first storm. The pieces of software built at the beginning of programming used simple languages and were evolving slowly. The huge, fast growing open source communities were still to be invented.
In a couple of decades Computer Science followed an asymptotic development in accordance with Moore’s law. The new world behind the screen started to get populated : powerful operating systems were invented and diversified to support more and more hardware, software for dozens of purposes were created. The first computational model — the role of computers was mainly to compute large calculations with what was at that time tremendous amount of data — changed in a similar way as the ugly house with thick, rocky walls became a source of pride in the beauty of its layout. Nowadays computers are integral parts of our lives, from crowd to knowledge and art: social medias, participative encyclopedias, movies and songs sharing, online news papers, community forums, games, statistics, polls, organizers, VOIP meetings, and more. Those uses would seem unorthodox to the first inventors of this incredible machine. In the same way as cities were built around small grapes of houses, huge structures were constructed around what was first embryos of projects : dedicated software for specific platforms, set of tools using the same language, common underlying framework targeting a specific task. In the same way as building cathedrals was an art even if it had other purposes, coding is an art. Building great, beautiful code should be a source of admiration and appreciation.
All those constructions are following patterns. The main architect used its own experience to draw plans, executed in details by masons, sculptors, woodworkers : in each one of them lies a common pattern, even if their skills are all different, even if they share only a little piece of the large, common pattern that they don’t see in its totality. The same thinking applies to programmers, as well as to termites.
Termites are even more extraordinary in the way they seem to accumulate intelligence as they gather together. Two or three termites in a chamber will begin to pick up pellets and move them from place to place, but nothing comes of it; nothing is built. As more join in, they seem to reach a critical mass, a quorum, and the thinking begins. They place pellets atop pellets, then throw up columns and beautiful, curving, symmetrical arches, and the crystalline architecture of vaulted chambers is created. ♦ The Lives of a Cell, Lewis Thomas
As says Richard P. Gabriel, programming is unfortunately more seen as a mean than as an art. Good software is considered good not in its beauty, but in its fast and robust execution. Most programs today are not equivalent to poetry or novels, but to law papers, city archives, or even shopping lists. Speed and robustness should come along with nice, clean and understandable code, in the same way that a cathedral builder can conciliate beauty and solidity, for a building supposed to survive through the ages.
No worries, it’s slowly getting there…
Quotes sources & inspirations : Essay on Mob Software (Richard P. Gabriel and Ron Goldman), www.patternlanguage.com
Originally published at le-cretin-transnational.ch on January 25, 2014.