TDDの流れを見ていて思ったこと

TDD+ペアプロJava-jaではやってる模様。乗り遅れた自分は死にそうです・・・orz

いや、それは別にいいとして、onkさんが書かれたペアプロに関するエントリーが印象的で、昔を思い出しました。

それでもペアプロが大好きなのは,誤解を恐れずに言うと「責任を回避できる」というのが大きいんだ。

ペアプロやコードレビューは,連帯責任制を導入することに等しい。これは「みんなが知ってれば僕だけが悪いんじゃない」という逃げ腰の人間にとって,もの凄く幸せな環境。誰もが知っていれば,ミスを指摘しなかったことに対してみんなに責任が生じるから。

これにより,コードに対する恐怖心を薄れさせることが出来る。敷居を下げることで,リファクタリングしやすい場が生まれる。最終的にコードの品質は上がる。
http://onk.blog.drecom.jp/archive/137

このペアプロイメージで思い出すのは職人の世界なんですよ。もうすっかり忘れていたんですが、僕は、金型を作成するアルバイト*1を高校生のころやってました。


金型というのは、つまり、大量生産したい何か金属の部品なんかがあったときに、部品を大量生産するために作るものです。作った金型を大きなプレス機にセッティングしてその間に適度な大きさの金属を挟んで、がっちゃんとぶっつぶします。ぶっつぶすと、金型の中に大量生産したかった部品が出来上がっているという仕組み。


何でこれを思い出したのかって言うと、金型っていうのは作っている過程と結果が親方に丸分かりなんですよね。結果がだめなときにすぐ過程がばれるので、親方に過程に関してめっちゃくちゃ叱られます。失敗するとほんと嫌になるんです。しかも部品をだめにしちゃうので、プログラミングより敷居が高い。でも、だめなら親方が叱ってくれるので、皆が困るほど部品をだめにするわけじゃありません。時々ほんとに困るんですけど(笑)


ハードウェアの世界はソフトウェア開発よりも分業がしやすいといわれていますが、それはもしかすると、作ってる過程と結果が丸分かりだからなのかもしれませんね。そう考えると、ペアプロはまさしくソフトウェア開発にとって理にかなった手法なのかもしれません。

*1:ごく一部分をやってました。プログラムで言うと・・・OSインストール直後のコンピュータに色々セッティングするぐらいの作業でしょうか。プログラミング部分もちょっとはありますが、そこまでじゃありません。