Back Room Front Room 2
Back Room Front Room 2
Back Room Front Room 2
Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
Generative Pattern Language patterns by this author<br />
(Coplien 1995).<br />
Others would soon follow. In the following year,<br />
Alistair Cockburn published Prioritizing Forces in<br />
Software Design (Cockburn 1996) at the same time<br />
that Ward Cunningham’s EPISODES pattern<br />
language appeared (Cunningham 1996). The former<br />
would become one of the foundations of the Agile<br />
Alliance, and the latter would become one of the<br />
foundations of Extreme Programming. Both of these<br />
foundations drew from similar principles that could<br />
be found in their counterparts of the previous year,<br />
and that would continue to be found in their<br />
successors. Unlike computer science design, which<br />
was master-planned according to some method,<br />
these techniques gave room to emergence: to design<br />
the same way that nature grows. Whereas computer<br />
science tried to employ formalism to omnisciently<br />
predict outcomes, these approaches embraced<br />
feedback. The dichotomy continues: controlling<br />
versus responsive, revenues versus costs,<br />
technology-centred versus people-centred.<br />
Of course, both cost and revenues matter in real<br />
development; formalism has its place; truly mature<br />
processes may be repeatable and predictable.<br />
However, in the 1980s the pendulum had swung too<br />
far in the favour of the technological perspective.<br />
Patterns in general, and organizational patterns in<br />
particular, restored some balance to the objectoriented<br />
design community. While the architectural<br />
pattern folks wrote patterns of the structure of<br />
software, the organizational patterns folks wrote<br />
patterns of organizational structure. The human side<br />
of computing and technical side of computing had<br />
finally found a common language to express the<br />
common structure they each had been gazing at from<br />
their own perspective for decades.<br />
The computer science path to design looks to<br />
mathematics, type theory, notations and methods to<br />
attain excellence. The human-cantered way looks to<br />
organizational structure and to the behaviours of<br />
people in those organizations. Great software<br />
design, if any different from organizational design,<br />
is too closely linked with it to be considered a<br />
separate discipline.<br />
5 PATTERNS<br />
If patterns had just been a notation or a language that<br />
allowed programmers and organizational people to<br />
communicate, that would have been one thing. But<br />
there is more to patterns than that, and what the<br />
deeper foundations portend for organizational<br />
structure and software development may be key to<br />
ORGANIZATIONAL PATTERNS<br />
the human component of our discipline. It is<br />
important to explore these foundations.<br />
5.1 Structure in Design<br />
Design is all about solving problems by building<br />
something, and building has a lot to do with<br />
composition. In fact, most of our facilities for<br />
interacting with the world around us are based on<br />
structure and perception of structure. Human<br />
perception itself is based on structure, symmetry,<br />
and patterns (Alexander Huggings 1964). The core<br />
of what humans find beautiful isn’t perfect<br />
symmetry: the fine structures of design are slightly<br />
asymmetric. This is no accident; there is no perfect<br />
symmetry in nature, and understanding the<br />
foundations of this nature of nature owes much to<br />
modern advances in physics (Close 2000). Physicists<br />
have a word they use to describe the configurations<br />
that result from these “broken symmetries:”<br />
patterns. Such deep stuff of the structure of the<br />
Universe underlies Alexander’s design worldview:<br />
Nature, too, creates beautiful structures which<br />
are governed by repeated application of<br />
structure-preserving transformations. In this<br />
connection, I think it is useful to remark that<br />
what I call structure-preserving transformations<br />
are very closely related to what has become<br />
known as “symmetry breaking” in physics.<br />
(Alexander 2002: p. 63)<br />
5.2 Structure of Organizations<br />
If these ideas underlie the structure of nature, they<br />
should underlie the structure software systems that<br />
interact with “nature” or the cultural structures that<br />
emerge from nature. You might object and say that<br />
culture is too far removed from nature for patterns to<br />
propagate to that level but, no: it’s patterns all the<br />
way down. The classic texts on the structure of<br />
cultures use an almost perfectly analogous notion of<br />
pattern to describe even the architecture of human<br />
organizations:<br />
Patterns are those arrangements or systems of<br />
internal relationship which give to any culture its<br />
coherence or plan, and keep it from being a mere<br />
accumulation of random bits. They are therefore<br />
of primary importance. (Kroeber 1948: p. 119)<br />
5.3 It’s All About Change<br />
47<br />
Evolution has had a long time to produce a perfect<br />
human culture, but it doesn’t seem to have fared