2011年6月7日火曜日

第2回テスト駆動開発入門読書会(ペアプロ写経大会)に参加してきたよ

第2回テスト駆動開発入門読書会(ペアプロ写経大会)に参加してきました。

会場は早稲田大学で、実は人生初早稲田。
会場についたのは30分前でしたが、
まだ誰もいませんでした…orz

さて、開始からですが、
微妙に手際が悪くて10分遅れでスタート。

席の配置を円形に直して、
適当に座ったとなりの人とペアを組むという感じでスタートでした。

オレとペアを組んだのは組込み系に勤める今年一年目の社員の方で、
ノパソに入っていたEclipseが完全にまっさらで、
とてもビックリしました。
(よくある…)

なんか真新しいEclipseにこれから汚いコードをゴリゴリコードを書いていって
いいのか、やや戸惑いつつも、まあいずれ書くんだから
新鮮なテストが書かれていればいいじゃんという感じでやり始めました。

やったのは
  • ペアプロ
  • TDD本を一章から写経する
  • Kent Beckの本の内容を読みつつ、半分納得する。(三角測量はオレが簡単に説明)
  • 2~3章ごとに交代する
という感じです。

オレが最初にナビゲーターになりましたが、
とりあえず、操作がおぼつかないので、
「Ctrl + N」とか言いながら(ゴメンね…とはあまり思っていない)、
ショートカットを覚えてもらいました。

でも、やはりペアの方は若いので、
ショートカットをどんどん覚えるし、
少し羨ましい感じがしました。
(オレのように老いると、物覚えが悪くなって頑固になるのよ…)

2章を終わったあたりで、
ドライバーとナビゲーターを交代しました。

いつものボッチのような感じで、
ブツブツつぶやきながらコードを書きました。
なるべくナビゲーターに身を委ねつつ。

で、Dollar#equals(java.lang.Object)メソッドの
オーバーライドで、
どうしても気になって仕方がないので、nullのパターンを実装してしまいましたが、
これは本質出来ではありませんね。
ToDoリストに記載しておいて、
TDDではないテストコードを記述するときに、別途実装するべきでした。

この辺はナビゲーターの方にToDoに記録してもらいたいのですが、
ナビゲーターの真に難しいとろこは、
二人してコーディングにのめり込んでしまうあたりですね。

この点については、残り20分程度の感想戦で、
議論させていただきました。

頂いたアドバイスとしては、
  • ToDoに記録しておくかどうかはともかく、ポイントはドライバーとナビゲーターが対話をすることである
  • ナビゲーターが距離を少し置くためにポスト・イットを活用する
などがありました。

ぜひ、今後試させていただきたいと思います。

あと、気になった議論として、SIerの現場に同普及するべきかというのがありました。

たしかにSIのプロジェクトの現場ではペアプロする = 二人の稼働でひとり分の成果しかでない
と考えてしまうので、正直のところ導入には非常に慎重的な態度になります。

とは言うものの、SIerの現場にてよく見る光景で、
  • 御前レビュー会議 : えらい人だけが発言・指摘するだけの5~6人による1.5h程度のレビュー - 約7.5hの稼働の無駄
  • デバッグ、皆で考え込む症候群 : なんかうまく動かないが、どこが動かないかわからない(特に新人などが引き起こす)ので、なぜか2~4人が集まってきて2~3時間くらいあ~だこ~だ議論して、なんかよくわからないけど動いて、「あ~よかった」とか言って終りにしてしまうやつ - やっぱり7.5hの稼働の無駄

こう言うのがあるわけで、
意外と無駄に時間を過ごしているパターンは多いわけです。

だったら、無駄な7.5hを二回に分けてペアプロをするだけで、より進むと考えれば、
御前レビューとか、謎の動かない症候群よりも効果はあるように思います。

ま、現場のエロイエライプロマネの方々は、
こんなことを言っても(゚Д゚)ハァ?って顔しますがね。


次回は再来週あたりを想定しているとのことです。
ので、今回参加されなかった皆さんも参加してみてはいかがでしょう。

全然読書会の雰囲気が表現できていませんが、
全体的にはまったりしていましたよ。

0 件のコメント:

コメントを投稿