2011/10/22

もし誰も教えなかったとしたら。



先週と今週、学部3年生の授業のTA(Teaching Assistant)に行って来ました。僕の所属していた管理工学科には3年生のときに管理工学科演習というのがあり、その演習の1つとしてプログラミングの演習があります。修士の学生はこういったときにTAとして、授業のサポートをしに行きます。管理工学科演習では、統計・会計・IE(Industrial Engineering)・人間工学・プログラミングなど、様々な分野から課題が出されます。僕の研究室は管理工学科の過程の中でも情報系に位置づけられています。

今回の演習内容は、JavaScriptを用いたインタラクティブなゲームの設計及び実装です。プログラミングが得意ではない学生も多い中で、比較的自由度の多い課題を出しています。3年前の僕の時にも同じ課題が出ていました。JavaScriptについては春学期の授業で少し触れられているものの、やはり苦手な子が多いようです。授業では4つ練習問題を出しており、JavaScriptのイベントハンドラの利用方法やDOMのManipulationなどについて実際に手を動かしながら雰囲気を掴んでもらうようにしていますが、なかなか思うようにできていない様子を散見しました。誰でも最初、プログラミングの学習はとても難しいように思えます。そもそも何をしたらいいかわからない、問題が何を聞いているのかわからない、なぜこのコードが動くのかわからない、document.getElementById()とは何ですか、といったものまでたくさんの質問がありました。リファレンスを見ても調べ方がわからない。サンプルをコピーしては見たけれど、その後どうしていいかわからない。そんな様子を眺めながら、プログラミングを教えるというのはどうしたらうまく行くのだろうかと、先週から今週にかけて考えていました。

いくら他にやることがあっても、研究室に聞きに来てくれたり、twitterやメールで連絡をくれた学生には極力教えるようにしています。きっとその20分なり30分が、その後のレポートだけじゃなくて1年、3年、5年といったところまで役に立つんじゃないかと思うからです。学部3年生といえば、まだ20才くらい。いろんなことを知った上で、考えながら書くプログラムは面白いはず。コンピュータを動かすにはあるルールに則らなければならないし、慣れないと時間もかかる。そういう部分を拭うことで、ぐっと楽しみに近づく。プログラミングって動いたらこんなに面白いんだ、意外と簡単に動くんだ…。そんな表情を目の前にすると、ああやっぱり教えてよかったなぁと感じます。そうこうして教えながら、@chibicodeさんの20歳を過ぎてからプログラミングを学ぼうと決めた人たちへは、プログラミングがわからないと思っている人から見るとどんな風に受け取られるのだろうかと気になりました。大学の授業のなかでプログラミングを教えるのは難しい、と言って教える側が思考を停止してしまうと、勝手に興味を持った人しかプログラミングはできるようにならないのかもしれません。授業の目的にもよりますが、僕個人としてはたくさんの人にプログラミングを通して表現したり、ブラウザ上で動くモノを作る楽しさを多くの人に知ってもらいたいのです。

もし誰もプログラミングを教えなかったとしたら。きっとプログラミングを一緒に楽しめる人が減ってしまって、僕も、他のエンジニアも楽しめないだろうなぁと思いました。目の前の誰かに教えることができているか、誰かのために立てているか、僕自身も誰かに(直接ではなくても、本を通じて著者から、GitHubのソースコードから、ささいなweb上での会話から…)教えてもらいながら勉強していているということを自覚しているか。教える側の人間としても、そんな当たり前の問いかけを自分に対して行う良い機会になりました。



今日も何冊か本を読み始めました。



TDD入門については以前から勧められていたのにも関わらず、なかなか手が付けられていませんでした。読んでみて、勧められた理由がわかりました。ああ、今まで読まなかったのかと思うとともに、明日から早速活かしていけそうです。分散システムの本は個人的に「分散システムって結局何なんですか?」と聞かれたら答えられない気がしたので、読んで見ることにしました。今日でざっと読みましたが、特に第5章の名前付けのところと第12章の分散ウェブベースシステムについては、今まで散らばっていた知識がよくまとまって書いてあるので読んでいて頭がすっきりしました。WEB+DB PRESSの総集編は一冊ずつ楽しみがら読んでます。今Nos.59,60の二冊だけ読みました。

明日は表参道で演奏してきます。