Notice: Undefined variable: mobile in /virtual/jove21/public_html/palm.jove21.com/include/http_headers.inc.php on line 172
Palm Space : raw intelligence

Oct 01, 2005

raw intelligence

ポスト @ 14:40:12 | Misc

ちょっと前のNakajima氏のエントリですけど、ためになるのでメモとして。

マイクロソフトにおける採用面接、特に大学を卒業したての新人の採用面接で一番重視しているのは、「raw intelligence」である。直訳すれば、「生(なま)の知性」である。そこには、「知識は必要に応じて付ければ良い。一番大切なのは、新しい知識をすばやく見に付け、それを応用して難しい問題を解決する知性だ」という会社としての確固たる信念がある。

この「生の知性」が大切だということは、日々実感しています。

逆に言うと、確かに知識を身に付けることは大切だけれど、それは目的を達成するための手段であって、それ自体を目的にしてしまっては意味が無いということ。クイズ王になりたいって言うんなら別ですけど(+_+)\バキッ!

以下、駄文。

「自分のために働く」ということ

どこの会社もそうかもしれませんが、うちの会社ではよく「会社のためではなく、自分のために働け」と言われます。まず個人のスキルを上げることが会社全体の利益に繋がるという考え方です。ひいては自分の給料も上がると。入社当時の上司には、仮に会社が倒産しても他社ですぐに雇ってもらえるようなエンジニアになれ、と言われました。

ただ、この「自分のために働け」という言葉だけが一人歩きして、「自分の知的好奇心を満たすこと」を主目的に仕事をしている人が多いんです。少なくともここ数年、そういう人たちに囲まれて仕事をしています。

目的を達成するために足りない知識を身に付ける、のではなく、自分の好奇心を満たせれば目的を達成出来なくても良いという考え方、ならまだ正直で宜しいが、目的を自分の都合の良いように変えてしまう。最悪なのが、その変えてしまった目的が、さも当初からの目的であるかのように自分自身が思い込んでしまっていることです。

真っ当なことを言ったのでは、お前には知的好奇心が無いのか、と言われかねません。個人の仕事や趣味の世界であればそれも有りかもしれませんが、チームとしては成り立ちません。実際成り立っていませんが、その原因はスキルの無いチームメンバーのせいになっています。

さらに厄介なことに、概してそういう人達は弁が立つ、というか、難しいことを小難しく言うので、それに煙に巻かれるような人には一目置かれます。本当にキレル人には一刀両断にされてしまいますけど。このところ、会社のお偉いさんに前者の煙に巻かれてしまうような人が増えているからか、そんな仕事でもそれなりに評価されてしまうため、この傾向に歯止めがかかりません。会社にとっての成果なんて無いに等しいのに。

完全に目的と手段が逆転してしまっていて、いわゆる無駄知識の宝庫と化しているのです。少なくとも会社にとっては。

何とかこの悪いループから抜け出せないかともがいていますが、一方でその流れに乗ってしまうのも楽で良いかなと思う自分もいます。好き勝手やって給料貰えるなんて悪い話ではありませんから。でも、それでは自分にとっても会社にとっても将来は無いでしょう。別に会社人間ではない自分がこんなこと考えてるんだから、結構深刻。疲れてます。

ビル・ゲイツの面接試験−私の場合

さて、愚痴もこのくらいにして、冒頭のエントリで出されている問題を考えてみました。

[問題] 二次元座標上に、それぞれの辺がX軸・Y軸と平行に置かれた長方形Aと長方形Bがあるとする。その時、長方形Aと長方形Bが一部でも重なるかどうかを判断する条件式を書け。

自分の考えのプロセスを説明しながら解くこと、ということなので、そのように書いてみます。

二次元で考えるのは難しいので、とりあえず一次元で考えました。

まずはX座標。Bを固定してAを左から右に動かしてみると、Aの右端がBの左端に重なった瞬間から、Aの左端がBの右端を通り過ぎるまで、AとBは重なっていると気付きました。文字にすると訳分らなくなりますが、頭の中で図形を動かしてみれば簡単なことです。Y座標に関しても同様です。

あとは、一次元で考えたことが二次元でも矛盾が無いか確認すればOKでしょう。

座標定義(図まで書いてる暇人)

Aの右端 >= Bの左端 Aの左端 <= Bの右端 Aの下端 >= Bの上端 Aの上端 <= Bの下端 (=(イコール)を付けるかどうかは条件によって違うかも)

座標を定義して、数学的な表現に変えると次のようになります。多分間違ってないと思うんですけど。

xb - wa <= xa <= xb + wb yb - ha <= ya <= yb + hb

さらに、Cで書けばこんな感じでしょうか。

if (xa <= xb + wb && xa >= xb - wa && ya <= yb + hb && ya >= yb - ha) { 重なっている }

素直に長方形の四角の座標を定義してあげれば、もっと簡単な式になりますが、PalmOSのAPIだとこんな表現なんですよ。

こんなことを考えてから、このエントリの続きを読んでみると、エレガントな回答に近いことが分かって、ちょっと優越感。でも、余事象を考えた方がもっとエレガントだし、さらにコメントにあった円の重なりから考える方法には感心させられることしきり。もっと頭を柔らかくして考えないと。

ところで、この問題は座標に平行な長方形だから割と簡単ですけど、ひし形とか円とかだったらまた違うアプローチになるでしょうね。こういうの、頭の体操になって結構好きです。が、考えるより書く方が時間がかかるのが難点。

Trackback

No Trackbacks

Track from Your Website

http://palm.jove21.com/trackback/tb.php?id=337
(言及リンクのないトラックバックは無視されます)

Comment

No Comments

Post Your Comment


(Smile) (Wink) (Laugh) (Foot in mouth) (Frown) (Gasp) (Cool) (Tongue)

*は入力必須です。E-Mailは公開されません。