2010年8月28日土曜日

私の答え:12匹のねずみとチーズ

それではクイズの答えです。使うチーズは全部で5個。

まずは12匹のねずみに A,B,C,D,E,F,G,H,I,J,K,L と名前を付け、彼らを三つのグループに分けます。(A,B,C,D) (E,F,G,H) (I,J,K,L) となり、(A,B,C,D) にチーズ#1、(E,F,G,H) にチーズ#2、(I,J,K,L) にチーズ#3を与えます。議論を簡単にするため、A が特別なねずみだと仮定し、それを知らないふりをしつつ話しをすすめます。

2010年8月21日土曜日

TOC 2010 および就職活動について

日本を離れて丸一年になりました。さて、去年学生として参加した Technical Opportunity Conference (TOC) に、来月 MathWorks のインタビュアーとして参加することになりました。CMU の学生さんに、今の自分の department でのお仕事を説明したり、最初のインタビューをしたりします。まずは、学生さんの話しにしっかりと耳をかたむけることから始めたいと思います。

就職活動つながりですが、茂木さんの日本の就職連続ツイートや内田さんの日本の人事システムについてを読んで、自分が去年体験した就活とはずいぶん違うなと感じました。日本では、ある外資系 IT 企業のインターンの面接しか経験したことがないため、自分の体験から日本の就活全般について話しをすることはできません。そのインターンの面接では志望動機がうまく説明できずに落とされてしまいましたが(それが理由だと私は推測しています)、そのグループ面接の質問内容は、「なんで私は落ちたんですか」と candidate が後からインタビュアーに聞いたら、その「なんで」にきちんと答えられないようなものが多かった気がします。インターンの志望動機、学生時代何を頑張ったか、なぜその学部を選んだか、当社のイメージ、過去に直面した困難な状況をどのようにして克服したか、など。その人の過去をさかのぼる質問やある事柄の表面だけに触れる質問ばかりで、この瞬間に何ができるかを判断する質問がないように思いました。だからだと思います、この面接の後に「これは受かっても落ちても、どうしてそうなったのかが分からない面接だな」と思ったのは。

内田さんは、
その意味では、受験というのは努力と報酬の相関がかなりの確度で予見される「合理的な」プロセスである。
けれども就活はそうではない。
と説いていましたが、私が経験した13社の米国のソフトウェア会社との面接は、この受験のスコアリングに非常に近かった気がします。まず、その人がこの瞬間何ができるのかを的確に知るため、面接をするのは人事の方ではなく、入社後に一緒に仕事をするであろうエンジニアさんたち。人事の方たちはコンタクトをとることが主な仕事です。 45分から1時間のホワイトボード付きテクニカルインタビューを3から5ラウンドをして、candidate のこの瞬間の能力を測ります。ちなみに、Microsoft もそうらしいですが、MathWorks も社内で違う department に移るときは、この45分から1時間の技術面接セッションが最低3ラウンドはあります。このタイプの面接は受験のスコアリングに非常に近い。私も13社との面接で落ちたケースは、問題が解けずに落ちたので、ここで書いたように落ちたことに関しては何の驚きもありませんでした。ただ不出来だった項目の中で具体的に何がダメだったのかが分からなかっただけで。この点は、米国のソフトウェア会社の面接は非常にクリアです。問題が解ければ通る、解けなければ通らない。志望動機も大事でしょうが、その比重は「この瞬間あなたは何ができるの?」に比べれば遥かに軽いはず。そもそも、志望動機を語るのは「口」です。口を動かすのはとても簡単です。寝ている人だって口ぐらい動かせる。面接で、その部位を一生懸命動かす candidate を見て彼/彼女が真に備えているものが分かるのでしょうか。もちろん職種によりけりですが、口だけを動かすエンジニア、画家、音楽家、スポーツ選手を見てどう思いますか。口は、必要でない限り、体の中で最後の最後に動かす部分だと今の自分は考えています。だからこそ、ここで書いたように、ある技能を瞬時に引き出せるかどうかを見るため、電話インタビューで Google は Google Docs に、Facebook はサイト内のスクラッチパッドのようなページに、candidate にライブでコードを書かせる理由がよく分かります。

ただし、この瞬間に何ができるかの能力を測るタイプの面接では、たまたまそれに答えられずに落ちてしまった非常に優秀な方々もたくさん出てくると思います。だから人事面接やマネージャー面接を織り交ぜて、総合的な判断を下すことが必要なのでしょう。採用は本当に重要かつ難しい問題なのだと改めて思います。それでも、私自身が去年感じたのは、米国のソフトウェア会社の採用システムは非常にわかりやすくていい。能力があるかないか、それだけ。自分の能力のなさを悔んだことはありましたが、システムの理不尽さを呪ったことは一度もありませんでした。全て本音のやりとりが出来ましたし、他社ともインタビューしていることもインタビュアーに堂々と伝えました。テクニカルインタビューも含め、そういうやりとりの末に出された結果はどれもすべて納得がいくものでした。

といろいろ考えたところで、来月の TOC 2010、しっかり仕事をこなしてまいります。12匹のねずみとチーズの答えは次回。実はこれも、とあるソフトウェア会社の電話インタビューで出された問題。その会社の面接もオンサイト一歩手前の CMU キャンパスでの第5ラウンドインタビューで落とされてしまいましたが、それもやはりよい経験でした。

2010年8月13日金曜日

クイズ:12匹のねずみとチーズ

12匹のねずみがいます。この中で一匹だけ変わったねずみがいます。そのねずみは他の11匹の普通のねずみとは違うペースでチーズを食べます。ただ分かっているのは「違う」ペースというだけで、他の11匹より早く食べるか遅く食べるかは分かりません。手元にあるチーズを使ってこの変わったねずみを割り出したいのですが、以下の条件のもと、最低いくつのチーズが必要でしょうか(必要なチーズの数が少なければ少ないほど、良い答えになります)。

ちなみに知られているベストアンサーがあるらしいのですが、私はどうしてその数で割り出せるのか今でも分かりません。私の答えはしばらくしてから投稿しますが、その答えはベストアンサーよりもひとつ余計にチーズを使います。
    ≪条件≫
  • 時計を使ってはいけないので、時間計測はできない。
  • 複数のねずみが、ひとつのチーズに群がってもよい。
  • 手元にあるチーズはどれも同一だが、その形状はいびつで、食べかけの形状からは残り何分の一というような判別はできない。
  • 変わったねずみ以外の11匹の普通のねずみは、みな同じペースでチーズを食べる。
  • 仮に、普通のねずみ11匹の中から2匹 A, B を選び出しそれぞれにひとつずつチーズを与えた場合、A, B は同じタイミングで食べ終わるものと考えてよい。
  • 好きなタイミングでねずみ(or 複数のねずみ)からチーズを取り上げてよい。その取り上げたチーズは食べかけとして再利用してよい。
  • 食べかけのチーズをねずみ(or 複数のねずみ)に与える場合は、それは新しいチーズとしてカウントしなくてよい。

追記:
以下の大事な条件が抜けていました。すみません。
  • ふたつの(もしくはそれ以上の)チーズの大きさが等しいかどうかを、目分量で相対的に比較することはできない。
具体的にはこういうことです。最初に12匹のねずみを4つのグループ (A,B,C) (D,E,F) (G,H,I) (J,K,L) に分けます。そして、それぞれのグループにチーズを与えます(この時点でチーズを4つ使っている)。仮にAが遅いねずみだったとすると、(A,B,C) のグループに食べかけが残り、それ以外のグループは同じタイミングでフィニッシュします。ここから次のステップとして、(A,B,C) の食べかけと同じ「残量の」食べかけを作りたいとしましょう。しかし、次のようなことはできません:(A,B,C) だけを再びひっぱりだしてきて、新しいチーズ#5を与えて同じ残量のたべかけを作る。なぜこれができないかというと、目分量で大きさの相対比較ができないため、いつ彼らにストップをかけていいかわからないからです。すなわち、すでに作られている食べかけチーズを横において、今まさにがりがり削られているチーズ#5の大きさを時々刻々観察し、横の食べかけとそろそろ同じ大きさになったかな、なったかな・・・なった、はいストップ!ということができないということです。もちろん時間計測もできないので、それもうまくいきません。

2010年8月7日土曜日

私の外国語習得法 Part2

今回は留学前の数カ月前、2005年の2月~4月あたりの話をします。さて、覚えたての言語で話そうとすると、この言い方って文法的にはあってるんだけど、普通そうは言わないよなあって、ネイティブの人から指摘されることがあるかと思います。なんでネイティブの脳は「普通そうは言わないよな」っていう判断を下せるんでしょう?私が留学の2,3か月前に抱いた疑問はここでした。私たちは生まれてから膨大な量の言葉のやりとりを知らず知らずのうちにこなしています。親との日常会話、兄弟や友達との喧嘩、スポーツの最中の声の掛け合い、電車に乗って聞こえる周りの人達の会話、飲み会でのバカ騒ぎ、お医者さんに行って自分の症状を説明する・・・どれだけ言語のプールに晒されているか、正直想像すらできないです。こうした言葉のやりとりという training data で訓練された結果、脳内に確固たる言語モデルが構築されていると私は考えてます。では、この脳の驚くべきプロセスに the hard way で対抗するためにはどうしたらいいか。最初のステップとして自分が考えたことは三つありました。1) 自分のレベルにあったスピーキングの教材を選ぶこと2) 自分自身を幼少時代に戻すこと3) 心の中のつぶやきは全部英語で、でした。