ホワイトボードプログラミング

プログラマーの力量を見極める--面接官になったら尋ねるべき質問実例集にある「ホワイトボードプログラミング」の解答例
→ 翻訳記事
  http://japan.zdnet.com/sp/feature/07tenthings/story/0%2c3800082984%2c20409456%2c00.htm
→ 原文
  http://blogs.techrepublic.com.com/tech-manager/?p=3023

幾分古い話題ではありますが、新人さん向けに、ここでその解答例を紹介しましょう
自分としては面接でこんな問題を出してどうすんのかとは思うけど、例題そのものとしてはおもしろいかな

ホワイトボードプログラミングについて

ホワイトボードプログラミングは、本来は就職の面接のときなどにすぐにその場でホワイトボードなどに書いてもらうというような場面を想定した問題だそうです
これは基本的には全くプログラムを書けないというような人を篩い落とす目的で出すものなのであって、プログラマの力量を量るようなものではないということです

本来はそういったものですが、とても素朴で単純な問題なので、どこまで美しく書けるか、どのくらいのバリエーションで書けるかというところを楽しむための問題ともなっているようです

ここでは解答例を載せていますが、それを見る前に自分で楽しみながら解いてみましょう

余談

こんなことは新人さんには言わなくていいことですが

元記事について

近頃の新人さんたちはみなさん既にある程度プログラムを書ける人ばかりですね
この元記事もプログラマを雇用する際には「その人はプログラムが書けなければいけない」ということを前提に書かれています

しかし、本当にそうでしょうか
例えば、即戦力を期待するわけでない新人さんを雇用するというようなときにも本当にプログラムが書ける必要があるでしょうか
既にプログラムを書ける人にはどういうメリットがあり、まだプログラムを書けない人にはどういうメリットがあるのか
前提条件に疑問を持って考えてみることも大切ですよ

これは益々新人さんには言えないことですが実際のところ、新人さんがいくら書けたところで教育しないと使えるレベルではないし、全く書けなかったところで教育すればしっかり使えるレベルに持っていけるので、入社する時点でプログラムを書けるかどうかというところはどうでもいいです
人事や経営の立場にあってそういうところに拘っている人は社内の教育体制を考えた方がいいでしょう

翻訳記事について

翻訳記事にある「等値と等価の違いを説明せよ」という問いの原文は「Explain the difference between "equality" and "equivalence"」だから、これを「等値と等価の違いを説明せよ」と訳しても意味が伝わらないと思います
せめて「等値(equality)と等価(equivalence)の違いを説明せよ」とでもした方がいいでしょうね
でも普通プログラマなら気が付く程度だから、気付かない人を篩い落とすということであえてなのかもしれませんね

それでも翻訳した人はプログラマではないのかもしれないので、こういった翻訳記事で意味がよくわからないところがあったら原文を見てみるクセをつけるといいと思います

「ホワイトボードプログラミング」には関係ないのですが、しかしせっかくなのでここで、答だと思うものを書いておくと
「厳密に一致すること」と「ある範囲/条件を一致とみなすこと」の違い
ということになるのではないでしょうか
それだけ

「厳密」とか「ある範囲」とか「ある条件」とか「一致」というのが何を指すのかは文脈に依存するので一概には言えません
ビットが一致することなのか、数値が一致することなのか、数値も型も一致することなのかなどなど
いや、これじゃ答として相応しくないかな

そもそもこういう出題者の意図によってその答が変わるような問題を出すのが適切なのかどうか、というところも出題する立場の人はよく考えた方がいいでしょう
何か目的を持って問題を出すというのは、とても難しいことですね