2009-06-20
新人プログラマにプログラマ的思考を身につけさせるには 〜前編〜
はじめに
今いるプロジェクトには、Sさんという方がいて、新人二人の教育*1をメインでみて下さっています。
先日、そのSさんと「プログラムの不具合を発見した際の対応方法」を身につけさせるにはどうするのが良いのか、という話をしました。
その時は最終的に「これだ!」という答えを見いだせなかったので、自分なりにどうすればいいのかを考えました。
新人プログラマの抱える問題
まずは話の前提として、現在起きていることから説明します。
新人がプログラムを書く際、当然のことですが、途中で何らかの問題にあたります。
うちのプロジェクトの場合、言語はJavaですので、そもそもコンパイルが通らないこともありますし、実行時エラーで落ちることもあります。
あるいは例外はでなくとも、論理エラーを抱えていることもあります。
そういった様々な問題に当たった際、起こっている問題を把握する前に、その問題の解決を先に行おうとしてしまう傾向があり、これを解決するにはどうするかということを考えました。
注記
この文章だと「新人が使えなくて困ってる」ともとれてしまう気がしたので、注記します。
後編のまとめのあたりに書こうと思っていたのですが、この問題は遅くとも数ヶ月、早ければ数週間で自然に解決すると楽観的に見ています(少なくとも、私個人は)。
しかし、それは他のトレーニングや業務をこなすことによって、副次的に身についていくものであって、「いつまでに」というように見積もれるものではありません。
このような副次的作用ではなく、能動的にこの問題を解決しようとした場合、どのようなことが考えられるか、というのが当エントリで取り上げる部分です。
マニュアル作ればよくね?
Sさんとの話で、僕が出した案は、マニュアルを作ればいいんじゃないか、という案です。
ここでいうマニュアルとは、例えば次のようなものです。
僕はマニュアルというのは意外とバカにできなくて、繰り返し行うことで、意識せずとも自然に行動が身に付くと考えています。
ですが、この案はSさんに「いや、それはダメだ」と否定されました。
Sさんはその理由について、「だって、マニュアルあったら見ちゃうじゃん」と言っていました。
tar zxf 「だって、マニュアルあったら見ちゃうじゃん」
Sさんの言葉はいつもGzip以上に圧縮がかかっているので、tar zxfすると、きっと次のようなことなんだと思います。
- マニュアルを使うと、確かにそこに書いてあることはできるようになる。
- なぜなら、意識しなくてもマニュアルがあればそれを見ればできるから。
- 繰り返していくうちに、体がマニュアルを覚えて、意識せずにそこに書いてあることができるようになる。
- でも、プログラマは常に「意識して行動」しなければならない。
- 単に今できるようになるからと言って、マニュアルを導入するのは、危険だと思う。
マニュアルやっぱだめじゃね?
考えてみれば、彼らが新しい問題にあたるたびにマニュアルなんて作ってられませんし、そもそも誰かがマニュアルを作ってくれること自体、期待するべきではありません。
我々は何らかの問題に対峙した時、自分自身でそれを解決しなくてはなりません。
そもそも、他人の抱えている問題を見つけ出し、解決することこそが、我々に求められていることです。
ですから、今この時期にこそ、よりよい問題解決手法を身につけることが重要です。
やはり、Sさんが言うように、今回の場合ではマニュアルは解決方法としてベストではなさそうです。
後編に続く
[明日書く]
*1:教育という言葉はあまり好きではない(一方的なニュアンスがあるので)のですが、他のいい言葉が思いつかない
