昨年9月28日に『フリーランスを休業して就職します』という記事を書いてサンフランシスコの会社に就職し、早1年が経ちました。
実際にはもう1年と2ヶ月ほど経ってまして、この2ヶ月間、何度も記事を書こうと思いテキストエディタを開きつつ、まとめきれずに途中で断念・・・ということを繰り返してました。ブログ記事1つにまとめるには多くのことがありすぎました。
レイク・タホに別荘を借りて会社のみんな(とそのファミリー)で連休を過ごしたり、同僚の帰省(ミズーリ州)についていってサンフランシスコとは全く違うアメリカを体験したりといった「楽しい思い出」もあるし、英語について色々と試行錯誤したり学んだりしたこともあるし、会社でどんな感じで仕事してるか/現地でどう生活してるかというのもあるし・・・ということを書いてると永遠にまとまらなそうなので、本記事では「入社を決めた当初の目的に対しての達成度はどうか」というあたりについて書こうと思います。
(オフィスの屋上でビールの図)
状況のおさらい
まずは前提となる状況について書いておきますと、
- 2016年10月、サンフランシスコのスタートアップ「Fyusion」にiOSエンジニアとして就職
- ビザはH-1B
- 僕がちょうど30人目の社員
- 今は40人ぐらい?
- 入社時点では日本人は僕ひとり
- 今はリサーチ(研究開発)チームに日本人の同僚が一人います。
詳細は冒頭にも挙げた昨年の記事に書いてあります。
Fyusion入社の目的
これも昨年の記事に書いたことですが、謳歌していたフリーランスをやめてFyusionに就職することにした理由は、シンプルに言うと「欲しいスキルが得られそうだったから」です。
具体的には以下の4つ。
- コンピュータビジョン
- 3Dプログラミング
- 機械学習
- 英語
で、Fyusionは
- CEOは、3D点群処理のオープンソース・プロジェクト「Point Cloud Library (PCL) 」の設立者であり、OpenCVのコミッタでもある
- 他のファウンダー陣・メンバーも、ロボット工学・3Dコンピュータビジョン・機械学習とかの博士号もってる人がゴロゴロ(スタンフォード等の名門だったり、CVPRベストペーパーを取った人もいたり)
- 提供しているサービスもそれらの技術をベースとしている
- もちろん英語を使う
というわけで、完璧に条件が揃っていたので、これはもう行くしかないということで入社を即決しました。
プラス、これはスキルというよりは経歴面での話ですが、「サンフランシスコの会社で働き、ちゃんと通用した」という実績が得られるのは、もし今後またフリーランスをやる際にも、海外の会社に対して安心材料になるかなと考えていました。
この1年での達成度合い:技術面
まず、3Dプログラミング・機械学習については、結構達成感があります。いや、どちらも初心者レベルなのですが、何年も前から興味がありつつ、結局ほとんど手を付けられなかった分野で、少なくともスタートを切ることができた、というのは自分にとって非常に大きい。
3Dプログラミングは、ワールド座標とかそういう3Dの基本のキも知らないところから、アプリ内でもSceneKitを利用した機能を実装できたし、ここでSceneKitをさわってたおかげで書籍でARKitについて書くことができました*1。
- iOSの技術書をクラウドファンディングで執筆します - 共著者8人の紹介 #peaks_cc - Over&Out その後
- ARKitのサンプルコード集「ARKit-Sampler」を公開しました - Over&Out その後
機械学習については、弊社の優秀なリサーチエンジニアが、学習させたモデルをMetal Performance Shaders(MPSCNN)を使ってiOSデバイス側で動かすところまでやってしまうので、残念ながら社内の仕事では自分の出番がほぼなかったのですが、自分にそのへんの仕事がまわってくるようにと、
- Courseraで機械学習の基礎を勉強
- プライベートの時間で自分でモデルを学習してiOS上でMPSCNNを使って動かすサンプルを作成
- try! Swiftや海外カンファレンスでのトークに昇華
といったことができたので、スタート地点としては満足です。
コンピュータビジョン(CV)は・・・習得が進んだかどうかは微妙です。そのへんのコアなアルゴリズムはリサーチチームが実装(C++)を含めて担当するし、その中身を聞いて理解するにはアカデミックな知識も英語力も不足しているので、及び腰になってしまいます。とはいえこの分野で新たに知ったことも多いし、機械学習もこの分野に関連してるので、進んだといえば進んだと思います。
あと、当初の目標としては考えてなかったですが、弊社はプロダクト内でMetalをガッツリ使ってるので、実務でMetalを使う機会があったのもよかったです。OpenGL ESには以前から興味がありつつ手を付けられてなかったので、同じくGPUインターフェースレイヤのMetalをいじれるようになったのは自分にとってかなり大きい収穫でした。
この1年での達成度合い:英語
これは・・・アメリカの会社で働いているという観点でみると、かなりダメだと思います。いまだにミーティングでのみんなの議論(自分以外 vs 自分以外)についていけません。日本語でも口数が多い方ではないので、そもそも会話の絶対量が少ない。この感じだとあと3年いても無理な気がします。
とはいえ、入社以前の自分から比べてどうか、という観点だと、飛躍的に向上したともいえます。表現の引き出しは増えたし、チャットではわりと苦もなくコミュニケーションできてます。相手が少しゆっくり話してくれて、話すべき明確な用事(タスクとか、仕様とか)があれば、ちゃんと意思疎通できます。ほんの数年前まで2,3行の英語メール書くにも辞書引きながら10分とかかけてたのを思うと、また入社面接でも相手の言ってることが5%も理解できなかったのを思うと、大きな進歩だなと。
ただ、これまではどうも技術に逃げてしまってたところがありました。英語の勉強より技術の勉強、楽しい会話ができなくても技術で認めてもらえばいい、と。
これだとせっかくの「英語を使わざるを得ない環境」がもったいないので、会話量を増やすべく対策を打っていこうと思います。
この1年での達成度合い:実績面
まず、1年以上は働く、というのは目安として考えていました。日本と比べて社員をクビにしやすいアメリカでは、実力不足の社員はやはり切られます。1年いれば、ちゃんと通用した、といえるんじゃないかなと。これは達成です。
それとは別に「会社で技術力が認められている」ことが客観的にわかりやすい事実として、プロモート(昇進)しました。
採用時は Lead Software Engineer だったのが、Senior Principal Engineer になりました。
(新しくしてもらった名刺)
収入も当初のものから年収にしてn百万円上げてもらったので、サンフランシスコの会社で働き、貢献し、評価されている、というわかりやすい証明ができてよかった、と思っています。
ちなみにうちの会社、CEO、CTO、SVP Engineering、SVP Webのファウンダー陣全員が現役バリバリでコード書きます。これは本当にエンジニアの働く環境としては良くて、正当に評価されてるなぁ、という実感があります。
たとえばある時期、僕はiOSリポジトリのコードを抜本的に改善すべく、iOSチームメンバーのマインドから変えていかないと、ということでレビュー依頼が自分に振られていないものまで結構細かくコメントをつけていたことがありました。頼まれてもないのに人のコードにケチをつけるというのは下手したら相手から嫌われかねないし、自分でコード書いて新機能とかを実装する方がよっぽど楽しいのですが、どうしても必要だと思った(汚染が広がる一方なのを食い止めたかった)のでやってました。
で、そんなある日、CEOから「いつもグレイトなレビューをありがとう!」っていうメッセージが。
CEOがプルリクのレビューコメントを見て、しかもその良し悪しが評価できるって、良くないですか?これはやはり経営陣が現役でコード書いてるならではかなと思います。「昔はバリバリ書いてた」でも厳しいでしょう。あの機能をつくったとか、そういう見えやすい仕事以外での貢献も評価される環境はエンジニアにとって非常に働きやすいなと。
まとめ
まとめると、
- 技術面・・・手応えあり
- 英語・・・もっと話さないといけないけどそれでも進歩はあった
- 実績面・・・アメリカで通用してるぞという明確なものが得られた
という感じで、ここまでの進捗は上々です。
ただこれはコミュニケーション力に難のある僕に対するファウンダー陣や同僚の理解/協力があってこその結果で、「おれはもう世界のどこでもバリバリやれる」という自信がついたかというと、まったくそんなことはなく。会社にも、アメリカにももっと食い込んでいけるようにならないとなぁ、というのが今後の要努力ポイントです。
*1:ARKitは、レンダリングはSceneKitや他のフレームワークに任せるようになっている