フルタイムOSSコミッタを始めて2か月経った

Shopifyに入社してRubyJITコンパイラを書く仕事を始めてから2か月経った。 前職の退職エントリ では今後やりたいことを書いたりしたが、実際OSS開発を仕事にしてみてどうだったかみたいなことを書いておく。

シリコンバレーでのリモート生活

3年前に妻とアメリカに移住し、今年永住権も取得した。 Shopifyは本社はカナダにあるし2020年5月からフルリモート企業なのだが、 前職の本社があったシリコンバレーのあたりからそのまま引っ越さずに暮らしている。

なぜシリコンバレーに住み続けるのか

フルリモートである以上はカナダ移住のためのビザのサポートを会社がする動機もないため、 現職においても住む国の選択肢は基本的に日本かアメリカになると思っている。

飯が安くて美味いのを主な理由として妻も僕も住むならアメリカより日本の方が好きなのだが、 住む地域ベースで多くの企業が給料に傾斜をかけてくることを理由にシリコンバレーに住み続けている。

東京だと、現地の企業では良くて年収1000万円、金払いのいい外資に行くと2000万円という感じだと思うが、 シリコンバレーに住んでいれば、スタートアップでも $180,000 (2600万円) あたりが割とよくある感じだし、 上場してる大きめの企業だと、結構多くの人が $360,000 (5200万円) くらいのTotal Compのオファーをもらってそうな雰囲気を YouTubeやlevels.fyiから感じる。

リモートペアプログラミング文化

前職では様々な人と定期的に1on1をすることでリモートでのコミュニケーションを活発に行なっていた。 Slackより1on1の方が深い関係を築きやすいので、特に転職したばかりの新人の自分はそれを積極的にやっていく必要があると考えたが、 現職では、マネージャー以外と定期的な1on1をしてる人が少なそうに見えた。

一方、Shopifyは全社的にTupleというペアプロサービスを導入していて、定期的なペアプロミーティングを毎週複数持っているみたいな人は逆に多そうだった。同じ仕事をしてるチームメンバーとはペアプロをし、それ以外の人たちとは突発的な1on1を申し込むという感じで関係性を築いていくことになろうかと思っている。

北米東海岸と日本の時差

前職はアメリカ在住の社員は基本西海岸にいるという感じだったが、 現職ではアメリカでもカナダでも東海岸タイムゾーンに住んでる人がかなり多いことに違いを感じている。

日本と西海岸でミーティングをする場合、双方の働いてる時間が被る1~2時間を使うとまともな時間にそれを行なえるが、 日本と東海外だと時差が13時間あり、両者が業務時間内になるタイミングでミーティングをするのが不可能という感じになっている。

普段は西海岸に住んでるので問題ないのだが、カンファレンスで日本に出張したついでに日本に滞在して一時的にそこから働くということをすると、ミーティングが必要な仕事は全てアメリカに帰るまで先延しみたいな感じになる。僕は業務時間外にミーティングをしたくないし相手にも強要したくないので、現状特に解決方法がない感じになっている。

OSS開発とビジネスインパク

コンパイラエンジニアというキャリア

今回の転職で、分散システムの開発というかなり求人の多い職種から、 言語処理系の最適化というニッチな分野にキャリアチェンジした。 コンパイラを商品として提供している会社ならまだしも、 特にそういうわけでもない会社で、誰でも無料で使える言語処理系の最適化を仕事にするというのは、 会社に予算を充ててもらうハードルが高そうなイメージがある。

言語処理系開発というキャリアについて考えるとき、 GoogleでWebAssemblyを開発していたが病んでしまった人 のことをよく思い出すのだが、 なかなか経営陣に人や予算を割り当ててもらいにくそうな仕事に就いている という点に関しては常に意識しておく必要があると思っている。

基盤開発と利益部門の関係

その一方で、過度に悲観的になる必要もないと最近は考えている。 というのも、どれだけOSSを活用してプロダクト開発に集中しようとしている組織でも、 自分たちの特殊なニーズに合わせて基盤技術の改善を行なうことで開発や運用が効率的にできるようになる状況はいくらでもあるし、 特に大きな組織ではその価値がスケールしやすい。 僕はRubyRailsOSS開発を主に行なうグループに所属していて、大体40人くらいいるのだが、 社員が9000人ほどいる会社ではそこに投資しすぎということにもならないのだろう。

現職の例だと、Rubyを使ってプロダクトの開発と運用を行なっていく上で JITGCの改善によって速度改善が得られればユーザー体験が向上するし、 メモリ使用量が減れば台数が減らせてコスト削減にもなる。 全社的にサーバーサイドにRubyを使っていて、サーバーの数も社員の数も多いため、 この基盤の改善が会社に与えるインパクトは並の企業より大きいことになる。 そうすると、利益部門が出した売上の一部を基盤開発に充てる経営妥当性も十分説明できそうな感じがする。 特にShopifyの場合はCEOが元Railsコミッタなので、そこを誰かが説明してあげる必要もないという強みもある。

仕事の評価と待遇

RubyRails自体のフルタイム開発を仕事にしている他の日本人と話すと、 Shopifyみたいに開発目標を立ててチームでOSS開発をしてインパクトレビューもして給料に反映させますみたいな環境より、 待遇がある程度犠牲になっても何でも自由に開発していいみたいな会社の方が好き、 という意見を聞くことが複数あった。

僕もお金を稼ぐ目的は経済的に自由になって選択肢を増やすことなので、 そもそも仕事も自由にしたいという気持ちには一定の共感があるが、 自分がやりたい仕事を取ってきたり自分の仕事を適切に評価してもらうためにコミュニケーションしたりすることに慣れたので、 そこにはそれほど抵抗を感じないようになった。 むしろ、成果を出したらそれが待遇にも反映されることで得られる満足感もあると思うが、 そこが実際どうかは実際のレビューを経てみないと何とも言えなそう。

カンファレンス登壇業務

僕のグループではカンファレンス登壇が主要な業務の一つという風にマネージャーも認識していて、 RubyKaigiのトークの準備をするので他の仕事が1週間全く進捗しませんみたいな状態でも誰も文句を言わない雰囲気がある。 登壇1回するごとにちょっとボーナスももらえるのでお得。

自分たちが作る基盤をプロプライエタリではなくオープンにやるのは、 それによってより多くの環境でテストされたり、社外からもコントリビューションが来たりすることで品質が上がるなどのメリットがあるからだと思うが、 実際にそれが起こるようにして自分たちの仕事のインパクトを大きくしていく上でカンファレンス登壇は実際に必要な業務だと感じる。

キャリアチェンジの感想

前職では自分の書いたコードが直接売上に貢献しうる仕事をしていたので、 OSS開発なんか仕事にして大丈夫かという不安も以前はあったが、 実際に入社してみると、自分が今最も技術的に興味のある課題に取り組めることがとても楽しく感じる。

シリコンバレーに住んでれば面白くて待遇の良い転職先なんていくらでもあるので、 変に先のことを気にして何かを妥協するより、 今一番面白いと思えることができる環境に今後も身を置き続けようと思うようになった。