続・T濱さんと

 昨日の主任との議論をもう一度ノートにまとめてみる。この作業およそ30分。主任不在のため、折角仲良くなったT濱さんに説明してみる。昨日は主任に1時間近くかけて説明したが、今回まとめた内容は昨日の議論の結果を包括した内容だったので、楽に進むはずだったのだが、T濱さんも中々鋭い指摘をする。
 延々と議論をしてようやく、モデルの間違いを発見する。モデリング手法の議論はプログラムと違ってバグという形で見えないから分かりにくい。しかし、こうして議論することによってモデリングのバグを発見し、除去することが出来る。
 これは、要求定義・分析・設計フェーズでも同じことが言えますよね。
 
 うちのゼミ生達は、ちゃんと議論していますか?
 もう一度、今まで決めたことを他の人に発表してみて、検証してみるのはどうでしょうか。
 
 人に教える・発表する=自分の知識を整理するということだと今まで思っていたが、要するに人にうまく説明できなければ、それは自分も理解してない、もしくは理論的に間違っているということなのである。決して他人が理解できないというわけではない。(まあ、理解するスキルがないという可能性もあるのだが、それは説明するときに抽象化してやればよい)
 
 その後も、延々とT濱さんに説明。漸くT濱さんがこちらの作ろうとしているものを理解してくれる。というわけで、延々と取り組んでいたモデリング手法の提案だが理論上は完成したといえる。明日中に実装レベルに落としてみて、これがシンプルな設計であることを言えばいいわけである。数学の証明に似てますな。
 
 話し終わって、帰っている時に気がついたのだが、これがXPの言う「ペアプログラミング」ではないのかと。T濱さんに説明するときは、漠然としていてまだ頭の中で整理されていなかったものが、T濱さんと話すことで急速に形を帯びてくる。これがXPの真髄ではないかと。形だけ、体裁だけ真似ようとしても、それはXPではない。後期の情報ゼミナールでXPの実践というテーマを取り入れることも、ちょっと考えてみよう。ただし、どうやって教えるかは非常に難しいポイントですな。そこらへんは私が工夫しなければ。
 
 もう1つ分かったことがある。「XPは相手のスキルが同等でなければならない」という一般的に言われているような話。去年のkubobo・おにいちゃんペアは、スキルが同等ではないから、XPは向かないとうちの教授は話していたが、そんなことはない。T濱さんと私は数段T濱さんがスキルが上だが、きちんとペアプログラミングの理念を実践できた。何故出来たかというと、それはT濱さんが私のレベルに合わせてくれたからである。つまり、スキルが違っても、片方がスキルを相手に合わせてやることで、XPの理念は実践できる。ただし、それは、スキルが高いもの同士が行うペアプログラミングより数段要領が悪くなるし、スキルの高いものが議論を先導してしまうと、スキルの低いものが追っているものを見失ってしまうのである。大抵はスキルの高い人間が、あまりの議論の回りくどさに焦れてしまうのだが、それが出来なければXPの理念は実践できない。要は高スキルな人間の忍耐力の問題かな……?つまり、スキルの低い人間が議論の先導を行うと良いのではないか、と仮説を立ててみる。本当にスキルが同程度な場合は、お互いが交互にやってみるのが一番いいのかもしれませんな。