プログラマーの問題解決能力

ちょっと前にも触れたとおり、テンパったプロジェクトの若い子のフォローをしているのだけれども、どうもおんなじことを何回も言う機会が多く、疲れがたまります。

ちょっと見ていると、問題に直面した時に、どうやって解決していくかの道筋がさっぱり見えてこない。一生懸命コードを追ったり、データを追ったりするのはいいのだけれども、今何が起こっていて、何が悪いのかというのを把握する、という行為ではなく、何をどうしたら直るだろうかということだけを考えているように見える。
そりゃいつか正解にたどり着くかもしれないけど、プログラムなんてプログラムしたとおりにしか動いてないんだから、うまく動かないところを特定するために努力するのが一番の近道なんだけどなあ。

一般化して語れる話ではないとは思うんだけど、やっぱり検索技術の発展と、1億総インターネット化によって、思考方法ではなくて答えを求めることが勉強になっちゃっている弊害というのはあるんじゃないかと思う。仮説を立て、証拠を集め、検証して、結論を出す、という当たり前のプロセスを実行できる人が少ないのだ。コードをいじるにしても、ここかも?ここかも?という感じで五月雨式なのである。そうじゃなくてさ、まずデバッガでその表示の怪しいデータが自分の意図したところにきちんと設定されているかを調べようよ…DB更新して再表示してみたら更新したデータが表示されないのはまずDBの中身を検証しようよ…
ちょっと事実を確認すればすぐ解決する問題に対して2〜3時間フリーズすることもざら。これではプロジェクトなんて円滑に進むわけない。で、ちょっと声をかけてあげるとすぐさま問題が解決して先に進んだりする。

問題に対して、何が起きているかのいくつかの可能性を考え、それを少しずつ潰していって答えにたどり着く。そうやって作り上げてきた思考のプロセスと経験値によって、たいていの問題は一般化して答えが見つかるようになっていく。それを大きく俯瞰して眺めることができるようになれば、システムの仕組みの基本的な考え方がわかるようになって設計ができるようになる。中々システム設計をできるようになるまで成長してくれないのは仮説検証のプロセスを得た思考のトレーニングが足りてないからかもしれないなあ。

これをゆとり教育のなんとかとくくってしまう誘惑にかられることもあるけど、まあ、そういうわけでもなんでもないっというのがはっきりしたというのは今回の地震で得た教訓の中では一番大きかったかもしれない。2ちゃんコピペサイトを守ろうと発言する国会議員が出てくるとはさすがの僕も想定外ではあった。