JUnit勉強会を開くとか言ってしまった(3)

行き詰った。
単純にJUnitの説明会といえば簡単なんだけど、プロジェクトに導入することを考えるとジレンマに陥る。

JUnitを理解するということ。

JUnitってなかなか理解されにくいと思う。2ちゃんねるの「JUnit使おうよ」スレッドでも「使っても意味がない派」と「使わないなんてありえない派」の議論は平行線である。使う派が使わない派を説得しようとするが理解されない。つまりことばで説明して理解されるものではないのだ。

また基本的な使い方がわかって少し使ってみても、それが「有用だ、使える!」と感じるまでには見えない壁がある。そこを乗り越えるのは単純にこれをすればよいというものではなく、経験や能力や想像力に依存すると思う。

つまり教えたって理解されないよなというのもジレンマなのだが、まあこれは各人に任せるということでいいとする。勉強会が「自分で使ってみる」のきっかけになればいいと思う。それで理解できないならもう知らない。強いてしまうとストレスになり、理解からは遠ざかって「JUnit嫌い」になってしまう(すでにそういう後輩がいる)。

別のメンバには、「これまで、実装したことが正しいって確認は、目見でやってたかもしれないけど、JUnitというテストツールを使えば、何度も同じテストを自動で流せるから、修正してもデグレしにくい。なによりもテストがOKになったときは、グリーンバーが出て気持ち良いんだ」

見たいな感じで、動機付けをしました。そして、仕事の時間を使ってXP実践記を読ませました。テスト重視の開発で、成功するイメージを持ってもらうためです。

限定したことしかできない人が現場では多い? - yvsu pron. yas

別に疑っているわけではないけど、これが本当にできたら理想だ。上述のとおり、説明して理解させるのは至難のわざだ。メリットがわからないままさせられる作業は苦痛でしかないはず。XP実践記は実際に読みはじめているがこれでイメージを持ってもらうのはぼくは厳しく感じる。ひがさんは同本の訳者のひとりだし、そこはひがさんならではのやり方でうまく理解させたのだろう。

プロジェクトでJUnitを有効利用するということ。

導入にあたって、JUnitが活かされるためには、極端に言うと開発者全員がJUnitを理解している必要があると思う。プロジェクト内の開発者のうち数人がJUnitを使ったテストコードを書いて開発していたが、その開発者が抜けてしまうとそのテストコードが使われないまま、改修や保守が進んでいくというのが実態である。そしてそのテストコードの資産価値はなくなり、svn delete されるのだ。

実態としてエキスパートのみで結成されるプロジェクトというのはほとんどなく、初心者から経験者、新人から旧人、パートナーからプロパー、など多様な開発者がメンバーとして存在することになる。そのようなプロジェクトで開発者全員がJUnitを理解している状態を作るのはほぼ不可能ではないかと思うのだ。ここにジレンマがある。たとえ勉強会のメンバーが全員理解したとしても(これだって現実的には厳しい)、開発者全員が理解してくれなければ、テストコードによって、他者の開発したコードもスムーズにメンテできるくらいの状態じゃなければ、導入効果は上がると言えないのではないか。

とにかく第一回の勉強会で様子見をすることにする(何回するつもり?)