シリコンバレーでエンジニアとして学び続ける工夫 ─ モチベーションの維持とアウトプット駆動

featured photo

はじめまして。今井智章@tomoaki_imaiと申します。株式会社メルカリへ2014年に入社し、2016年からベイエリア(シリコンバレー、サンフランシスコを含む総称です)にあるMercari, Inc.で働いています。

シリコンバレーの中心であるパロアルトに位置するMercari, Inc.のオフィスは、US版メルカリの開発拠点のひとつとなっており、Engineer、Product Manager、Marketingなど全てのチームが一丸となって日々プロダクトを作り上げています。メンバーの多くはローカル採用で、コミュニケーションは全て英語です。今、私はAndroidチームのTech Lead(テックリード)として、Android版メルカリの技術ロードマップの策定や検証、機能開発といったことを中心に、幅広くプロダクト開発に携わっています。

シリコンバレーで働いていると、日本から来られた方に「日本のエンジニアと、シリコンバレーのエンジニアの違いは何ですか?」としばしば聞かれます。“シリコンバレーのエンジニア”といっても、巨大企業GAFA(Google、Apple、Facebook、Amazonの頭文字を取った言葉)のエンジニアから、超少数精鋭のスタートアップまで非常に幅広く、スキルも千差万別です。それらを一括りにして違いを語るのは難しいのですが、あえて自分がひとつ挙げるなら、“常に競争に晒されている”ということでしょうか。例えばシリコンバレーを代表する大企業における平均勤務期間は、以下の記事によると「最大で2年」だそうです。

Employee retention rate at top tech companies - Business Insider
See how long employees stay at big Bay Area tech companies like Uber, Dropbox and Salesforce - San Francisco Business Times

居心地が良くて長年同じ会社に所属している人は多くいますが、自分が話したエンジニアたちもみんな、「一つの会社を勤め上げる」という考えは全くなさそうです。そのため社内での競争ももちろん、次のキャリアへ向けて転職市場で成功できるように、常に自分のスキルを磨いているという印象です。

正直な話、外国人がアメリカで働くためにはビザ取得が必須で、転職する企業間でビザを転送できるH1Bビザやグリーンカードを持たない場合、この転職市場のスタートラインにすら立つのが非常に過酷であるという現実があります。なので「よし、自分もシリコンバレーの転職市場で輝くためにスキルを磨こう!」という単純な話にはなり得ないのですが、それでもシリコンバレーのエンジニアの「学び続ける姿勢」にはとても刺激を受けます。このような世界があると知り、そこで働く人たちと出会ったことが、ベイエリアに来て一番の収穫だと思います。

この記事では、シリコンバレーで働くエンジニアの端くれとして、私自身が技術力や語学力を停滞させないように取り組んでいること/身に付けてよかったことについて、経験を交えながら紹介していきたいと思います。

挫折してしまった学習

さて、いきなりなのですが、まずは失敗談について話させてください。“挫折”といってもいろいろな基準があると思いますが、ここでは“身に付いた!”と自分が思えるレベルに達する前に飽きてしまったり、継続できなかったりしたことを“挫折”と定義します。

自己紹介では偉そうに「日々学びを重ねている」と書きましたが、恥ずかしながら告白すると勉強に挫折した経験は数多くあります。比較的最近の例でいえば、ブロックチェーン技術の学習です。年始に思い立って書籍やオンラインコースを購入したものの、結局どちらも中断し、今に至っています。

中断してしまった理由はいくらでも挙げられるのですが、やはりモチベーション維持が大変だったということが一番大きいです。興味があっても読み進めることがしんどくなってしまったり、忙しさに追われてしまったりして、進められなくなるパターンです。

モチベーション維持は“個人的な基準”を持つことから

なぜモチベーション維持が大変だったのでしょうか。振り返ると、理由のひとつには、この学習におけるゴール設定が欠けていたということがあります。コースを完了する、本を読了する、というのは何かをするための手段であり、ゴールとは呼べません。

個人的な基準とは

ここで私のエンジニアリングバイブルであるG.M.ワインバーグ氏の『スーパーエンジニアへの道(共立出版)という本を引っ張りだしてみます。

スターたちの生活には、個人的ビジョンがあふれている。(中略)個人的ビジョンは基準点を、つまり大事なものをつまらないものと見分けるための原則を与える。
(第9章 ビジョン P.100)

この個人的なビジョンと基準を持つと、ゴール設定もしやすく、高いモチベーションをもって学習を継続できます。

私自身が比較的学習を継続できている英語を例にとります。

私はもともと「海外で働きたい」という個人的なビジョンを持っていました。そのため、英語はプロジェクトを円滑にすすめられる程度には必要という認識でした。ですので、自分にとっての英語学習の個人的な基準は、“日本語のようにある程度不自由なく使いこなせる”ことです。

基準への“引っかかり”がゴール設定/取り組むべき課題になる

この基準を持つと、自分が引っかかっているポイントがあぶり出されてきます。具体的に「英語で長文を書く際に時間がかかる」といった引っかかりを挙げてみましょう。まず、そこには何が欠けているのか考えます。すると、「すっと出てくる語彙や表現が足りていないのだなぁ」と気付きます。その結果、“英語でするする文章を書けるようになる”ことがゴール設定で、“業務で使える語彙や表現を増やすこと”が取り組むべき課題となります。

基準を超えている人を観察する

さらに一歩踏み込むのであれば、自分の基準を超えている人を見つけて、どのように英語を身に付けているかを観察してみることをおすすめします。

自分の会社にも非英語ネイティブの同僚たちがいて、彼らは自分の基準から見るととても高いレベルで英語を書き、話します。そこで、彼らがどのようにして文章を書いているのか聞いてみました。曖昧な表現の場合はGoogleで検索し、検索結果数や出典の有無によって、その表現が適切か確認しているそうです。

そういったテクニックの詳細をブログ記事に以前まとめましたので、よかったらご参照ください。

個人的なビジョンは優先度をつける

冒頭のブロックチェーン技術学習の失敗話に戻ると、ゴール設定が甘く中断してしまったものの、実はそれほど気にはしていません。これは単純に個人的なビジョンの中では優先度が低かっただけなのだと思います。重要なのは自分にとって“大事なもの”を見分けて、それにフォーカスできるよう日々意識をすることです。"業務や日常に追われて学習時間が確保できない"という人は、もしかすると個人的なビジョンやそれにともなう基準を見失っているのかもしれません。

アウトプット駆動学習

さて、ここまで話したことを実践すると、個人的な基準を持って、どこまで到達したら"身に付いた!"と思えるか判断ができるようになります。すると次に必要なのは、そこまでの到達をドライブするエンジンです。私は社内でも社外でも、"アウトプット駆動"で学習することを提案/実践しています。

アウトプット駆動学習は、主に以下のような学習スタイルだと定義しています。

  • 外部(社外、社内、趣味、インターネット)に向けて発信する前提で学習する
  • アウトプットの成果物は発表、ブログ、OSS、サービスそのものでもよい
  • アウトプットに必要なことにフォーカスして勉強。必然的に参考書などの情報はつまみ食いするようになる

アウトプット駆動学習が良いといえる理由は3つあります。

1. 人に説明できるように学ぶことで知識が身に付く

人に説明するということは、曖昧な部分を全て明らかにする必要があるということです。また、人に伝えるということは体系立てて説明する必要があるので、思考も整理できます。

さらに、他の人に向けて何かをアウトプットするぞ、という気持ちで学習していると、"これは説明する時に重要そうだからメモを取っておこう"ということが自然と行えるようになり、記録の整理が上手になります。私は何かを調査する際、よくSlackの個人チャンネルに投稿してあとで見直す、ということを実践しています。

2. 外的要因が強制力をもつ

他者との約束があるから待ち合わせ時間に合わせられるのと同じ理屈で、何かを世に出す、という覚悟が学習する意志を強くします。

ブログやOSSでもオーディエンスや利用者がいるので強制力はありますが、一番良いのは勉強会での発表です。アウトプットにコミットメントすると、責任が生まれ優先的に取り組まざるを得なくなります。身近に発表できるような勉強会がない場合は部署内でもよいので、自分で主催してみるのも一つの手です。

私の経験で一番強制力が強かったのは、自分の結婚式で利用するサービスを作ったときでしょうか。Pythonを使ったWebフレームワークの理解がとても深まりました(当日までデバッグしていて冷や汗もかきましたが)

3. フィードバックが受けられる

アウトプットを人に晒すことで、さまざまなフィードバックを受けられます。例えば、筆者は技術ブログを英語で発信しています。内容を読んだエンジニアから連絡をもらって「ProAndroidDev」というAndroidの技術記事ポータルに掲載されたり、RxJavaの記事を書いた際はプロジェクトオーナーのDavid Karnok氏からフィードバックをもらったりしました。

Writing Espresso instrumentation tests with Dagger2 + Kotlin

海外に向けたアウトプット

読者の方にはいずれ海外で働きたいという考えをお持ちの方もいると思います。その場合はぜひ、英語での発信やコントリビューションにチャレンジしてみてください。

特にシリコンバレーの場合、アメリカでの就労経験がないエンジニアがいきなりマネージャー職を任されるのはかなりハードルが高く、まずはプレイヤー(Individual)としての採用になると思います。その際にやはりレジュメに書きやすいのは、外部に見えるOSSのコントリビューションや成果物です。

また、ブログなどの発信もアピールにつながります。しばらく前から、英語圏での技術ブログの多くがMediumで発信されています。英語圏の読者も多いので、今から英語で発信したい人はMediumを選ぶと良いでしょう。書いた後は必ず関連するタグ#AndroidDevなど)をつけてツイートすることをおすすめします。

学びの苦労にありがちなケース

学習には苦労が絶えません。その中でありがちなケースは、以下の2つではないでしょうか。

1. 進捗が出ないとき

何時間かけても仕組みが理解できなかったり、書いたコードが思った挙動をしなかったりすると心が折れそうになります。

2. 今学んでいることは意味があることなのか、考えてしまうとき

業務に関係していることをずっと突き詰めていった結果、「果たしてこれに意味があるのか?」と考えてしまい、意欲が下がってしまうパターンです。次のキャリアステップや取り組んでみたいことがはっきりしていない場合に多く起きがちです。

学びの苦労の乗り越え方

学びの苦労を乗り越えるのは決して容易ではありません。私も日々頭を抱えています。しかし、私自身の経験から乗り越えるヒントをお伝えするならば、以下の2つのことをやってみるのが良いと思います。

仲間を作る

学習をともにする仲間を見つけるのはとても有効です。良い刺激にもなりますし、何かつまずいていることがあれば相談もできます。筆者は日本にいた頃から友人と一緒に、プライベートなプロジェクトや課題を持ち寄って取り組む「もくもく会」を開催していました。アメリカに移り住んでからも、知り合ったエンジニアと定期的にそのような会を開催するようにしています。

お手伝い係になる

今学んでいることが自分のキャリアにとって意味があることなのか考えてしまう時は、一旦その学習から離れて、サービスでもOSSでもよいので、誰かのお手伝いをしてみるというのも手だと思います。私の経験上、自分が知らない分野を学ぶことで新鮮な気持ちになりますし、自分が取り組むべき方向性も再確認しやすいです。

理想としては自分のコア技術で貢献しつつ、新しいことを学びアウトプットしていくことが望ましいですが、別に全く知らない分野でもレビューやドキュメント整備などで貢献することはできるでしょう。

featured photo
写真:Mercari, Inc.のオフィスの風景(上)/オフィスの庭にて(記事冒頭)

まとめ

ここまで、私なりにどうやって学習を継続してきたかについて書いてきました。読んでくださった方にあらためて伝えたいことは、「いつ何時会社を辞めても次のキャリアを見つけられるように、個人的なビジョンを大事に、学びを続けて自分の市場価値を常に高めてください」ということです。

シリコンバレーほどの流動性が高い環境は世界を見てもそれほど多くはないと思いますが、それでも年功序列や終身雇用といった仕組みは世の中からどんどんなくなっていくと思っています。そういう時代でも楽しく自分がやりたいことを選べるようにするために、学びを重ねるべきです。

今回のこの記事が皆さんの学び方のヒントになれば幸いです。

今井 智章(いまい・ともあき) @tomoaki_imai / tomoima525

tomoaki_imai

東京大学大学院修士課程卒業後、外資系SIerを経て、2014年にメルカリにAndroidエンジニアとしてジョイン。2016年からUSに移り住み、US版メルカリのAndroid、React Nativeを中心としたプロダクト開発を担当している。共著に『Android アプリ設計パターン入門』がある。
ブログ:tomoima525's blog