教えること、学ぶこと 

最近会社にインターン生が2名入ってきました。プログラミングはほぼ未経験だったのですが、この1ヶ月ぐらいで見違えるぐらい成長しています。若いエンジニアの卵が成長するのを見るのは楽しいですね。久しぶりに教える機会がたくさんあるので、その中で感じたことをまとめておきます。

乾いた根に水を与える

そもそも当人に学ぶ意欲があるという前提は、教えるにあたって重要だと改めて思います。私は植物を育てるのが好きなのですが、水やりの基本として「土の表面が乾いてきたころに水やりをすること」が重要だと言われています。人も同じように、学びたい/成長したいと乾いている人に、アドバイス(水)を与えるのが基本だと思います。植物の場合、水を与えすぎると根腐れを起こしてしまうのですが、知識も同様に詰め込んでも吸収する土台がなければ、身になりません。双方にとって時間の無駄になってしまうので、意欲が湧かないのであれば環境を変えた方がよいと思います。

人気の予備校の先生を見ていると教え方そのものよりも、学ぶ意欲をどう起こすかに注意を払っている人が多いのはそのためなんでしょうね(意欲がないのに予備校に通うのもどうかと思いますが)。幸いなことに、今回来てくれたインターン生は学ぶ意欲がかなり高いので、この点はとても楽をさせてもらっているなと思います。むしろ、がっつかれ過ぎていい意味で大変です(^^;

何が分からないかに、どう気付いてもらうのか

私が好きな言葉の一つに「無知の知」という言葉があります。私は、何が理解できていないかを正しく把握できるということは、既にそのことを半分以上理解していることだと思っています。例えるなら、数学の問題を解くときに問題を正しく理解できれば半分解けたようなものという、あの感覚です(たとえてみたものの、むしろ分かりにくい表現かも。)そのぐらい自分が知らないことが何なのかを把握するのは難しいことだと思います。私も日々苦労しています。

インターンの子達を見ていると、分からないことが多すぎて毎日がむしゃらに突き進んでいます。その勢いは素直にうらやましいのですが、きっと何が分からないかが分からないのだなと感じます。私がインターン生を受け入れる時は、プロジェクトの計画に加えて、それを遂行するための学習計画というものを立てるようにお願いしています。分からないことが何なのかを定義しないと計画は立てられないので、結果何を学ぶべきかを考えるきっかけになるというわけです。物事を構造的に学ぶことは日本の学校教育ではあまり教えられないので、学生さんもきっとそういうアプローチに慣れていないのだろうなと思います。もう少し構造的な学習方法については詳しく書きたいので、別のエントリーで紹介したいと思います。

知っている/理解した/できるには大きな差がある

今回インターン生の子の一人が「事前に本を読んでいるので、そのあたりの仕組みは理解できています」と言っていたので、簡単なプログラムを作る課題を出してみたのですが、その問題を解くのに丸2日ほど掛かったことがありました。
本人は少しショックを受けていたようですが、別に彼だけが特別ではないと思います。私含めて皆、知っていることと、できることの差を過小評価する傾向にあると思います。

更にもう少し分解すると、知っている状態と理解した状態にも大きな隔たりがあると思います。仮に本を読んで知っていても、自分の頭の中で構造的にその意味を解釈していないと(本の字面を追っているだけだと)実際には理解にまで到達していないことなんてよくあることです。

逆説的ですが差を埋める一番の方法は、まずは手を動かせてみる、ことが最善だと思います。当然最初はできないのですが、なぜできないのかを考え、理解の不足を知り、学び、もう一度トライする。この学びのフィードバックをいかにスピーディに回していけるかが重要だと思います。

とまぁ、いつも厳しいこと言ってるけど、そういうことだよ。とインターンの子に伝えたかったので書いてみました(笑)