contrasts unselfconscious process
, in terms of the way context determines (constructed) form. The first is characterised as follows:
C1 <---> F1 (actual world)
a complex two-directional interaction between the context C1 and the form F1 in the world itself. The human...reacts to misfits by changing them; but is unlikely to impose any "designed" conception on the form.
Alexander illustrates this by describing the Eskimo in his igloo, reacting to the melting of snow within the dwelling by opening a hole to lower the temperature and re-freeze the walls. No rule or axiom is being explicitly looked up and followed: there is no abstraction going on here, the misfit generated by the raised temperature and dripping water is remedied directly. Quaint, but the idea is clear.
With selfconscious process however,
the design process is remote from the ensemble itself; form is shaped not by interaction between the actual context's demands and the actual inadequacies of the form, but by a conceptual interaction between the conceptual picture of the context which the designer has learned and invented, on the one hand, and ideas and diagrams and drawings which stand for forms, on the other.
C1 F1 (actual world)
C2 <---> F2 (mental picture)
...the selfconscious designer works entirely from the picture in his mind, and this picture is almost always wrong.
an unselfconscious process? The direct interaction between the form (given by the evolving state of the system code) and the context (as determined by the unit and user tests) is unmediated by abstraction and needless ceremony.
pointed out at OtNinetyNine
that even at the level of writing
code the interaction of a Smalltalk programmer with the image is direct in this sense: Java and especially C++ programmers have another set of models (files, directories, a compiler) imposed between their actions and the running code.
Thanks for a great session, this was the key point for me - see also the discussion in CouldExtremeProgrammingHaveArisenWithoutSmalltalk (drafted before I knew the XpMorpheme? convention)
If all this is the case, might we expect to see other characteristics of unselfconscious process surface in the XP world? I'm thinking particularly of the importance of culture and artifact (and specifically not abstraction) as a transmitter of knowledge, a culture readily established in following ExtremeProgramming
XP seems to value direct experience of the code over abstracted analyses. UnitTest
s, for example, rely on an implicit belief that the best way to know what the code does is to ask it. You don't do mathematical proofs or UML diagrams, you write code that talks to your code and sees what it does. You talk to the medium directly, and make sure to listen.
When I was in college, I took a ceramics class and my sculptures never seemed to work out. I would start with preconceived notions and then try to mold the clay into those notions, not spending much time trying to learn what the clay was telling me. The best sculptures, meanwhile, were coming from a woman who seemed to work without any conscious thought at all. She just plunked down a giant hunk of clay and started moving it around, discovering the shape the clay wanted as she went along. Her works were gorgeous, sumptuous loopy objects, monumental and playful at the same time.
Incidentally, she seemed much happier than me, too.