テストファースト :-)

我が家には小学生の娘がいるのだが、ある日こんなやり取りがあったらしい。

  • 母:「今日は新しい単元だから、まずは教科書や参考書を読んで理解しようね。」
  • 娘:「えー、めんどくさい。問題集やればいいでしょ。」
  • 母:「だって、ここぜんぜん知らないはずだよ。問題やったって絶対わからないから、まず教科書読まなきゃダメだよ。」
  • 娘:「え、でももしかしたら解けるかも知れないじゃない。まず問題やってみて、わからなかったら見るからそれでいいでしょ。」
  • 母:「そんなんじゃ、ちゃんと覚えられないじゃないの。教科書や参考書は知らない人のために順番に見ていけばわかるように書かれているんだから、そうやって間違えてところだけ、なんてやっていたら、ちゃんとした知識が身につかないでしょ。」
  • 娘:「面倒だなぁ。」

母親のいうことは一見もっともだ。

知識はきちんとしたから積み上げなければいけない、と言うことだろう。これはピラミッドを建築する際には、基礎の石をおき、下から順番に作り上げていくようなことで当たり前と言われていることだ。しかし、学習にたいしてこのパターンが適用できるかを考えると疑問がわいてきた。

娘の場合何が一番の問題かというと、「勉強をする気力があまり高くない」と言う点なのだと思う。確かによくわからない内容が書いてある教科書をはじめから順番に読んでいくのは面倒だ。しかし、勉強はしなくてはならないとは思っているのだろう。問題集が解ければ良いのだ、とも以前から聞いているのだろう。だから問題集だけをやってそれで早く勉強を終わりにしたかったのだろう。確かに、問題集だけみても解けるはずも無く、母親は正解のようにも思える。しかし、問題は学習内容ではなく、何を学ぶかの目的と意欲なのではないだろうか。

誰でも経験はあると思うが、勉強でもなんでもやり始めるまでが大変で、やり始めると、わからないところを真剣に調べたり、食事の時間も忘れて取り組んでしまうことだってあるのではないだろうか。娘は「勉強面倒だなぁ。でもやらなければいけないからなぁ。」と思っている。そういう時、まず勉強をはじめるきっかけとして、問題を解くという形でまずは取り掛かろう、というのは正解なのではないだろうか。

まず、きちんと教科書をよんでから問題集をやろう、と考えると、あまり目的意識も無く読むことになり、教科書を読むことはことは苦痛になりやすい。またそういう経験から、「教科書読むの、面倒だな。」と思ってしまう面もあるのだろう。だから、あえてまったく解けない問題集にとりかかるのはアリなのだと思う。最初に取り掛かるのが大変なので、どんな形であれ、勉強を始める、という状態になればよいのだ。

さらに言うなら、まず問題を解くことで問題が明確化する。自分は何を知らなくて何を知るべきかを知ることができるのだ。それがわかれば目的意識を持って教科書を読むことができる。目的もなく読むことは苦痛だが、知りたいことを知るために読むのは、目的が明確化し、教科書を読むことで目的が達成できるので、達成感も喜びも感じるだろう。勉強が楽しい、と感じるのはこういう瞬間ではないだろうか。

ITの世界でも似たようなことはある。まったく仕様を知らないくせにまずテストを書く。そしてテストの正解が何かに興味を持ち、要件の確認をつめていきながら、実際のコードを書いていく。得られる結果を想定して開発を進めていくし、興味の範囲を顧客も開発者も明確化しながら進むので要求を実現するコードを書くことが可能になるのだ。

そう考えると、なんと我が家の娘は小学生にして既にテストファーストを実践しようとしていたのだ。恐るべし小学生だ。