2012年1月17日火曜日

TDDと勉強法

昨晩の帰り際にふと思い立ったので、覚書程度に。

オレが高校3年生の時、11月、突如思い立って、物理の勉強に没頭した。

単純なma = Fとかいう公式に載っていることではなくて、もっと運動方程式とは何なのかと根源的に追い詰めた。

その時に役に立った本が『坂間の物理』という本で、えっと、某台予備校に通っていたかつて学生だった人の何人かは知っている物理教師の本だった。

まあ、その教師の物理の授業を受けたことがある人は知っていると思うけど、あんなのは受験生が期待する授業ではない。

ただ、あの人のやっていることはTDDという観点で見ると、非常に理にかなっている。

彼の教育プロセスをもう一度思い出してみた。

  • 真似をさせる→答えは教えてやる。間違えてもいいから、こうなるように計算してみろというのである。
  • 徹底的に真似をさせる→教えてやった答えを、問題文を見ないようにして解けというのである。
  • 高速化させる→もっとエレガントに解答を書けというのである。

なんか、TDDっぽい教育だと思った。

一般的なTDDスタイルの開発

  • 答えはわかっている。テストは落ちる。
  • 答えが合うように、実装を作る。
  • もっとエレガントになるように実装を洗練させる。

なんか似ている。

オレは思い立った1ヶ月間『坂間の物理』に掲載されている108問の問題をすべて、この三段階の方法で演習した。

結果、予備校生になっても物理は超得点源になって、某大学模試で物理の偏差値78とかありえない値を取得した。


ペアプロの学習効果はよく言われているが、実際にはTDDもプログラマーの成長に欠かせない要素があるのではないかと思う。


テストを書くということは、実装を書くのに加えて、テストコードも書かなければならないから、一見無駄に思える。

だが、それは上記に上げたプロセスのまだ第一段階なのではなかろうか?


本当にTDDが力を発揮してくるのは第二段階、第三段階を超えた時で、エレガントな実装を出来るようになった時には、オレが物理を超得意となった状態と同じく、プログラマーはプログラムの実装を超得意と思って自信をもって取り組むことが出来るようになるのではないかと思う。

まあ、脳足りんの考えたことなので、実証もされてないことだし、単なる妄想かもしれない。

ちなみに坂間先生というのは、自分の授業について、後で答えを書いてきてごらん、添削してあげるからと言っていたので、毎週授業でやった範囲の部分の真似を持っていていたら、ちゃんとレビューしてくれた。この部分はこう書くともっとエレガントになるとか、ここは読みづらいからもっと大きく書けとか。

テストも同様で、それをレビューしてエレガントなコードはどういうものなのかを考えていけば、プログラマーは大いに成長するのではないだろうか。




ちなみに、坂間先生はオレが通っていた○進スーパーコースでは人気なかったです。

おわり。

0 件のコメント:

コメントを投稿