2006-03-22
三回は「なぜ?」といえ
仕事上で、「これってどうすればいいの」と聞かれたときに心がけていることが一つある。それは、なぜそれをしたいのか、本当は何をしたいのかというのを繰り返し聞くことだ。
たいていの質問者は、本来の目的から手段を考えて、その手段を実現するための方法を聞いてくる。それはそれで悪くはないのだけど、質問を受けたほうは本来の目的がわからないため、的外れな返答をしてしまうことがある。
たとえば、「配列に格納されている整数の和を取りたいんだけど」といわれたときに「for文回せよ」というのをぐっとこらえて、何で整数の和をとりたいのか聞くと、「1からn-1までの整数の和をとりたい」なんていいだす。「それ、そもそも配列に入れる必要ないし。n*(n-1)/2で計算できるよ」というのもぐっとこらえて、なぜ1からn-1までの整数の和をとりたいのか聞くと、「n個から2個選んで(ry、」うんうん、C(n,2)をとりたいのね。要するに二連複だけど、仕様上三連複もあるけどどうすんの?なんてなことになる。本当に出すべき答えは、「for文回せ」ではなく「コンビネーションの公式調べろ」だ。ぜんぜん違う。
これはあくまでも例で、実際はもうちょっとだけ難しい問題だったりして、本来の目的が見えにくくなっている。だから、なるべく本来の目的(らしきもの)がわかるまで、「なぜ?」を繰り返すようにしている。