☺️

【答えのない議論】コードレビューとテストコードの品質について

に公開

法人・団体専用のパーティー会場検索サイト「会場ベストサーチ」を運用する株式会社アイデアログの取締役CTOの松川と申します。

実は現在、新プロダクトのローンチ前でして、今回はブログもあっさりめになります。

新プロダクトの内容については、別途記載しますが、既存のプロダクトとシナジーのある領域での新サービスを構築ということで、DB、Backendは共通で持ち、Frontendは完全に新規で開発、というのを半年くらいやっていました。

チームで方針を決め、ガイドラインを作り、メンバーのキャッチアップ・育成をしながらのプロダクト開発となりましたが、社内では前例がない取組であったため、探り探り進めていった感じです。
コードレビューやテストコードを書くことは「当然やるっしょ」というスタートで進めました。

プロジェクト自体は一定の成果を得て、スタートラインに立てそうです。
プロジェクトメンバーもスタート時点から飛躍的に全員が成長していてこの面でも大成功です。

なのですが、現状に満足しない観点で、次やるとしたら視点での振り返りについて書きます。

レビュワーの負担

どんなプロジェクトチームでも発生することではありますが、レビュワーの負担がやっぱり高いです。
特に、新しい技術を導入しているときはなおさらですね。

AI活用の課題

また、昨今のAIの進化により、チームメンバーの頭数に見合わない大量のコードが出来てきます。書いている方もレビューする方も処理が追い付かない、ということが往々にして発生します。

結局どうするか

品質とスピードの課題は答えがありません。なので我々も答えを持っていません!
しかし、開発する対象によってギアを分けるのは考えた方がいいかと思っていて、

  • 変更可能性が高い箇所と、そうでない箇所
  • バグの混入が取り返しのつかないもの、そうでないもの
  • 長期保守する可能性が高いもの、そうでないもの

で、レビューやユニットテストをどのレベルでやるか、リファクタリングをどこまでやるか、といった判断があってもいいかもしれません。

今回のプロジェクトの反省点としては、これらをプロジェクトマネージャーが適宜吟味しなかったこと。ガイドラインで基準を定めてもらっていたが、前述の観点を踏まえ、どれくらい工数を掛け、どれくらいの基準を担保するのかをプロジェクトマネージャーである私が、開発箇所毎に適宜アジャストしなかったこと(アジャストする判断ができる仕組みを構築しなかったこと)ですね。
※とはいえこの「アジャスト」の基準も結構難しいな・・とは感じていて、チーム内で時間を取ってしっかり吟味したいと思っています。

チームはマネージャーの鏡のようなもので、メンバーの力を足し算ではなく、掛け算に持ってゆくにはマネージャーの能力がそのまま反映されます。反省。

プロジェクト自体は現段階で成功と判定していますが、次やるとしたらどうするか?視点ではプロジェクトマネージャーは情報を取りに行き、メンバーも情報を共有したくなる進行をすれば、品質とスピードの最適化が進んでゆく気がしています。

でも、めちゃくちゃ生産性は高かったし、メンバーが成長した

上記のような反省から入りましたが、今回のプロジェクトはまず生産性面でめちゃくちゃパフォーマンスが高かったです(当社比)。
スタート当初は工数を見積もる前に、確保できている工数の数倍(1.x倍とかじゃなく数倍)は必要なんじゃないかと、私も心の中では思っていました。

ただ、達成のための手段はいくらでもあるし、優先順位と実現の仕方を工夫すれば何とかなるんじゃないかと思って不安を抱えながらも進むしかないと思い進みました。一番はメンバーが必死になって、創意工夫をして、助け合い、あきらめず、相当な葛藤を感じながらも、どんなときにもポジティブにいてくれたこと、これにつきます。本当にありがとうございました。

生成AIの活用はありましたが、それも手段をメンバーが真摯に考えてくれた結果、各種AIツールを吟味し、これを導入すれば、加速するのではないかと取り組んだ結果です。AIのおかげではありません。AIを選んだメンバーのおかげであり、成果です。

後は、プロジェクトメンバー全員がそれぞれの課題を乗り越え、成長したこと。これがプロジェクトの目標達成の大前提でしたので、この面でも大きな成果がありました。
特に、開発中に自分の新しい方向性を見出し、新たなスキルアップにすでにチャレンジしているメンバーも居ます。
私自身も、開発途中、メンバーから至らない点を指摘され、真摯に受け止めマネージャーとしても成長できた点がたくさんあります。

まだ、ローンチしていませんが。笑

手前味噌ながら、他社に誇れる良いチームになってきているかな?と思っています。
目指すところは「日本有数の開発チーム」となる事なので、まだまだ成長課題がありますが、課題が多いほどワクワクします。

Discussion