2010/02/24

プログラミング初等教育とTDDの相性は最高

1年半ほど前、入社前はプログラミング経験ゼロの@chibisayoを新入社員としてチームに迎え、私がOJT担当っぽくなった時の経験から、プログラミング初等教育とTDDの相性は最高であることをきちんと文章に残しておきたかったので、このビックウェーブに乗ることにしました。
私が @chibisayo に何度も何度も言ったのは、まずユニットテストを先に書くということです。
これによる最大のメリットは、何がわからなくて悩んでいるのかをこちらが把握できることです。
  • テストが書けないのであれば、仕様が理解できていないか、テストの書き方が分からない
  • テストがREDになっているのであれば、それを通すプロダクトコードの書き方がわからない
初心者(じゃくなくても)でよくある、「わからない所がわからない」「全部わからない」状態になる可能性がとても低いのです。最初は、本人が「全然わからない」と思い込んでいることがよくありますが、こちらから見れば一目瞭然です。
徐々に本人も自分のわからない所がわかるようになり、質問の仕方も「このテストの書き方がわからないんです」とか「こんなテストを書いたんですけど仕様とあってますか?」と非常に具体的になってきます。
プロダクトコードについては、「このテストを通そうとしてここまで書いたんですが、ここから先が分かりません」と質問の仕方のお手本のような聞き方ができるようになります。
なんということでしょう!TDDを意識しただけで、コーディングスキルだけじゃなく、適切な質問の仕方まで身についてしまったではないですか!すごい!
このように、プログラミング初等教育からTDDを意識させるのは、コーディングスキルの面でも、コミュニケーションスキルの面でも、とても価値のあることだと思っています。
またこの副作用として、常にTDDを意識させられた @chibisayo は、配属から半年経ったころに「テストを書かなくてどうやってプログラム書くんですか」という名言を残すこととなったのでした。

最後になりますが、TDDを意識したプログラミング初等教育の難しさは、仕様からテストコードを導出するアプローチをどう習得させるかというところだと思います。
今回はそちらも(たまたま)成功したと思うので、まだ記憶が残っているうちにエントリにしたいと思っています。(続く)(かも)

0 件のコメント:

コメントを投稿