2016年7月25日月曜日

アメリカでソフトウェアエンジニアとして就職する

筆者は2011年からアメリカの某大学の博士課程に在籍しており、この度、5年間の学生生活を終え、秋からシリコンバレーの某企業でソフトウェアエンジニアとして働くことになった。最近まで就職活動をしていたので自分の備考録、兼、誰かの参考になることを願って体験記を書いておく。

【注意事項】
・コンピューターサイエンス系の分野でアメリカでPhDを取得した者としての経験です。
・アメリカ国内からアメリカ企業への就職の話です。
・下記の内容は特定の企業に関するものではなく、一般論です。

【行きたい企業のリストアップ+リサーチ】
PhDの場合、自分の分野で強い企業はだいたいわかっているので、企業のリサーチはそれほど難しくない。筆者の場合は、企業を大企業、研究機関、日系企業、スタートアップにカテゴリ分けして、エクセルで企業ごとの情報をまとめた。例えば、筆者は以下の企業を大企業にカテゴリ分けした。(eBay、Google、Qualcomm、Apple、facebook、Cisco Systems、
NVIDIA、A9、Intel、Microsoft、Uber、HP、Tesla、HERE、Amazon)

【具体的ポジションの検討】
大企業に関しては、常に一定数のポジションを募集しているが、研究機関の場合は、そもそもその時点で募集があるかどうかがわからない。筆者の場合はその分野のメーリングリストに仕事募集の投稿が頻繁に送られ、さらに学会のウェブサイトに仕事募集の掲示板があるのでそういったところを定期的にチェックする。また、LinkedInやGlassdoorといったサイトでも見つかる。各企業での待遇などは知り合いにそれとなく聞いたり、Glassdoorでチェックする。

【コンタクト】
受けたいポジションが見つかってまず最初にすべきことは、そこの企業にいる知り合い・友人に連絡してリファー(推薦)してもらうこと。そうすることで、履歴書だけで落とされる可能性がだいぶ下がる。当然、行きたいチームの中に知り合いがいて、その人物が強く推薦してくれるのが最高である。自分からコンタクトしない場合でも、企業のリクルーターから連絡が来てインタビューを受けないか聞いてくることが多い。そういう場合も電話インタビューまで行く可能性は高いと思う。知り合いがいない場合でも、ウェブのフォームから申し込むのではなく、なるべくそのチームのマネージャーとかメンバーに直接コンタクトを取るのがベターだと思う。ウェブのフォームだと見過ごされる可能性が高いが、直接コンタクトを取って、自分のバックグラウンドや熱意などを伝えられれば電話面接まで行ける可能性が高まると思う。特に、自分のPhDのアドバイザーが有名な教授であれば全てにおいて非常に有利。

【電話面接】
技術的な面接の前に、チームのマネージャーやリクルーターと一回電話で話すことが多い。これは、面接を進めるべきか、お互いの考えが一致しているか、適切なバックグラウンドを持っているかの確認である。これに通ると、電話(もしくはSkypeなど)による技術面接が複数回ある。これはポジションによって異なるが、自分の専門分野に関する試験であったり、純粋なコーディングの試験であったりと様々である。オンラインのコーディングテストを最初に課すところも多い。

【オンサイトインタビュー】
無事、電話面接をパスすると、オンサイトインタビューに呼ばれる。これは、実際に会社のオフィスに呼ばれて、一日がかりで複数の人と面接するというものである。基本的に、旅費・滞在費・食費は全て企業が払ってくれるので金銭的な心配はしなくてもよい。オンサイトインタビューに呼ばれるということはかなり有望視されているということなので自信を持っていいと思う。面接で聞かれる内容はほぼ技術的な内容である。一日中ぶっ通しなので非常に疲れる。

【結果通知】
オンサイトインタビューが終わると後日、結果の連絡が来る。結果がなかなかこない場合は、企業がほかの候補者の面接が終わるまで結果を言うのを保留していると考えてよい。この場合は、ただ待つわけには行かないので、ほかの企業の面接を進める。すでに他の企業からオファーをもらっている場合は、その事実と、そのオファーの返事の期限(通常は1週間ほど)を保留になっている企業に連絡して、早く結果をくれるように催促するべき。

【重要な点】
就活においていくつかの重要な点に気づいたので列挙する。

<ネットワークの重要性>チーム内に自分を推薦してくれる人がいるのは非常に強いので日ごろから周りの人と良い関係を築き、さらにネットワークを広げていくのは仕事探しにおいて非常に重要。

<PhDのメリット>
今回の就活において、米国の大学でのPhDの取得のメリットを非常に大きく感じた。まず、PhDの間に何枚か論文を書くので、紛れもない自分の実績が世の中に残る。有名な学会や論文誌で発表していれば、それだけで大きなアドバンテージになる。採用側としても、確たる証拠があるので、判断がしやすい。また、PhDは専門を極めることなので、自分の分野の需要が高い場合は大きなアドバンテージになる。下でも述べるが、アメリカの企業の採用ではポジションごとに仕事の内容が細かく設定されていて、研究開発などだと明確にPhDのみを採用しますとか書いてあることがある。また、PhDの数年間で良いネットワークを築けていれば非常に大きなアドバンテージになる。

<ポジションと自分のバックグラウンドのマッチング>
アメリカの採用はポジション別採用である。そのポジションごとに求められるスキル・経験・仕事内容などが細かくJob descriptionとして書かれている。もちろんその内容が自分のやりたいことであり、かつ自分の専門分野であることがオファーをもらうにはベストである。自分の専門から少し外れるくらいは大丈夫かもしれないが、全くの別分野は厳しいだろう。例えば、電気工学の半導体の分野でPhDを取った人が、マシンラーニング関連のPhDを要求するポジションで採用されることは基本的にはないだろう。ただ、専門性をそこまで要求しないポジションであれば可能性はあるかもしれない。論文以外でもオープンソースの開発に貢献しているような場合も、個人としての成果として残るので採用側としても判断がしやすいだろう。


<アプライするスケジュールの重要性>
基本的に、オファーの返事というのは1~2週間以内にしなければいけない。なので、自分の志望度を考慮すると、第一志望から順々に受けていくのがいいと思われるが、面接は数をこなせば上達していくものなので、第一志望を後に受けるという手もある。微妙なのは例えば、第二志望からオファーが来たが、第一志望をまだ受けていない場合。第二志望のオファーを蹴っても第一志望からオファーが来る保証は当然無いので悩ましいことになる。なので、複数の企業と同時進行で面接を受けるのが良いかも。

<研究職か開発職か>
ここでは、研究職=論文を書く仕事、開発職=製品開発の仕事と定義する。PhDで企業就職する場合、どちらの職につくか悩ましいところがある。研究職の良いところは自分名義で論文を出せるので、会社での仕事が自分の業績として載せることができる。開発職の良いところは、製品に直接携われるので、より直接的に社会にインパクトを与えることができる。また、チームで仕事をするのでより社会的インパクトのある大きなプロジェクトに携わることができる(例えばGoogleの自動運転車など)。また、一般的には開発職のほうが待遇が良いし、ポジションの数も多い。ただし、自分の名前が外に出せるわけではないので、一度開発職で数年過ごすと、研究職にその後戻るのは難しくなる。研究職か開発職かの違いは面接においても顕著である。研究職の面接の場合は、自分の過去の研究内容の発表およびそれに基づくディスカッションなどが多く、コーディング能力はさほど、もしくはまったく問われない。反対に開発職の場合は、一般的に、よりコーディング能力が重視される。

<勤務地>
勤務地も企業の選択において重要だと思う。いわゆるシリコンバレーにはIT企業が多く集まっているので転職がしやすい。理由は、面接がやりやすい、引越しが楽、人が多いので情報が集まりやすいから。シリコンバレー以外だとシアトル、ニューヨークもIT企業が集まっている。田舎にある企業に行ってしまうと、抜け出すのが大変かもしれない。

<大企業かスタートアップか>
大企業のメリットは、安定性、待遇、豊富なリソースといったところがあげられる。また、外国人のビザサポートも充実している。スタートアップの場合は、安定性はないが、IPOしたり大企業に買収されたりすればストックオプションでウン億円手に入るかもしれない。社員数人のスタートアップではなくて、すでに名の知れた成長している数百人規模の会社に入るのもありかもしれない。ただやはり、最初は大企業に入り、ある程度経験を積んでからスタートアップでチャレンジするくらいのほうが筆者はいいのかなと思う。





0 件のコメント:

コメントを投稿