調べたこと、作ったことをメモしています。雑多なメモはこっち:https://memo.shimazu.me/

Google のエンジニアを辞めて Progate を始めます。

https://cdn-ak.f.st-hatena.com/images/fotolife/a/amiq11/20210401/20210401002831.png

2021年3月31日付で Google を退職し、本日4月1日から Progate でエンジニアとして働くことにしました。*1

そこで、以下の3点について、つらつらと書いていって転職エントリとすることにします。

  1. 東京でGoogleのエンジニアとして働いた5年間
  2. キャリアパスについての悩み
  3. プログラミング教育について期待すること

もし他にも聞きたいことがあったらTwitterでリプでも飛ばしてください。答えられそうなことは答えるかもしれません。

東京でGoogleのエンジニアとして働いた5年間

僕は東京の Chrome チームで、 Service Worker という JavaScriptAPI を実装していました。

const reg = await navigator.serviceWorker.register('sw.js');

という JavaScript のコードを書いたときに Chrome の裏側でどういう C++ のコードが動くのか、詳しく知りたい人は声をかけてくださいね。

Chromiumオープンソースなので具体的な仕事内容をちょっとだけ紹介すると、たとえば Service Worker や Network Loading の大規模リファクタリングをしたり、タイムアウトの実装をしたりといった内部的なものから、JavaScript に API の追加をしたり、Docs の性能最適化なんかをしたりもしていました。 最終的に最後の1年はテックリードとして仕事をさせてもらい、ちょうど大きいプロジェクトをいくつかキリのいいところまで進められたところで退職となりました。

ところで、ブラウザというのはやや特殊なソフトウェアで、自社で仕様を決める事ができず、 W3CWHATWGIETF なんていうところで仕様の標準化をしつつ実装が行われます。そのエコシステムの中において、仕様策定から実装まで一貫してソフトウェアエンジニアとして携われたのは大変大きな経験になったと感じています。普段のコードレビューなどで大変優秀な同僚たちから設計などに関するアドバイスをもらうのみならず、議論が進まないときの進め方、時差をまたいだ仕事のしかた、大規模なリファクタリングをすすめるための手法、標準化の大事さ、オープンソースコミュニティーでの議論のしかたといった、国をまたいで多くの人とインパクトの大きい仕事をするためのコツを学べたのは大きな収穫だったかなと思います。コロナ前には、海外に年3~5回程度出張に行かせてもらっていたのもとても楽しかったです。

また、自主性が重んじられる環境だったというのもとても成長につながったと思います。 なにをするか、どうしていきたいかというのを常に自分で考え、やるべきことを自然と主張できる人が評価されているように感じました。待っていれば与えられるのではないというのは改めてなかなか簡単な環境ではないなと思いますが、常に「次は何をすべきか?」を自分で考えるためのよいトレーニングになったと思います。

ほかにも、 STEP 教育コースというプログラムでアルゴリズムやデータ構造を始めとするソフトウェア開発の基本的な知識を授業で教えたりもしました。大学時代にこんな授業があったら面白かっただろうな、という内容を3時間の授業にまとめ上げるのはなかなか苦労しましたが、教育コースを出た学生さんたちが活躍していく姿を見るととても嬉しくなります。

Google のソフトウェアエンジニアとして働くのは人におすすめできるか?というと、僕個人の意見でいえば Yes です。優秀な同僚や上司、立場に関わらず対等に技術的議論を進められること、正当な評価と正当な評価をすることに対するフィードバックループがあることなどが僕の感じる良い点です。 万人にとって楽な環境ではないと思いますが、よく言われる収入面でのメリットだけでなく、きちんと仕事をするときちんと評価されるという良い環境だと思います。

あとランチはとても美味しかったです!*2

キャリアパスについての悩み

一方で、個人的な課題もいくつかありました。 たとえば英語が苦手なことや知識・経験の不足による標準化会議での議論に参加する壁を感じたこと。これは単純に僕の勉強不足でもあるのですが、議論を引っ張っていく立場になるためにはまだまだ至らないことが多くあると感じました。

また、テックリードとしてたくさんあるタスクから優先順位をつけていくことはしましたが、逆に自分からプロジェクトを創り出すことはできていなかったなと強く感じていました。長期的に Service Worker という API をどうしていきたいか、全体のチームの中で僕たちのチームはどうあるべきか、といったようなことがうまく位置づけられず苦労しました。その中でも特に、自分たちの作っている機能を使ってくれているチームとの距離が遠いように感じられ、何をすると喜ばれるのかというのがわかりづらかったという点が難しかったです。

自身の中において、テックリードとして仕事をするというのは、入社時から決めていたキャリアにおける一つのマイルストーンでした。
それを達成した今、これらの経験を踏まえて改めて自分は今後どうやって仕事をしていきたいかを考えたところ、自分のそもそもの原動力は「面白いものをつくりたい」というところにあるように感じられました。そのためには、プロダクトを使っている場所に近く、何をしたら価値が提供できるか自分で考えられるようなところで仕事をするのが近道に思えます。

そこでチームを移ることを考えましたが、残念ながら今年はコロナ禍で募集がほとんどなかったです。またそれだけではなく、5年後や10年後までこの会社で働くよりは大きく違う環境で働くという経験を積みたいと考えたこと、もともとプログラミング教育には大変興味があり、さらに幸いにも転職を考えていたタイミングで大学の後輩に声をかけて頂いた縁なども重なり、この度は Progate に転職することにしました。

プログラミング教育に期待すること

プログラミングが必修化されることもあり、プログラミングを学ぶことに興味を持ってくださっている方は多くいるように思います。

一方で、学習し始めのところで躓いてしまってそれ以上の勉強にうまくつながっていないようなケースは多くあるように感じています。本やサイト、動画、プログラミングスクールといったコンテンツは世の中にたくさんあります。しかし、実際に「価値のあるものを創る」というプログラミングにおいて最も面白い経験をできるようなレベルまで、体系だった学習を一貫して多くの人に提供できるようなものはあまりなさそうです。 Progate では、そのような「創れる人」をたくさん生み出せるコンテンツを創っていけたらいいなと思っています。

さいごに

これまでお世話になった同僚やインターン、イベントでお話させていただいた方々には大変感謝しております。
5年間という期間は過ぎてみるとあっという間でしたがとても楽しく過ごさせていただきました。ランチいけるようになったら誘ってください!

これからも新しい環境で引き続き頑張っていこうと思います。応援のほど、よろしくお願いいたします!*3

*1:エイプリルフールじゃないよ!

*2:写真見返していたらお腹空いてきた

*3:欲しい物リストもこっそり公開しておきます!