私はこうやって(12年前) Google に入った

書け、という天の声が聞こえたので書いてます。

学生時代

私は修士まで物理学を専攻していて、情報系の勉強は特にしていませんでした。ただ、実験結果をまとめるために awk を使ったり(256倍本とか知っています?)、シミュレーションをするために Fortran 書いたり(関数名の長さに制限ありました)はしていました。

ただ、こういった経験より後々に役に立ったのは、何十枚とあるフロッピーディスクからPCにLinuxをインストールしてメールサーバ立てたりする仕事でした。(当時は研究室ごとに勝手にサーバを立てて自由にアドレス作ることができたので、自分の好きなアドレス作るために頑張っていました。)

前職

Google に入社する前は NTT の研究所に勤務していました。そのころの仕事は機械学習を使った自然言語処理の研究業務。論文を書くのが仕事とまではいいませんが、業績、といえば、まずは論文、という環境でした。

プログラミングの経験

プログラムは自分の研究をすすめるために必要なものを書くぐらいで、実際のサービスに使われるようなクオリティのものを書いたことはありませんでした。ユニットテストとかコードレビューとかグーグル入るまで存在すら知りませんでした。

当時は Support Vector Machines (みなさん、覚えてますか?)が大はやりだったのですが、ある程度大きなデータ(といっても今から見れば小さいですが)で学習させようとすると遅くてしょうがないという問題があり、ここは一つ自分でゼロから書いてみるか、と C++ を勉強しながら書いたのが、唯一まとまった規模の「開発」経験です。

とはいえ、少しでも速くするためにいろいろ工夫しているうちに、自然とデータ構造やアルゴリズムのことは勉強せざるを得ませんでした。あとは当時は C++ のコンパイラが今ほど賢くなかったので、手作業による細かいチューニングが効果がありました。そういう繰り返しが楽しくて知らぬ間に結構低レベルの話(キャッシュを使い切るみたいな)も自然と学んだり、gcc の最適化オプションのバグを踏んだり(なぜか -O2 するとループが止まらないとか)、おかげで GDB を使えるようになったりしました。

あと、わかりやすいコードを書くこと、ドキュメンテーションを残すことの重要性を痛感したのもこのときです。一週間前に自分で書いたコードが読めなくて、結局やり直すことが何度あったことか。人間痛い目に見ると一番学習します。

総じて言うと、体系だったプログラミングの勉強はしていませんでしたし、大規模なチーム開発の経験もなかったですが、ちゃんとやらないと自分が一番苦しむ環境で悪戦苦闘したのは良い経験だっと思います。

英語

英語は旧採点法のTOEICで900点。読む方はまぁ不自由なかったですが、書く方は結構きつかった。ネイティブの人の添削がなしで難しい国際会議通すのにギリギリぐらいの力だったと思います。話す方は国際会議でなんとかサバイバルできる程度。ただ、質疑応答は心臓バクバクで何回か聞き返さないと厳しいレベル。

(ちなみに Google 入社直後から3ヶ月弱アメリカの本社に修行に出されていたのですが、最初のミーティングで他の人が話していることが全くわからず「やばい、これは首になる」と本気で焦りました。)

学生の頃は、英語はあまり得意でなくて、あやうく大学で単位を落として留年しそうになったりしました。が、なぜか昔から人の真似をして音読するのは得意で、話すときの英語のリズム的なものはそれなりにつかめていたと思います。ちなみに発音は(今でも)それでも良くなくて、l と r の区別はいまだに適当です。

面接の準備

いろんな縁があって、面接を受けることになったときに、いちおうアルゴリズムとデータ構造の教科書にはザッと目を通しておきました。とはいえ、当時は仕事もしていて忙しかったですし、赤黒木とか覚えてられない(し、どうせ覚えても面接でパッと出てくると思えない)ので、まぁそれは出たらその場で適当に考えればいいや、という感じで望みました。

あと、当時「グーグルの面接問題」みたいな本が出てたので買って読んでみましたが、「バスの中にゴルフボールは何個入る?」みたいな本番では全く聞かれない質問ばかりで時間を無駄にしました。

それ以外は何か特別な準備をしたという覚えはなく、結局前職でコツコツやっていたのがよい練習になっていたのだな、という気がします。あと、結果的に効率的な勉強ができる環境になかったのも良かったと思います。技術習得に何が必要か自分で見極める練習になっていたので。

面接中

今は変わりましたが、私が受けた頃は東京で4人、マウンテンビューで4人、面接がありました。

東京の3人目のコーディングの質問を受けたときに、ホワイトボードにコード(と言ってもせいぜい20行ぐらい)を書いたら「そのコードは3箇所バグがある」と言われ、正直あぁこれで終わったな、と思って、逆にリラックスできたのを覚えています。やはり Google の面接はタフなので、緊張してしまうとドンドン悪い方に行ってしまいます。緊張するなと言われて緊張せずにすんだら楽なわけですが、やはりリラックスして面接を受けるのは重要だと思います。

あと、うまく答えられなくてもめげないことはとても重要です。マウンテンビューでの面接の時は時差ボケと緊張でロクに朝食も食べれずボロボロの状態でしたが、なんとか歯を食いしばってサバイバルしました。(二人目の面接官は「頑張れ!あと少しでランチだ!Google のランチは美味しいよ!」と応援してくれました。)

面接後

いい記念受験ができたなぁ、という爽快な気分でした。英語もコーディングもボロボロでしたが、面白い問題にすごく頭を使って楽しかったなぁ、と。面接官もいい人が多かったし。(一番笑ったのは、確か計7人目の人が「え、君、こんなに面接受けてるの?もう聞くことないよ。。。そうだなぁ、君が面接官だったら何聞く?」と聞いてきたときです。)

面接する立場になったいまは、面接される人達に同じような気分で帰ってもらいたいなと思っています。

世の中良い会社、面白い会社は沢山ありますが、Google はその中でもいまだにユニークな存在だと思います。面接にもそのユニークさは滲み出ていると思います。少しでも興味があったら是非応募してみてください。損はさせません!

 

謝辞

初出 GDB を GDD と間違えていました。@strvert さん、ご指摘ありがとうございました!

私はこうやって(12年前) Google に入った” への2件のフィードバック

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト /  変更 )

Google フォト

Google アカウントを使ってコメントしています。 ログアウト /  変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト /  変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト /  変更 )

%s と連携中