現職を退職した
途中で気がついたら会社が変わりつつも、 2018年くらいからざっくり2年半くらいは働いてたので、軽くまとめておく。
Androidエンジニアからサーバサイドエンジニアに
2018年の転職のタイミングでサーバサイドエンジニアになった。
動機
アプリだとどうしてもサービスの一部分しか見れないという印象を感じてしまっていた。 サービス全体を見ながらサービスの今後の事を考えながらやっていくにはサーバサイドかなぁと言う感じ。 これは会社やチームによっては違うと思うので一概にそう言えるかどうかはわからないけども。 サービスの立ち上げや、立ち上げ付近から大きくする経験をしたい。という指向性が少なからずあるので、 そうなった時はやっぱりサーバサイドだなという感じ。
他にも、アプリだと毎年のようにGoogleから新しいアップデートがあり、 公式がおすすめする手法も新しいものがどんどん出てくるので、キャッチアップし続けるのは結構大変そうだなーと思ってた。 サーバサイドに来てみたら、クラウドサービスは結構な頻度で新しいものが出てたり、アップデートされていくので、これもまた同じような感じではあったw
よかった事
そんなこんなで運良くサーバサイドのエンジニアとして入社出来たのはよかった。 オンプレでPHPや、副業でRails、Herokuな経験は今まであったのだけど、 クラウドサービスをいろいろと使ってサービスを作り上げていくという経験はしたことがなかったので、 非常に良い経験になった。 主にGCP、GAE、GKEとかがメインだった。AWSもlambda、SAM、IoT、Enterprise Buttonとかもろもろ触る事が出来て、 完全未経験から脱却出来たのはよかった。 インフラ専任の人がいる状況ではなかったので、自分たちでインフラ作って自分たちで監視やアラート周りなども含めて面倒を見ることが出来たのでよかった。
とはいえ、スポット的なプロジェクトでAndroidアプリ開発したりもしたので、それはとてもいい思い出。
今回の転職活動でも、サーバサイドの経験がより深まったので転職の選択肢が広がったのは非常に良いことだったし、今後もあまり技術にはこだわりがないようにしつつも、サーバサイドを主軸にやっていきたい。
課題
課題としては、Androidバリバリ出来るわけでもないし、サーバサイドも経験年数的にはまだまだな感じで、サービス全体のアーキテクチャを設計する。みたいな事はできなかった。 ゆるふわフルスタックエンジニアという感じ。 フロントエンドとiOSの経験を積めばフルスタックエンジニアと名乗ることが出来るかもしれない。フロントエンドやFlutterなどは機会があればやってみたい。
サービスの立ち上げ付近で、サービス全体のアーキテクチャの設計をして、何度も失敗して、またその失敗をバネに次に活かす。みたいなことをいっぱいやりたい。
テックリードやりました。とか、エンジニアリングマネージャーやりました。みたいな経験も特に出来なかった。肩書にこだわるわけでもないけど、個人として成果を出す事よりも、チームとしてどうやればより成果が出せるのかみたいな事を考えていかなといけないのかなと思う。
プロダクトオーナーの経験
3ヶ月とかそれくらいの短い期間だけだったけど、Androidアプリのプロダクトオーナーをやっていた。
こんな感じで作りますみたいな文章を書いたり、 パワポで雑にUIを作ってみて、デザイナさんに見てもらったり、 実際に使ってもらうユーザに話を聞いて仕様を固めたり、 なんなら軽く動くサンプルを作ってみて、こんな感じの動きになると思うんですがどうですかねー。 という事もやったりした。
コードを殆ど書かなくて、プログラマーとして大丈夫だろうかw? みたいな不安もあったけど、とてもよい経験になった。
Node.js
なんやかんやでNode.js、GAEなコンポーネントを引き継いで、リリースまでもっていくという事があった。 Node.jsをガッツり触るのは初めてだったし、何から手を付けていくのがいいんだろうかと思った状況だった。
まずは、CI/CD周りを整備。 そしてRepositoryパターンを導入してテストを書いて、ElasticseachやRealtime Database周りの動作確認をサクッと出来るようにしたした。 その後ユースケース層を作ってRepositoryを差し替えてユニットテストを書きやすいようにしたりした。 期限があまりない中でどうやって優先順位つけて対応していくか考えることが出来た。
期間的には4〜5ヶ月くらいだったろうか。単純な開発だけではなくて、いろいろと他の人とやり取りする事も多くて、とても良い経験になった。
Go, gRPC, GKE
Goは現職(退職したので現職ではないけど)に入ってから初めて業務で使うようになった。 AndroidでKotlinを使って書いていた身からすると、最初の頃は物足りなさがめっちゃあった気がするけど、慣れればそうでもなく、書きやすいなーと思うようになった。 自分の中では愚直に書いていくという思想な気がしていて、そっちのモードに切り替わったらそれはそれでいいなと思うようになった。Go wayに関してはまだまだちゃんと理解できているとは言い難いけども。
gRPC、protoファイルをベースに自動で各種言語にコンパイルされてライブラリとして配布される環境が整っており、これが非常にやりやすかった。 ハマりどころとしては、Updateの時の部分更新周りはGoのゼロ値の事もあって、ちゃんとAPI設計を考える必要があるので、 https://cloud.google.com/apis/design/standard_methods#update この辺の事は目を通して置いたほうがよいかなと思う。
GKE、いろいろと初めてだったので楽しかった。また、GKEでk8sに初めて触れたけど、k8sの難しさをうまくGKEがカバーしてくれてる点もあるので、EKSとか触るとよりその理解が深まるのかなと思った。 DeploymentManagerでインフラ周りは管理していたのだけど、 https://www.terraform.io/docs/providers/google/r/container_cluster.html default_node_poolの事を最初に知っていればもうちょっといい作り方が出来たのになという後悔があった。
会社が変わった
労働承継とかいうやつで勤め先の会社が変わった。今までにない経験だった。 良くも悪くも、あくまで自分はただの従業員なんだなと実感した出来事だった。
改めて自分の人生とはみたいな事を考えるいいきっかけになった。 まぁ、考えてもそこまでいい答えはでないので、引き続きいい感じにやっていくしかなさそう。
今後
9月は有給消化、10月は無職で、9月も含めると2ヶ月はのんびり過ごす事になるので、 会社員に戻れるのか正直不安w 11月からは次の会社で働きます。なんやかんやでAndroidまたやる事になりそうです。勘を取り戻さないと〜。