未経験でもGoogleからオファーがもらえたポイント

google-engineer

先日、こんな記事がバズって各所で話題になってましたよね。ポーカー界隈でもとても有名な方で、ちらっと伺ったことがある程度ですが、「ほあ〜すごいな〜」という感想しか湧いてきませんでした。笑

 

 

しかし、この記事を読んで感じたこと、そして第三者から聞いた話と合致する重要なポイントがあったので、今回それをお話しします!いまプログラミング学習中の方、未経験からエンジニアになろう!という段階の方は、「なんだただの天才か」と思わずに、素直に受け止めたほうが成長すると思いました。

 

はじめにLillianさんの記事をもとに経歴をカンタンにまとめさせていただきます。もし誤りがあればご指摘くださいmm

 

  1. 幼いころよりエンジニアになることが夢
  2. 中高生のころにCOBOLでプログラムを書く
  3. 大学は東大理三
  4. 卒業後は医師として働く
  5. ポーカーで活躍する傍ら、Pythonに出会う
  6. 競技プログラミングに興味を持つ
  7. エンジニアを志し、転職活動
  8. Googleに入社

 

ご覧のとおり、一般人では想像つかないような経歴なので、話すこともはばかられるのですが、、ただこれを「天才のお話」として片付けるのは勿体無いと思いました。私たちでも十分に学べること、参考にできることがありました。

 

結論、大事なポイント

google-engineer

「経験者・未経験問わず企業から求められるエンジニアの共通点」があると思っていて、これを突き詰めたひとが結果として転職市場でも強いと感じました。

 

  • 好奇心と、行動力
  • “圧倒的な”吸収力、自走力があること
  • 低レイヤーの技術、アルゴリズムに強いこと

 

Lillianさんは元々プログラミングに触れていたという経験や、地頭の良さばかりが評価されていますが、その根源には上記のような資質が影響しているように思います。いまからそのような資質を身につけることは決して簡単ではありませんが、それと同等程度の行動を起こすことはできるのでないでしょうか。

 

好奇心が揺さぶられることはなに?

interview-image

プログラミング学習が楽しい!という期間がずっと続き、モチベーション高くいられる間に様々なことを吸収できることが望ましいです。しかし、一般的に独学でプログラミング学習を続けることはなかなか難しいのではないでしょうか?エンジニアになれば日々の仕事のなかで学ぶことが出来て、独学も捗るかもしれません。

 

プログラミング学習に限らず、勉強をモチベーション高く継続させるポイントは3つあると思います。これは実際に弊社の東大卒の先輩エンジニアからもお話いただいたこととも被ることがあったので、信用できると思います。

 

  • 第一に楽しむこと、そして自ら好奇心を掻き立てること
  • 見える化すること、達成感を覚えること
  • 人に評価させること、たとえ非難されてもくじけないこと

 

最初の「好奇心を掻き立てること」はプログラミング学習でも大事なことです。「フレームワークの中でどんなロジックが走っているんだろう?」「CPUのメモリってどういう仕組みなんだろう?」と、自分が学んだことの裏側や関連することをどんどん学んでいくこと。そうすると、受け身な学習姿勢から、積極的に自分から情報を取りに行くようになりますよね。プログラミングスクールで覚えが悪い人がいましたが、その人は自分で調べたり悩んだりすることを拒んで、人に教えてもらってばかりいました。「好奇心」を自分で掻き立てることで、モチベーション高く情報を取りにいくことができます。

 

いまの仕事、学習内容で好奇心を掻き立てられることはありますか?もしあればそれをより拡大していけるといいですね!なければ、それを見つけるよう努力してみましょう。どんなに小さなことでも構わないと思います。私は春頃よりLillianさんと同じくAtCoderで競プロに好奇心を揺さぶられ続けては挫けてばかりいますw

 

好奇心をかきたてる努力をする

普段の仕事や、かんたんな勉強においてもその裏側を調べるようにすると、好奇心をかきたてることが当たり前になってきます。義務的に調べようとするのではなく、「これってなんだっけ?」という疑問から始める。そうすると、自然とそれを調べるようになります。

 

例えば簡単な例でいえば、

Rubyの組み込みメソッドってなに?どこに定義されてるの?

これをすらっと答えられるならOKですが、Rubyを勉強中の方や、それなりに使い慣れている方のなかにもすこし迷うことがあるのではないでしょうか。

 

もし答えることができなければ、少し調べてみましょう!定義元を調べる方法から調べる必要があるかもしれません。

 

吸収して、行動にうつすこと

teaching-image

Lillianさんは医師の仕事が今度10,20年後も同じようなことばかりであることに不安を覚えて、エンジニア転職を志されました。その後にやったことは、プログラミングスクールに入ったり、プログラミング勉強ではなく、Linkedinなどを通じた転職活動でした。初めはカジュアル面談も無視されていた、とのことですが、そうした経験をはじめにしたことが大きな一歩だったように思います。

 

しっかり準備をしてからエンジニア転職しよう!

と思う人が多いのですよね。かく言う私もそうでした。笑

 

でも、実際に企業からどんな人、スキルが求められているのか?ということは分からないものです。未経験エンジニア転職の場合なおさらです。そこで、ある程度コードをかける状態になったら、いきなり企業に会いに行くことで自分を客観的に評価してもらる機会を得たほうがいいです。

 

LillianさんはそこでGoogleからメールをもらったことがキッカケで次に進むことができました。もちろんそんなこと普通の未経験エンジニアはそうそうある話ではないのですが、Twitter経由でエンジニア募集中の企業から面談オファーをもらうくらいならよくある話です。それがダメでも、なぜダメだったのか?何を伸ばせばいいのか?を知ることができます。それを改善すれば、ゴールまで最短距離で到達することができます。

 

2社目を探すエンジニアの場合

第二新卒くらいの年齢のエンジニアの場合、2社目をどうやって探すか、転職活動をするかということは難しい問題です。いまの自分のスキルが転職市場においてどれくらい評価されるのか?ということはやはり一度面接、面談をいくつか受けないと分からないものです。

 

最初に入った会社で得たスキルが実は外では評価されない…という話はよくあることです。SIerからコーダーへの転職が難しいという話も同じことだと思います。

 

とにかく外に出よう!言えることはそれだけです。

 

どんな技術でも共通することはなにか?

meeting-image

エンジニアという仕事柄、技術の変遷についていく必要があります。しかし、低レイヤーの知識や、アルゴリズムに関する知識は比較的長い間変わらなず評価される傾向にあります。

 

特に新しい技術を開発するような会社、事業の場合はそういった知識は「前提」として人を選びます。もちろん一般的な開発現場においても同様で、それらの知識がある/ないでは書くコード、技術選定力にも大きな差が生まれるのは事実です。

 

具体的にはLilianさんも勉強されていましたが、アルゴリズムに関する勉強だったり、システム設計の分野ですね。このあたりはいくら勉強しても足りないくらいですが、基礎知識として勉強しておくといいかもしれません。コーディングテストがあるような会社の場合、このあたりが分かっているかどうかを見ることが多いです。

 

どうやって勉強すればいいか?

最低一つの言語をかけるようなレベルであれば、競技プログラミングだったり、本を読んだり、オンライン教材を学習するのがいいかと思います。Lilianさんが読まれていた本や教材をまとめておきます。

 

  • 『キタミ式イラストIT塾 ITパスポート』
  • 世界で闘うプログラミング力を鍛える本』
  • 数学ガール/乱択アルゴリズム』
  • アルゴリズム図鑑 絵で見てわかる26のアルゴリズム』
  • GoogleのML Study Jams
  • DataCamp:オンライン教材
  • picoCTF:セキュリティコンテスト
  • 『キタミ式イラストIT塾 基本情報技術者』
  • 『Pythonチュートリアル 第3版』
  • 『世界で闘うプログラミング力を鍛える本』
  • 『最強最速アルゴリズマー養成講座』
  • 『プログラミングコンテスト攻略のためのアルゴリズムとデータ構造』
  • 『LeetCode Learn』

 

共通して、アルゴリズム、Pythonあたりを集中して勉強されていたのが分かると思います。もちろんこれらに興味があったから学習されていたのですが、このあたりが「強いエンジニア」の基盤になることは間違いありません。

 

数学ができないんだけど…

これは私も同じなので気持ちは分かります。笑

しかし、実際にいま数ヶ月ほど競技プログラミングをやってみて、数学の知識が必要になることは全体の2,3割ほどです。もちろんもっと上の人はそうではないのでしょうが。数学の公式を使って解きなさい、みたいな問題は全くないので、アルゴリズムを知っておけばなんとかなります。

 

なので、結論このあたりの学習において数学を知らなくても問題はありません!

 

まとめ

Lillianさんは元々努力されていたこと、経歴、地頭がよかったことなどが評価されて未経験からでもGoogleに入社されていましたが、そこから学べることはたくさんありました。

 

とにかく今日からできることは自分が好奇心を掻き立てられることを探して、深堀して勉強していくことだと思います。さらにいえば、競技プログラミングはいま参入者が増えている時期なので、始めるなら早いほうがいいです!目に見えてアルゴリズムの学習が進みます。私はAtCoderというサイトを使っていますが、簡単な本を一冊読んでみるだけでもいいかもしれません。

 

 

人気記事【2019年最新版】Twitterで評価の高いスクール5選

 

人気記事【未経験あり】いまWEBエンジニアに人気転職サイト4選