2020年をざっくり振り返る
社会人2年目になる2020年4月からアイデミーに転職しました。そんな中で、2020年の経験のログを残しておこうと思い、振り返りがてら書いていこうと思います。
僕が入社した頃は正社員30人くらいでしたが、今は50人弱にまで増えています。新卒入社した前職のNTTグループではすでに組織化された集団の中での仕事をしていましたが、弊社はグロースフェーズにあり1週間単位で組織の状況や向き合うべき課題が変わったりと、常に変化をしています。僕は変化の起きるこういう状況は好きなタイプなので楽しめていますし、大きすぎない組織と、良い意味でのカオスな状況というのが合っていると感じます。
今回は、2020年4月から12月まで何をしてきてどんなことを感じたのかなどを、本業は時系列で、+最後にサイドプロジェクトについても簡単に書いていきたいと思います。
入社直後〜2,3ヶ月くらい
アイデミーにはフロントエンドエンジニアとしてジョインし、基本的にフロントエンドの開発を担当していました。僕が入社したタイミングでは自分のチームにはエンジニア5人(内1人がエンジニアリングマネージャー)、プロダクトマネージャー1人、デザイナー2人という構成でした。あとで述べるのですが、この構成も数ヶ月後には大きく変わることになります。
僕が主に担当しているのは、Aidemy Business Cloud というプロダクトです。
このプロダクトのフロントエンドはReactをTypeScriptで書いていて、この新機能の実装を主に担当しています。toBのプロダクトで大企業にも導入していただいているので、大規模なクライアントでも快適に効果的に使っていただけるように、管理画面の機能拡充や最適化をするというのが主な課題となっています。
入社直後は小さなタスクを担当しながらプロダクトの構成やチームの開発スタイルに慣れていくような感じでした。ちょうどコロナ禍でフルリモートだったので、僕は当時住んでいたシェアハウスやアパホテルに住みながら仕事をしていました。入社初日に1回出社して以降、フルリモートだったのですが、そういった状況でも問題なく仕事ができていたのはチームとして心理的安全性が非常に高かったように思います。
3,4ヶ月目〜いままで
この時期にはチームに大きな変化がありました。同じチームのエンジニア計3人が異動などでチームから離れることになり、残すは僕ともう1人のエンジニアの計2人になりました。異動したエンジニアには僕たちのプルリクのレビューや緊急対応的な作業をたまに助けてもらっていましたが、入社して日が浅いエンジニア2人の体勢というのは、なかなかにやりがいがありました。スプリントで決めた新機能の設計や実装、各方面から舞い込んでくる緊急の問い合わせやバグ調査、エンジニアの面接、他部署と要件定義や仕様共有のMTGなどなど、コードを書くという仕事以外にも性質の異なるタスクも色々こなすようになりました。それなりに大変ではありましたが、小さな組織ならでは感がありエンジョイしていました。
この頃からは担当するタスクも設計からガッツリ関わったり、実装する機能や要件も複雑なものになったり、よりやりがいのあるタスクが増えてきました。そのうちにひとつに、ユーザに対してローカルでファイルをダウンロードし受講していただいたコンテンツをWeb上に載せて受講していただくプロジェクトがありました。その時のプレスリリースがこちらなのですが、これは良い意味でなかなか大変でした...(笑)
また、別の新機能を設計〜実装、リリースまでを行ったときには、これがオプション機能として月額◯◯万円のような料金体系になり、自分が書いたコードが価値とお金を生み出していると実感したときはより身が引き締まる想いになりました。
最初はフロントエンドのタスクを担当していたのですが、この頃からはバックエンドのタスクも少しずつ担当することもありました。弊社はフロントエンドもバックエンドもTypeScriptを使用しています。なので、フロントエンドで使用している型をバックエンドも使っていたりするので、その意味でもTypeScriptのメリットを感じました。
また、フロントエンドでは、負債に向き合ってリファクタリングをしたりもしました。(ちょっと専門的な話になってしまうのですが、)何が課題だったのかというと、Reactのstateは、Reduxで管理しているstateとlocal stateで管理しているstateが混在していたことで、アプリケーションの規模が大きくなるにつれlocal stateで管理しているstateでは齟齬が起きることがありました。また、Container Component 内部でAPIを叩いていたので、Container Component と副作用を伴うロジックが密結合していたり、その他のロジックも Container Component 内部で行っていたことで、Container Component が肥大化して可読性が低くなってしまっていた。そこで、stateの管理をReduxに寄せることや、Redux-Thunkを導入してAPIはそこで叩くようなリファクタリングを行いました。
開発チーム内では、勉強会を定期的に行っていて自分の知見をアウトプットしたり、調べ物をしてそれを共有したりみたいなことをしています。僕はフロントエンド、特にReact や Redux を触るのが今は好きなので、それに関して「React 関数コンポーネントとHooksの導入」についてや「Redux Thunk の導入」についての話をしたりしました。入社する前にもReact、Reduxあたりは触ったことがあったのですが、 同じReact、Reduxを使っているといってもチームによってこんなに構成が違うのだなと感じたのを覚えています。そして、ベストプラクティスというのは、チームの状況によって変わってくるものだということも感じました。
前述したように、部署内のエンジニアリソースが減った状況でも、導入していただく企業の規模が大きくなっていったり、要望が増えていくなどして嬉しい悲鳴を自分の中で感じていました。そのため、仕事そのものだけでなく、それと並行して自分のパフォーマンスをより良くするための仕組み作りも意識して行っていました。社会人2年目なのですが、こういった自分自身のパフォーマンスチューニングみたいなのも定期的に行っていまし、これは継続していきたいです。
個人開発(2020年7月〜いままで)
本業とは別で、個人開発もやっていました(やっています)。これは大学時代の友人と一緒に取り組んでいるプロジェクトです。このプロジェクトのメンバーのうちエンジニアは僕1人なので、実装に関することは全て任せてもらってやっています。何を作っているのかというと、平たく言うと「音楽専用の質問箱」です。3月末α版リリースを目指してやっています。技術スタックは、クライアントはReactをTypeScriptで書いています。あとは全てFirebaseでやっています。Cloud Funcuoinsをガッツリ使ってたり、FirestoreやHosting、Autenticationを使ったりしています。あと、SpotifyとTwitterのAPIも使用しています。
個人開発でサービスをリリース目指して行うのは個人的に2回目です。前回はいろいろあって頓挫してしまったので、今回は必ずリリースまでこぎつけてやるという気持ちでやっています。リリースするタイミングでまた告知させていただくと思うので、ぜひ楽しみにしていていください!
2020年はそんな感じで駆け抜けた一年でした!2021年もがんばりますので、よろしくお願いします!