9.7 The Importance of Patterns

9.7 The Importance of Patterns

I started this chapter by differentiating patterns from other artifacts of software development, emphasizing their social, learning, and non-technical qualities. I detailed the history of patterns in order to provide them with a human and social face, and to provide the reader with an understanding of how something as different as patterns can emerge naturally as collective learning in response to critical professional needs. I explored the two significant alternative forms for patterns in order to underline the flexibility of the pattern idea. The two formats are not competitive, but complementary. However, to be useful, they require the user's understanding of the reasons behind differences that are anything but cosmetic. Finally, I included some significant detail on Alexander, essential background for anyone who wants to really understand patterns.

What remains is to explain why patterns are important, beyond the importance of any one pattern or set of patterns, and where they're going.

To me, their importance stems from the way they support the unchanging nature of work and learning in software design, within emerging forms of social practice. In particular, they reinforce the non-technical aspects of the practice of software design the parts that make systems work differently from engineering and more than the boys-with-toys mania that seems to be the focus of so many technologists in information technology.

The collaboration, constant churn of ideas, shifting boundaries, and human social problems that have been the bedrock of systems development as a practice since the start resist easy formalization or ongoing efforts to make working with computers into a science. Patterns, with their lack of standards, social nature, and collaborative purposes and origins, help maintain a connection with the human side of what we, as developers, do.

In this, they exemplify and enhance the social practice of development. The quote on "stolen knowledge" that starts this chapter is from a piece by John Seeley Brown and Paul Duguid of The Institute for Learning Research, an offshoot of Xerox's famous PARC research lab (1992). They explain that the Tagore "stole" knowledge by watching and listening to the musician playing outside his classes, for his own and others' entertainment: "[o]nly then, and not in dismembered didactic exercises, was Tagore able to see and understand the social practice of musicianship." That is, the way making music is about a shared doing and a social context that connects the musicians and their ever-shifting audience.

Both as the basis for an informal set of practical processes, within a development effort and between practitioners, and as a vehicle for the results, patterns have turned out to be a means of enabling "stolen knowledge."

Patterns have also turned out to be sublime collaborative technology:

a truly collaborative technology is one which allows participants to transform a shared experience that is lacking clear possibilities for action into an experience that can be routinely and meaningfully handled by their community Collaborative technology allows the community to reconstruct a shared experience continually so as to produce greater meaning and greater potential for successful future action. (Roschelle 1995)

One way to look at patterns that throws light on their almost paradoxical quality is from the perspective of situated learning and communities of practice, two recent ideas that are related and ones that echo parts of Kuhn's writings on scientific paradigms.

The Institute for Learning Research started using the term situated learning at about the same time that the patterns community was forming. A formal definition from one of its papers describes the connection between situated learning and communities of practice:

Situated learning [holds that) enquiries into learning and cognition must take serious account of social interaction and physical activity. A unifying concept emerging from situated learning research is "communities of practice" the idea that learning is constituted through the sharing of purposeful, patterned activity This idea stresses "practice" and "community" equally. Knowledge is seen as practical capability for doing and making a community of practice arises through the coordinated use of technologies (broadly defined to include language) to arrive at mutually intelligible resolutions to shared problematic experience. (Roschelle 1995)

Fortune magazine described communities of practice less formally:

Groups that learn, communities of practice, have special characteristics. They emerge of their own accord: [a number of] people find themselves drawn to one another by a force that's both social and professional. They collaborate directly, use one another as sounding boards, teach each other (Managing: Ideas and Solutions/The Leading Edge 1996)

Communities of practice have typically been defined by theorists as occurring within well-bounded organizations. And, indeed, one of the significant social and cultural benefits that patterns can bring to an organization is to provide the vernacular that facilitates the emergence of so-called local communities of practice. However, as the history of the pattern community sketched in this chapter suggests, a broad-based community of practice can emerge that crosses organizational boundaries and, in a networked world, reworks the ratio of social interaction and physical activity.

A broad-based community of practice provides a foundation for a common culture focused on learning and sharing, without being prescriptive and dependent on explicit rules. The reason for this, to paraphrase Thomas Kuhn, is that paradigms precede and have priority over rules explicit rules are not necessary after a shared paradigm is established. A shared paradigm makes possible normal intellectual activity within a community of practice. As Donald Schon puts it, an individual practitioner builds up "a repertoire of examples, images, understandings and actions"(1983) that combine art and technique, and permit problems to be dealt with creatively and uniquely. This repertoire is the practitioner's conceptual toolkit.

A community of practice such as the patterns community finds ways to share these toolkits via a common vocabulary that includes not only words, but also actions and images.

The PLoP and OOPSLA workshops; and the various books, Web pages, magazine articles, and discussion lists that have resulted all document the existence of a patterns community. It is informal, self-defined, and ever-changing. Although ephemeral in these respects, it is very important to the core of patterns enthusiasts who shape the direction of patterns and provide the intellectual ferment necessary to generate new ideas.

In the case of patterns, the Alexandrian paradigm made it possible for a general community of thinkers and doers to emerge, as well as making possible the general body of ideas they produced. And, in promoting a form of community of practice, the paradigm (using Kuhn's meaning) established an example for the best way to do and use patterns.



A UML Pattern Language
A UML Pattern Language (Software Engineering)
ISBN: 157870118X
EAN: 2147483647
Year: 2005
Pages: 100
Authors: Paul Evitts

flylib.com © 2008-2017.
If you may any questions please contact us: flylib@qtcs.net