最近のトラックバック

2017年2月
      1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28        
無料ブログはココログ

« 2009年12月 | トップページ | 2010年2月 »

2010.01.26

Appleの新製品が楽しみでたまらない

 実は今度発表されるAppleの新製品が楽しみでたまらない。
 これまで、初代iPod、iPod nano、iPod touchはそれぞれ発表と同時に購入していたが、今度のもそうなるだろう。

 数日前にふとんの中で見た夢で、

ジョブズ「今度のiPodの新機能は、装着すると空が飛べるのです!」(実際に空を飛ぶデモをする)
俺「うおー、それはすげえ!」

 というのがあったが(タケコプターのイメージ)、さすがにそれはねえよな。

 正直なところ、単に画面サイズが大きいiPod touchだったとしても十分魅力的なんだが、その上にどんな機能を載せてくるだろうかね?

 早くこの方面もビジネスにしないとな。結局まだ調査と試作だけで実際の製品は着手してないのが非常に悔しいが、今年中には何とかしたい。はっきり言って、もはやWindowsはイモすぎて飽きた。
 理想的には、金のための仕事と技術的好奇心を満たす活動は5:5くらいにしたいんだがなかなか思い通りにはいかんね。

続きを読む "Appleの新製品が楽しみでたまらない" »

2010.01.20

仕事と相場と

 さて前回のこれ

 6人でミーティングをする。どの2人を取っても、初対面か会ったことがあるかのいずれかである。このとき、「互いに初対面の3人組」か「互いに会ったことのある3人組」のどちらかは存在することを証明せよ


 の解答から。

 複数の解法がありそうだが、僕の思いついたのは以下。

AB2人が初対面であるとき(AB), 会ったことがあるとき[AB]と表記する。3人以上でも同様に(ABC)はABC3人が互いに初対面であることを意味するとする。  6人のうちの1人をXさんとし、残り5人をXさんと初対面かどうかで2グループに分ける。5人を2つに分けるから、どちらかは3人以上のグループである。このグループ内の3人をABCとすると、これがXと初対面のグループであるなら、(XA),(XB),(XC)である。 (AB)(BC)(CA)のうち一つでも成立するものがあれば、それを例えば(AB)とすると(XAB)が成立して題意をみたす。(AB)(BC)(CA)がすべて成立しないなら、[ABC]となってやはり題意をみたす。

上記のグループがXと初対面でないなら、その後の証明の()と[]を入れ替えるだけで同様である。

 まあ思いつくのは10秒でも、文章にするのはちょっと大変だね。

 ところで、最近の発見。
 いまの僕の環境だと、手元に余裕資金があるとき、主に道は2つある。

(A) 相場でゴリゴリ運用。過去の実績からいくと、年20~30%の利回りが狙える。
(B) 人を雇ってこなせる仕事量を増やし、売上増を狙う。

 正直にいうと、ちょっと前まではプラン(B)ではかけたコスト以上に回収できる自信がまったくなかったので、必然的にプラン(A)に傾いていた。ところが最近はそれなりに実績もできてきたので、プラン(B)の期待値のほうが明らかに高くなってきたのが実感だ。何か世界の見え方が変わってきた気がする。

 もちろん、(A)には相場を監視するコスト、(B)にはいろいろ指示を与えるのにかかる手間のコストがあるし、それぞれ失敗のリスクもあるので一概には言えないが、なんとなくしばらくは相場をいじるのはお遊び程度にして本業に集中すべき、と神から言われているような気がする。

 とは言っても、いつかは日本の財政破綻をめぐる大相場がやってくるはずなので、そのときはフルパワーでFXの円売りや国債の空売りをやると思いますけどね。これはマジです。

2010.01.15

問題公開のあとの反応

 問題を公開のあと、トラックバックやはてブでいろいろ回答や感想を見ました。
 ちゃんとしたコードが書ける人が何人もいることがわかり(まあそういう人がレスポンスを出しているので当たり前か)、一安心です。本当に世間のレベルがあの求人サイトの応募者のレベルだったら、マジで日本のソフトウェア産業は滅びると思っていたからな...

 コメントの中で特に気になったものいくつかについて書いてみます。

●「これは知識問題だ」という指摘
 過去に似たことをやっていれば有利、というのは確かにそうです。
 ただ、そういう予備知識がなくても普通に考えて実装するのに充分な時間として3時間という設定でした。というか、僕も今回の反応を見るまでA*というアルゴリズムは知らなかったよ!
 また、解答は単に正解が出力できるかではなく、「コードの質」も見てます。僕もこの世界は長いので、ある程度ボリュームのあるコードを見ればその人の実力はだいたいわかる。柔道の達人は帯の締め方を見るだけで相手の実力がわかる、というのと似たようなもの。

 なるべく事前知識の有無で結果が変わらないような出題にしたいとは最初から思ってはいたけれども、そうすると本当に無味乾燥なプログラムを書く問題になってしまって面白くないのであきらめました。
 本当はこういう感じで複数題やらせればいいのかもしれないけど、それは手間がかかりすぎるしで。

●「業務には必要ない」「これでプログラマの実力が測れるのか?」という指摘
 もちろんこれと同じアルゴリズムが仕事で必要になるとは思ってませんが、似たような思考力を要することはたくさんある。少なくとも僕の仕事では毎日そうです。
 あとこれは書き忘れていた気がするが、この実技試験はあくまで1次試験であって、これをクリアした人は論述試験と面接を経てはじめて採用です。だからコーディングだけで採用を決めているわけではないです。
 この問題ができたから優秀な人材とは限らないけれど、できない人は"ほぼ確実に"優秀ではない、のではないかと。

 大学入試の問題でもそうだけど、確かに受験勉強はくだらない知識がいろいろ必要にな上に、それは人間の価値とは大して結びつかない。でも、あの程度のことも満足にできないようでは、社会に出てから直面するもっと難しい問題には到底たちうちできないでしょう。
 だから、真の実力を測る問題ではないからといって、その問題に価値がないというわけではないのです。


 さて調子に乗って、口頭試験で使う用の問題の1つを公開します。分野としては数学だけど、こういう論理的思考が得意な人はデバッグ能力も高いと期待できるのではないかと思います。

 6人でミーティングをする。どの2人を取っても、初対面か会ったことがあるかのいずれかである。このとき、「互いに初対面の3人組」か「互いに会ったことのある3人組」のどちらかは存在することを証明せよ

 ちなみに元ネタは最近読んだ本です。
 気がつけば10秒でわかります。

2010.01.11

人材獲得作戦・4 試験問題ほか

 さて試験問題です。
 内容は、壁とスペースで構成された迷路が与えられたとき、スタート地点からゴール地点に至る最短経路を求めよ、というものです。
 たとえば、S:スタート G:ゴール *:壁 $:解答の経路 としたとき、

**************************
*S* *                    *
* * *  *  *************  *
* *   *    ************  *
*    *                   *
************** ***********
*                        *
** ***********************
*      *              G  *
*  *      *********** *  *
*    *        ******* *  *
*       *                *
**************************

という入力に対し、

**************************
*S* * $$$                *
*$* *$$*$ *************  *
*$* $$* $$$************  *
*$$$$*    $$$$$          *
**************$***********
* $$$$$$$$$$$$$          *
**$***********************
* $$$$$*$$$$$$$$$$$$$$G  *
*  *  $$$ *********** *  *
*    *        ******* *  *
*       *                *
**************************

 という出力が来ればOK、というわけです。(ブラウザだと見づらいかもしれないのでテキストエディタ等にコピーすれば見やすくなります)

 もうちょっと細かい条件としては、
●入出力はテキストデータを用いる
●一度に動けるのは上下左右のみ。斜めは不可
●最短経路が複数あるときはそのうちの1つが出力されていればOK
●入力データのバリデーション(長方形になっているか、スタート・ゴールが1つずつあるかどうか、等)は不要
●制限時間は3時間
●プログラム言語・OSは自由
 です。

 結局受験者は42名いましたが、出来の分布をおおまかに集計すると、

判定不能無連絡で何も提出しない11名
Lv0ギブアップの連絡が来た3名
Lv1入力を読んでメモリ上の構造に落とすまでできた7名
Lv2最短性のチェックはせず、とにかく1本の到達経路を求めることまではできた13名
Lv3不完全な最短性のチェックまでできた6名
Lv4最短性のチェックまで正しくできた2名

 でした。
 なお、可能な全経路を列挙した上で最短を求める、というアルゴリズムは、マップのほとんどがスペースである場合に現実的な時間で終わらなくなってしまうのでLv3扱いです。
 僕が自分でやって25分(受験者の立場だったらもうちょっとかかるだろうけど)というところで考えて、3時間あればLv2以下の人がいるなんて考えられないと思っていたのだけれどもまるで違いますね。

 とくに理解できないのはLv0,1の人たちが開発現場でどんな仕事をしてるのかだな。ぶっちゃけ、3時間かけてこれということはコードを書く能力は0でしょ? なのに経歴書にはいろいろなプロジェクトにプログラマとして関わった経験があるようだし、こんな人でも何とか使わないといけない状況に置かれた彼らの上司がかわいそうでならない。

 ちなみに、この問題のネタを昔提供してくれた後輩とその後やりとりをして、彼とその仲間2名もチャレンジしてくれました。
 その結果は3人とも1時間前後でLv4の解答を出してくれたので、やはり結論は「ちゃんとした人材は自分でしっかり動いているので、一般の転職市場は相対的にレベルが低い」でしょう。

 でもたくさんの人にリーチできるのはやはり価値があることで、Lv4の人のうち1人と来月から一緒に仕事することになりました!

« 2009年12月 | トップページ | 2010年2月 »