全盛期のJeff Dean伝説

  • 490
    いいね
  • 5
    コメント
この記事は最終更新日から1年以上が経過しています。

Jeff Deanとは

  • GoogleのSenior Fellow. Googleの基盤となる分散システムのほぼ全てに中心的に関わり、圧倒的なエンジニアリング能力を発揮したらしい。あまりにも尊敬されているため、IT業界において全盛期のイチロー伝説のような破天荒なホラ話のネタにされている人。
  • 日本語での紹介がなさそうだったので意訳してみました。
  • 元ネタはこちら。多すぎるのでGoogle社員じゃない人には面白みがわかりにくそうなもの、面白みが被っていると私が判断したものなどは省いてあります。

全盛期のJeff Dean

NP問題

  • Jeff DeanがGoogleの採用面接を受けたときに、もしP=NPが成り立つとしたらどうなるかを問われて"P=0かN=1ですね"と答えた。試験官が笑い終わりさえしないうちに彼はGoogleのpublic keyを突き止め、private keyをホワイトボードに書き終わった。
  • Jeff DeanはすべてのNP問題をホワイトボードで多項式時間で解くことでP=NPであることを証明した。
  • Jeff DeanにとってはNPは"No Problem"をあらわす。

プログラミング

  • Jeff Deanのキーボードには2つしかキーがない。1と0だ。
  • Jeff Deanのコードを書く速度は2000年にUSB2.0が出たときに40倍になった1
  • Jeff Deanはコミットする前に自分のコードをコンパイルして動作させるが、それはコンパイラとCPUのバグをチェックするためである。
  • Jeff Deanは一度だけO(n^2)のアルゴリズムを書いたことがある。巡回セールスマン問題のために。
  • コンパイラはJeff Deanに警告を出さない。Jeff Deanがコンパイラに警告を出すのだ。
  • Jeff Deanは抽象クラスをインスタンス化できる。
  • Jeff DeanのIDEはコードの分析(analysis)をしない。ただ賞賛(appreciate)するだけである。
  • Jeff Deanはhtmlを正規表現でパースできる。。。正確に。
  • Jeff Deanがプロファイラを立ち上げると、ループたちは恐怖のあまり勝手にアンロール2する。
  • Jeff Deanが一度リストを順序付け(order)ると、以後リストはずっと彼に従う。
  • もしあなたのプログラムがSIGJEFFによって終了させられたら、二度と動くことはないだろう。
  • コンパイルエラーはJeff Deanを警告として扱う。
  • Jeff Deanは"cat > /dev/mem"3してからプログラムを書き始める。
  • Jeff Deanは邪悪なコンストラクタ4を恐れない。コンストラクタが彼を恐れるのだ。
  • Jeff Deanはバグを出さない。彼はあなたの理解できない仕様を追加しただけなのだ。
  • あなたのプログラムが未定義な動作に陥ると、segfaultが発生し、データは壊れてしまうだろう。一方Jeff Deanのプログラムが未定義な動作に陥ると、ユニコーンが虹の橋を渡ってやってきてみんなに無料のアイスクリームを配るだろう。
  • Jeff Deanのコードはとても速いので、終了させるためにHALTコードを3回も呼び出す必要がある。
  • Jeff DeanのバブルソートプログラムはO(1)で動作する。
  • Jeff Deanはあるときbitをあまりにもshiftしすぎたため、最後には隣のマシンに移動してしまった。
  • gccの最適化オプション
gcc -O1: コンパイラは、 コードのサイズと実行時間を削減するよう試みます。 
gcc -O2: さらに最適化を行います。
gcc -O3: さらに一層、 最適化を行います。
gcc -O4: 完全に書きなおしてもらうために、あなたのコードをJeff Deanに送信します。

逸話

  • Emacsが、いちばん好きなエディターはJeff Dean。
  • あるときJeff Deanが蜘蛛に噛まれたことがあった。その蜘蛛は超常的な力とCを読む能力を手に入れた。
  • Jeff Deanは203番目のフィボナッチ数を問われて1秒以内に答えてしまったので、チューリングテストに失敗したことがある。
  • Jeff Deanはπの最初の2万桁を5時間で暗唱できる。それを暗記しているわけではない:彼はそれを高々O(log n)の容量を使って再計算しているのだ。
  • Jeff Deanはたった1つしかパスワードを覚えていない。彼はそれをサイト名と結合してsha-256でハッシュを計算した結果を打ち込んでいるのだ。
  • Jeff Deanは眠るのではない。宇宙に対してSIGSUSPENDを送るのだ。
  • Jeff Deanの腕時計は1970/1/1 00:00:00からの経過秒数を表示するが、彼は決して遅刻しない。
  • Jeff Deanはスピーカーやヘッドホンを必要としない。彼はcat *.mp3して、画面を眺める。そうすると彼の脳はそれをバックグラウンドでデコードして再生する。
  • あるときドナルドクヌースがTAOCP5をJeff Deanに送ったことがあった。Jeff Deanはそれにサインをして送り返した。
  • Jeff Deanがインターネット通信をするとき、遅延は最適化される。ルーターはもし彼のIPパケットを破棄したら、彼がインターネットを破棄することを知っているからだ。

業績

  • Jeff Deanの履歴書には、彼がやってないことだけが書いてある。その方が短いから。
  • やったことがあまりにも多いため、Jeff Deanの履歴書には目次が付いている。
  • Jeff DeanがBig Tableを作ったのは、彼の履歴書の項目が多すぎて記録しておく場所がなかったから。
  • Jeff DeanはファンからのメールをソートするためにMapReduceを発明した。
  • 2002年の初頭、Googleの検索サーバーが落ちたことがあった。Jeff Deanは2時間にわたってユーザーのQueryに手動で答えたが、検索結果の質は5ポイント改善されたと評価された。
  • 定数オーダーのアルゴリズムでは飽き足らず、Jeff Deanは世界で始めてO(1/n)のアルゴリズムを開発した。
  • あなたは自分の脳の10%しか使うことができない。残りの90%はJeff DeanがMapReduce jobの1つを動かすのに使っているから。
  • 神が"光あれ"とおっしゃたとき、Jeff Deanはコードレビューするためにそこにいた。
  • ある日Graham Bellがついに電話を発明すると、そこにはJeff Deanから不在着信が来ていた。
  • Jeff Deanは自分の1週間分のコードスニペットを格納するためにBig Tableを発明した。
  • Jeff Deanはある日、一回のprintfの呼び出しだけからなるウェブサーバーを実装した。他のエンジニアが数千行に及ぶ解説のコメントを書いたが、それでも正確にはどのように動いているかはわからなかった。今日GWSと呼ばれているプログラムである6
  • Jeff Deanは自分がπの桁の中に隠したジョークを数学者が発見するのを未だに待ち続けているらしい。
  • Google App Engineの全体はJeff Deanの持っているNexus Sでホストされている。
  • Jeff Deanは1969/12/31 23:48に生まれた。そして最初の計時システムを実装するのに12分を要した7
  • Jeff Deanは20%プロジェクトとしてAIを開発したことがある。それによってUrs Hoelzle8が作られた。
  • ウェブ検索はJeff Deanの本当のアプリのための巨大なユニットテストプログラムである。
  • Jeff Deanがうっかり検索インデクスを圧縮しすぎてブラックホールが発生したため、Googleはデータセンターを移動させなければならなかったことがある。
  • 真空中の光の速さはかつて時速35マイル(約56km)だったが、Jeff Deanが週末を使って物理法則を最適化した結果現在のスピードになった。

  1. USB1.1 = 12MB/s, USB2.0 = 480MB/s 

  2. アンロール = ループを同じ回数の内部ブロックの実行に展開する最適化手法。 

  3. 危ないので試さないでね! 

  4. コメントで指摘のあったソースコードを見ると、具体的に、C++の暗黙のうちに生成されるコピーコンストラクタのことをgoogle社内ではそう呼んでいる模様。 

  5. the art of computer programming 

  6. GWS = googleの検索サービスのフロントエンドウェブサーバー 

  7. time_tのエポック = 1970/01/01 00:00:00  

  8. Urs Hoelzle = Googleのvice president