大学の学位を取得せずにGoogleにアクセスする4つの手順





大学の学位を取得せずにGoogleでエンジニアリングポジションを取得する方法

ここにあなたのための短い物語があります。



みんなと同じように、私は大学に行くつもりでした。 私の選択はカリフォルニア大学ロサンゼルス校でした。 残念ながら、学校では平均点が小さく(4段階で2.45)、そこに行くことができませんでした。 代わりに、地元の大学でコンピューターサイエンスコースに行きました。



ステップ#1:成功しながらチート



コースに参加している間、私は同時にインディアナ州グリフィスの小さな会社で働きました。 12ドル/時間で地元の中小企業向けのサイトを作成しました。 もちろん、この仕事は私が将来自分で想像したものではありませんでしたが、もっとひどいものだったかもしれません。

私は傾かないようにしようとしましたが、少し早く約束を果たしながら、余裕をもって約束しました。 彼はさまざまなプロジェクトで働いていました。 会社は私に大金をmadeけました。



その間、私は暇なときにゲームを作成しようとしましたが、それはあまりありませんでした。

そして、どういうわけか勇気を持って、私は経営陣に行き、自分のゲームを完成させてオンラインで販売を開始するために彼らの費用で3か月を求めました。 シェアウェアモデルがどのように機能し、どのような利益が得られるかについて、表とカラフルなグラフをまとめました。 私はこれらすべてについて漠然としたアイデアを持っていましたが、カラフルなグラフィックのおかげかと思われます。 2か月間の開発の後、オンラインでデモ版を立ち上げました。



ある時点で、カリフォルニアのCodeFireに支援された若いスタートアップが、同じゲームを作っているという通知を送信しました! SubSpaceのようなトップビューの3Dのみのスペースシューティング。 彼らの通知では、彼らは私のゲームを削除することを要求しました。

私が答えることができるのはただ1つです。もちろん、あなたが私を仕事に雇うなら。

そして、彼らは求人で応答しました! 私は彼らに行きました。

会社は元のゲームの権利を保持していました。 私は3週間後に出発を発表し、良い条件で別れました。



ステップ番号2:専門家と友達になります。



これはおそらくあなたができる最も重要なことの一つです。 彼らの分野でプロである誰かを見つけて、あなたのメンターにしてください。 そして、学習を止めないでください。 Double Helixで働いていたとき、私はメンターであるNathan Huntに会いました。 そして、私の基本的な質問にもかかわらず、彼は非常に忍耐強くありました。 私は別の愚かな質問に答えるために彼のオフィスに千回行ったと思います。 数年後、彼は私の1か月後にGoogleに参加します。

私のメンターはそれぞれ、私と世界に対する私のビジョンを変えました。 そして、これは彼らが私に与えたもののほんの一部です。



ステップ#3:知識のギャップを埋めます。



私は高等教育を受けていなかったため、多くの基本的なことを知りませんでした。

たとえば、物理エンジンを実装しましたが、動的プログラミング(複雑な問題をより単純なサブタスクに分割することで解決する方法)に出くわすことはありませんでした。 これらのギャップを埋めるために、私が聞いたり読んだりしたほとんどすべての最も一般的なアルゴリズムとデータ構造を実装しました。 必要な情報は豊富にありますが、何かがどのように機能するかを観察することと、この作品の本質を理解することの間には大きなギャップがあります。



時間が経つにつれて、次のことを行う必要があります。

1. C、C ++、Objective-C、Java、PHP、Python、またはこれらの言語の少なくとも1つでプロフェッショナルになる

ルビー 少なくとも1つの他の言語に堪能で、Scala、Haskell、Lispなどの言語に精通している。

2.データ構造を調べます。 それらのほとんどの実装を行います。 また、アルゴリズムの時間の複雑さも理解する必要があります(Oは、アルゴリズムの複雑さを推定する表記法です)。

3.プログラミングの問題を解決します。 これを読んで、ここから問題を解決してください

4.ポートフォリオを作成します。 (たとえば、あなたが書いたフレームワーク、さまざまなアプリケーション、小さなゲームなど)



ステップ#4:自信を得る。



インディアナ州から引っ越してから6年後、私は異なるプラットフォームで6つのゲームを作りました。 私は退屈していました、何か新しいものが必要でした。 私はGoogleに履歴書を送って、もし私が雇われたら、望みの紙が足りないので「自分は劣っていると思った」ので、本当のエンジニアになると思った。 しかし、私は答えを受け取ったことはありませんでした。実際、それは驚くことではありませんでした。



1年後、私は再び履歴書を送りました。 今回だけ、その中の「教育」セクションを完全に削除しました。 皮肉なことに、採用担当者は私に電話をかけて、Skypeの予備インタビューを手配しました。 2週間後にインタビューを延期するように依頼したところ、彼は同意しました。 今回が必要でした。 この2週間を使用して、できるだけ多くのアルゴリズムとデータ構造を頭に押し込みました。 私は1日12〜14時間プログラミングし、この間に数百のタスクを解決しました。 私は文字通り夢中になり、Googleのインタビューに対する不安が自信に変わるまで止まらなかった。



Googleでの各インタビューを覚えています。 圧倒的でした。 インタビュアーと話すのはとても面白かったです。 彼らは私の興奮を見て、私に友好的でした。



私に与えられたタスクのいくつか:



  1. 2次元の点のセットが与えられたら、地平線を計算する必要があります 。 簡単でした。 バイナリヒープと呼ばれるデータ構造を使用しました。 この問題の解決策の1つを次に示します。
  2. Microsoftペイントを設計します。

    一番おもしろい仕事でした。 インターフェースとクラス図をコンパイルすることから始めました。 私は塗りつぶしツールについて言及し、インタビュアーはそれを実装するように頼みました。 幸いなことに、私は目を閉じてこれを行う方法を知っていました。

  3. プログラミングの良いトーンについてのあなたの意見を説明してください。

    開かれた議論でした。 どのようなテスト方法が存在し、いつ使用する必要があるかについて話しました(例:ユニットテスト、統合テスト、受け入れテスト)。 単一のコードスタイルについて話しました。 などなど。 これは、 Code CompleteおよびEffective Javaにあります。



インタビューのすべてのラウンドを心から楽しみました。 準備していなかったら、すべてが完全に異なっていただろう。 インタビューの後、私はとてもいい気持ちになり、喜んでいます。 しかし、リクルーターが同意したとしても、ラリー自身が候補者を承認しなければならないと聞いた。 彼が私の無知を見るとすぐに、それがそれだと心配しました。

しかし、これは起こらず、かつて、私がサンタクレアでの夕食で寿司を食べたとき、彼らは私に電話し、仕事の申し出を熱心に受け入れました。 その日、私は絶対に学校に戻らないことを知っていました。



「勝者は最初に勝利を達成し、次に戦争に行き、敗者は最初に戦争に行き、次に勝利を求めます。」



PS残念ながら、対応するハブにトピックを配置するのに十分なカルマがまだありません。このため、あまり喜ばないでください)



All Articles