Tuesday, September 8, 2009

Christopher Alexander Excerpts

The excerpts from published works of Christopher Alexander include "The Timeless Way of Building" (1979) and "A Pattern Language" (1977). Provided a very small subset of the books, it is an interesting to see construction from an architect's perspective. Many of the thoughts or concepts presented can easily be adapted for computer science and software engineering.

The entire text of "The Timeless Way of Building" contains a mere 552 pages. Alexander presents an abstract view of building a system and how each team member applies a unique spin on development. Here he describes how the language can live, like a genetic code - picked up and modified by people over time so that multiple languages can evolve. He also describes how to put the pattern into action. Agile development or extreme programming was not even an inkling in anyone's mind back in the late 1970's. Yet, Alexander was able to describe some of primary characteristics and benefits of applying the concepts in a software development environment.

The author does not bluntly come out and say it, but systems are not cookie cutters like you see in some neighborhood developments where every house looks exactly the same. Yes, they may all have four walls, a roof, and a garage. However, the inside content or decoration of the house is unique to each owner (i.e. developer). You can plant a seed and water it as much as you want, but there is no guarantee the tree will turn out perfectly or be healthy. Even the best arborist cannot provide that guarantee. Same goes for your system architect.

Part of the series, "A Pattern Language" applies some of the concepts discussed previously. Weighing in a whopping 1171 pages, there are a total of 253 patterns available for your reading enjoyment. A similarity between architecture patterns and software patterns is they both are representative of common approaches or solutions that have been demonstrated in the field.

One pattern that sticks in my mind is about "Site Repair". It is common for housing developers to select the best looking part of the land on which to build the structure. Rather than taking the worst section of the land and improving upon it, the construction eliminates the healthiest soil and leaves you with the worst for your so-called great view across the prairie.

The same concept can be applied to software development when doing code reviews or refactoring. There are areas of the code that require attention due to "code smells". It is not prudent to leave the trash sitting out where you may get a bug infestation that will end up being more expensive to eliminate the longer you wait. Concentrate your efforts on the sections that will give the most bang for the bug and will likely cause more issues in the long run. Bring all the code up to par with the rest of the system development...Don't be the weakest link.

No comments:

Post a Comment