ポーギーに話す

John Graham-Cumming / 青木靖
2010年5月17日

プログラマであれば、何かの問題を同僚に説明していて、説明し終わる前や、何かフィードバックをもらえる前に自分で答えを見つけたという経験があるのではないかと思う。私は同僚さえ必要ないということに気づいた。話す相手は何でも良くて、ただ問題を口に出しさえすればよいのだ。

私がを書いていたとき、解説しようとしている科学の話を自分でちゃんと理解しているか確認するため、声に出して説明してみることが良くあった。あまりばからしく感じないように猫を相手にそうしていた。猫は私の言うことを理解しないか、少なくとも言葉を返すことはなかったが、はっきり口に出して言うのはとても助けになった。

デバッグしているときコンピュータに話しかけることもある。問題をはっきり口に出すことで頭の中の歯車がかみ合って、自ずと答えが出てくるのだ。

Coders at Work に、(Erlangの作者の) ジョー・アームストロングが「役に立たない」同僚を相手に同様のことをしていたと話すくだりがある。

私には少し年上のとても聡明な同僚がいました。私が彼の部屋に質問しに行くと、彼は毎回こう言いました。「プログラムはブラックボックスで、入力と出力があり、入力と出力の間の関数的関連がある。君の問題の入力は何? 出力は? その2つの間の関数的関連は?」 そしてこの対話のどこかの時点で、「ああ、君って天才だよ!」と叫んで、自分の部屋に駆け戻ることになるのです。そして彼の方は頭を振りながら、「いったい問題は何だったんだろう? あいつちゃんと説明したためしがない」とつぶやくのです。

あいにくと、生き物に話しかけるのは一般には狂気のしるしのように見られている。私が猫に話しかけていたのは、家族がみんな出払っているときだけだった。しかし声に出して言うことが有効なのは、それによって問題を明確に説明することを求められ、隠れた仮定を見出すように強いられ、頭の中の違った部分を働かせるためであると思える。

話し相手はこちらの問題に関して何も知らないので、詳しく明確に説明してやる必要があり、細かく説明する中で問題の考えていなかった部分を見つけることになる。そして声に出して言うことで、頭の中にある言葉を形成し、口を動かし、言葉を聞き、処理をする部分を使うことになる。

達人プログラマでは物に話しかけるというこのテクニックは「ラバーダッキング」と呼ばれていて、ゴムでできたアヒルのおもちゃをコンピュータの脇に置いておき、それに話しかけることを勧めている。ラバーダッキングについて書かれたページには、いろんな人がこの目的で使っている様々なものが取り上げられていて、その中にMITでは学生が教官を患わせる前に一度テディベアに説明しなければならないという話が載っている。

同様のテクニックはアラン・チューリングにも有効だったようだ。チューリングがテディベアを持っていたことを姪が思い出して語っている

ポーギーと呼んでいました。大人になってから自分のために買ったもので、ケンブリッジでいつも椅子の上に置かれていました。彼はポーギーを相手に講義の練習をしていたんです。

チューリングのご家族が親切にもポーギーの写真を送ってくれた。ポーギーが着ている小さな服は、アラン・チューリングの姉が作ったものだ。この写真を印刷して自分のコンピュータの近くに貼っておきたいと思うかもしれない。今度難しい問題に出くわしたら、その問題をポーギーに向かって声に出して説明してみるといい。ポーギーがきっと助けてくれることだろう。

 

PS. Facebookを使っているなら、ポーギーのファンページがここにある。

 

home  rss  

オリジナル:  Talking to Porgy