January 28, 2005

Toward Performative Programming

Our fourth dojo session, and the second time I present something with a pair to the rest of the group. I'm in favor of displaying our work to each others. It may have something to do with former experience in writing classes, both for theatre and music. Or maybe I'm just extraverted. My experience is, as mortifying as it can be sometimes, true gratification usually come through peers' jugdement. Or, as Christophe would put it, "my work ain't worth nothing until I show it to someone."

The format we are using so far is to have a pair work through their code while the others watch (the pair's screen is video-projected on a white wall), listen, and give any suggestion or comment. And, oh, the others may also get bored and do something different if what happens doesn't retain their attention. Such a format is something totally new to me -- and to the others, from the feedback I've got so far. Whenever I showed some code to an audience in the past, be it for a technical review or some sort of (shame, shame) egocentric show-off, I used to present the best code I could come up with, something accomplished, already written. The goal would be that we could all discuss how I wrongly used pattern Z and misspelled class names. On the other hand, the focus in our dojo shifts to how we come to a solution and, if a better one exists, how we refine what we have so far into that better solution.

This format strikes me as something very close to theatre. There are performers and an audience. There is a story, a theme, something unfolding. We are rehearsing, discovering meaning through repetition. I sense something very strong here that I don't fully grasp yet. Could there be connections between what motivated theatre times ago and what we are doing? Could it be that we are setting a safe environment, in which any scenario is allowed to happen? Could it be that exploring what may come, making it actually happen and enacting it over and over again inspires and drives us in strange yet powerful ways?

Had I to choose earlier an art form which I felt connected to the act of programming, I would have picked book writing without hesitation. Something static, written at some time, read at another. Few dojo sessions later, I am not so positive anymore. I speculate the act of programming is also about the here and the now: how you currently live through the problem up to a satisfying conclusion, and how I feel engaged, watching your sharing techniques and insights. No cathartic experience so far -- hold your horses, this is sill embryonic stage -- although this could become a personal quest.

Posted by Emmanuel at 12:59 AM

January 26, 2005

From vision to reality

Monday was the fourth iteration of the Dojo. Fourth, already ? Yes, indeed.
For sound reasons, the name of that fourth iteration was Dojo #3.

The overall, grand purpose of the Dojo is to create, or perhaps discover, a
different way of teaching programming skills. It is a way that doesn't entail
sitting on lectures, turning in homework, or exams. It is a way that doesn't
promise to teach you Important! New! Technology! in just three days, or your
money back. In fact, most of us expect that there is a few years' worth of
weekly two-hour sessions in this thing, if not more.

I think "discover" is the right word, although every session is an occasion
for lively debate over what material to cover, how to cover it, what should
or shouldn't go on between sessions, what aspects of the chosen metaphor are
useful, neutral or downright harmful. We make decisions; tentative ones, that
we are in principle ready to back out of as needed.

When the idea of an "object Dojo" originally forced itself on me, there were
a number of things that seemed to be obvious features of the format. It would
consist of a number of people coming together for one or two hours, at very
regular intervals, ideally weekly. Their purpose would be the mastery of the
craft of programming. They would pursue that purpose by practicing the craft
together, students learning from masters, with the understanding that every
master is also a student, that mastery is not an end state but merely one
station along an infinite path of learning.

It's been interesting and frustrating to go from vision to reality. I have to
thank my friends and acquaintances from the XP community for prodding me,
after my initial ramblings about an "object Dojo", into actually doing something
with the idea. Emmanuel in particular supported it with fervor and flair.

In going from vision to reality, adjustments need made, some major, some minor.
Major or minor may depend on point of view - for instance, I'd call minor the
fact that the Dojo became a "coding Dojo" instead of an "object Dojo". With
respect to major changes... I say "frustrating" above, because in the realization
some things that seemed "obvious" in vision turn out to be difficult in practice.
One of these is the idea of having every participant in the dojo actually code
during the session. For some reason, I can't shake the feeling that this is
crucial to the "true nature" of the Dojo, but many participants don't share
this feeling or are skeptical of it.

Negotiating these issues is, naturally, also part of the learning experience.

Posted by Morendil at 07:40 PM