「正規表現ぐらい覚えてないの?」と言い放った天才

酒井潤氏:3人目は韓国の方で、その方もやはり異常にプログラムができました。

昔、「OpenFlow」というネットワーク関係のルーティングを処理するプロジェクトがあって、その時に私も彼と一緒にPythonを使ってネットワークのルーティング系統の部分のプログラムを書いていました。

ネットワーク関係のプログラムを書く時は、RFCやIEEEとか、プロトコルにしろネットワークのやり方にしろ、世界で決められた標準がドキュメントのかたちになってWebに上がっているんですね。

知らない方は、RFCドキュメントと調べてみてもらえればと思います。そういったドキュメントにはプログラムのサンプルはなく、「ネットワークプログラムは、こういうふうに動作するべきだ」という文章がバッと書いてあるだけなんですよ。

彼は、そのRFCのドキュメントを急に読み出したんですね。「一緒に作ろうよ」と、私もペアプログラミングみたいなことを一緒にやってもらったのですが、彼は、そのドキュメントをバッと上から下まで一気に1分ぐらいかけて読んで、急にそのコードをPythonで実装しだしたんですよ。RFCを一気に書き上げたので、それを見た時にはかなりびっくりしました。

その頃は、ネットワークのIPアドレスやIPv6といった長い文字列を処理する正規表現を書かなければいけなかったのですが、彼は正規表現のやり方がわかっているようで、どんどんどんどんその正規表現を書いていくんですよね。

みなさんは正規表現のサンプルを見たら、ちょっとこんがらがると思います。多くの人は、たぶんサンプルやブログを見たり、Googleで検索したりしながら正規表現を書くと思います。

彼はRFCのドキュメントに従って、その正規表現を一気に書き上げたので「正規表現を覚えているの?」と聞いたところ、「正規表現ぐらい覚えてないの?」と言われてしまいました。その方とのレベルの差を痛感したという経験があります。

頭の中でプログラムの中身をすべて構成していた

その方は、プログラムの書き方もちょっと異常なんですよね。みなさんはプログラムをどう書きますか? 例えばmain.pyを作って、クラス設計でどこにクラスを作って、ファンクションでどういうところに置こうかなと考えて、ちょこちょこ書いていくと思います。

コードを書いたらある程度走らせてみて、エラーが出ないかどうかを常にチェックして書いていって、ある程度プログラムができたら、とりあえず最後にコメントをここに書いておこうかなという感じで書いていくと思うんですよ。

でもその方は、プログラムのコードをファイルのトップからいきなり書き出すんですよね。例えばインポートするライブラリなんかも上から書いていくんですよ。

普通の人であれば、あるファンクションを書いて「こういったライブラリが必要だった」と、後からインポートするライブラリを書きますよね。でもその方は頭の中にすべて完成品のプログラムのコードが入っているみたいで、上からインポートするライブラリを書いていくんですよ。

クラスを書いてファンクションを書いたら、いきなりコメントを書き出すんですよ。5行、6行のコメントをいきなり書き出して、ファンクションを書いていくんですよね。そのコードを書いている時の指はずっと止まらず、どんどんどんどんコードを書いていきます。途中でプログラムをテストで走らせることをしないんですよ。

一気にガーッと、30分ぐらいコードを書き続けて、いきなり「できた」と言うんです。こっちも「そんなの動くの?」と、やはり不思議なんですが、パンッとPythonプログラムを動かしたら、そのまま走って動いちゃうんですよね。なので、ちょっと脳の構造が違うと思うんですよ。

昔から、一般的なコミュニケーションは取れないけれど、数学だけとにかくできたり、3.14なんとかという桁数を最後までバーッと無限に読み上げられる人がいたり、特別な脳を持っているんじゃないかとドキュメンタリーになっていると思うのですが、それに近い感じですね。

彼は頭の中でプログラムの中身を全部構成して、トップから書き上げちゃうので、私はそのレベルに行くにはちょっと厳しいと思うぐらいの差を感じました。

会社をサボり、分かりやすい嘘をつく…性格は完全に小学生

その方もやはり話すスピードが速く、かなり論理的でした。コミュニケーションもかなりユニークで、完全に小学生のような性格なんですよ。その方は基本的には会社に来るんですが、会社から与えられたプロジェクトを一切やらないんですよね。

例えば与えられたプロジェクトが、2ヶ月以内に終わらせてくださいというものだったら、だいたい1ヶ月半は一切仕事をしないで、ブログや「Facebook」でずっと遊んでいるんですよ。最後の1週間とか2週間で、一気にプログラムを終わらせるということをずっとやっている感じでした。

あとは、よく会社をサボるんですよね。腹痛だからとか、家庭内に不幸があったからとか、休みをバンバン取るのですが、その理由を聞いても明らかに嘘で、小学生みたいな嘘を平気でつくのがけっこうおもしろかったです。例えば頭痛で会社を休んでいたはずの日に、サンフランシスコの観光地で友だちと一緒にピースしている写真をFacebookにポストしていて、おもしろい感じでした。

ほかにも、その彼が2ヶ月ぐらいのプロジェクトのタスクを受けたのですが、プロジェクトマネージャーも、彼はなかなかプログラムを始めないと知っていたので、ちょこちょこ聞いていたんですよね。でも彼は、やはり先延ばしというか、「もうちょっとでできるから待っていて、待っていて」みたいな感じで言っていました。

結局そのプロジェクトの期限が来てしまって、プロジェクトマネージャーもけっこう焦って、「とりあえず今できている範囲でもいいからプログラムのソースコードを渡してくれ」とその彼に言ったんですよ。

そうしたら彼は「わかった、わかった。今USBにソースコードを入れて渡すから待っていて」みたいなことを言ったらしいんですよね。今であれば普通「GitHub」とかに上げるので、USBで渡すのは変なのですが、彼はUSBで渡すと言ったんですよ。

彼は、自分のデスクに行って何かガーッとやり始めて、USBにファイルを入れて、プロジェクトマネージャーに渡して、家に帰っちゃったんですよね。後から、プロジェクトマネージャーがUSBの中身を見たら、ファイルが壊れていたというか、そういったものが入っていて、ぜんぜん読み込めなかったんですよ。

プロジェクトマネージャーが、その後で「ファイルが読み込めなかったんだけど、今あるソースコードを渡してよ」と言ったら、その彼は、「ええ、そんな。USBにソースコードさっき入れたから、自分のソースコード消しちゃったよ」と小学生の嘘のようなことを平気で言うんですよね。

USBで壊れたファイルをサクサクっと作れるぐらいのレベルであれば、そのプロジェクトなんかすぐに終わらせられるんですが、彼は本当に小学生みたいな感じで、誰でも嘘だとわかることを平気でやっちゃう性格だったので、見ていてかなりユニークでおもしろかったです。

天才プログラマーは社会の中で影を潜めているかもしれない

この3人はかなりレベルが高く、性格的にはかなりユニークで、おもしろかったです。

なので、日本にもそういった天才プログラマーの人はいるかもしれませんが、ルールがガチガチの会社に適合するのは難しいので、もしかしたらそういった天才プログラマーの人は日本の普通の会社では働けずに、ちょっと影を潜めているのかもしれませんね。

でもアメリカの会社は、そういったユニークな人でもお金を生み出せる実力があれば、特別扱いもするし、かなり高い給料を支払うところもあります。日本の経営者は、プログラムのレベルで評価してあげるのもいいんじゃないでしょうか。

ということで今日は、シリコンバレーの天才プログラマー3人について、私が一緒に仕事した中での話をしました。シリコンバレーエンジニア潤でした。それではまた、バイ。