2010年7月29日木曜日

TestFirstで新人教育もやれば?という話

最近、あるソフトハウスの新人が、準委任契約の開発現場にアサインされるにあたって、顧客企業の開発部門の責任者の面接を受ける事になり、その現場に居合わせる機会を得た。

で、本人のスキル不足に関しては、新人だからと言う事で、まあしょうがないという雰囲気だったが、xUnit の経験が無いという話になると、顧客側責任者から、その新人に同行したソフトハウスの上司に対して厳しい指摘が飛んだ。

曰く、「これからの現場では、xUnit を用いたテストコードによる自動テストを"しなくてよい"なんて事はあるわけが無いから、新人研修では絶対にテスト駆動開発も教えるべき。」という事だった。

私としては、立場上、浮かれた態度を取れない状況だったので、その場ではほぼノーリアクションで神妙にしてたけど、内心は「我が意を得たり」の心境で、ちょっと気分が良かった。

開発の現場にいると、「先にやっておくべきことを後に回すと、利子がついて何十倍にもなって跳ね返ってくる」という事が実によくあるが、この最高の典型例がユニットテストだと思う。

テスト・ファーストとテスタビリティの関係は、「テストを先に書くから、低テスタビリティ・コードが書きにくい」という面と、「低テスタビリティ・コードが書かれる前だから、テストも先に書きやすい」という面が、互いにループ状に補完しあうようになっている。

このシンプルで美しい因果関係がわからない人が、未だに多い。先に書けない人間が後で書けるわけが無いのに、後の方が書きやすそうなんて勘違いして、結局挫折して、テスタビリティもカバレッジも最低のコードを垂れ流してくる。

という訳で、「後付テストの方がテストファーストより簡単」なんて考えてる迂闊なPGをこれ以上増やさないためにも、新人の研修プログラムもテストファーストで組み立ててみてはどうかと思う。

前述の面接での助言だと、単に新人研修にテストファーストを組み入れましょうという話だが、それだけだと手ぬるい。そんな事だと、テストコーディングはカリキュラムの最後の方にまわされて、終いには「後は各自勉強する事」なんて感じで省略されるのがオチ。

だから、まず最初にテスト。プロの現場の教育は「テストありき」で教える。高カバレッジ・高テスタビリティを最初から維持したまま、プログラムが成長していく様を骨の髄まで体得させる。

つうか、まあ、指導者のスキルも物凄く問われてしまうが。

0 件のコメント:

コメントを投稿