エンジニア組織のパフォーマンスや状態を把握・改善するために、開発生産性の可視化が話題に上がることも増えてきました。当社でもエンジニア組織、メンバーのパフォーマンスや状態を把握・改善するために、Findy社が提供する開発生産性改善ツール「Findy Team +」というサービスを導入しています。

開発生産性向上に取り組む中で、2022年10月にFindy社が選出する開発生産性の高い組織として「Findy Team+ Award 2022」【 Medium Div. 】(対象:エンジニア組織が50〜100人未満の企業)に選出いただきました。(ニュースリリースはこちら)

ファインディ1引用元 https://prtimes.jp/main/html/rd/p/000000046.000045379.html

 

今回の記事では、当社が取り組む開発生産性とアワード受賞の裏側の取り組みについて記載していきます。

 

センシンロボティクスが取り組んでいる開発生産性

開発生産性を測る項目や指標は組織によって異なると思いますが、当社では、主に以下の4つの項目と指標に注目し、開発生産性向上に取り組んでいます。

計測指標

定量化しモニタリングしている項目、指標は他にもありますが、プロジェクト単位での開発生産性の指標を優先的にモニタリングしています。

本指標のモニタリングは、開発組織・メンバーの状況を把握するファーストステップと考えています。その指標に基づき、1on1等でのヒアリングを通じて、状況を定性的に把握し、開発生産性向上のために現状や課題の改善策に繋げています。

ここから具体的に、各項目に基づいた開発生産性改善の取り組みを説明していきます。

開発プロセスにおける行動量

「Findy Team +」を活用し、以下の図のように開発メンバーの活動状況を可視化しています。その上で、プルリクエスト・コミット・レビュー回数等の重要指標に着目することで、メンバーの健康状態やパフォーマンスをリアルタイムで把握するように努めています。

ファインディ➁(開発マネージャー中山の活動状況)

取り組みの例として、先週と比較した際にコミット回数等の重要指標が低下している場合は、メンバーが何かしらの課題にスタックしている可能性があると考え、開発マネージャー・テックリードからコミュニケーションをとりにいきます。

「Findy Team +」では、GithubやJIRAから自動的に各指標を収集してくれるため、開発マネージャーやメンバーにとって少ない負担で現状把握できています。1on1を通じてコミット回数の減少等の問題がありそうな指標を深掘りし、生産性改善の取り組みを一緒に考えます。その結果、短い時間の1on1でも改善施策の策定や前週の施策の振り返りに繋げることができています。

レビュー対象のコード量

当社では、プルリクエストの変更行数が多いプロジェクトは問題を抱えている可能性が高いと捉えています。変更行数が多いプルリクエストの場合、コードを書く時間だけではなく、レビューする時間が長くなってしまい(フィードバックサイクルが長くなってしまい)、プロジェクトが遅延するリスクが高まるためです。その結果、コードの修正が遅れ、プロジェクト遅延のリスクが大きくなります。


上記の理由から、レビュー対象のプルリクエストの変更行数、ファイル数をモニタリングしています。その上で、各メンバーには意味のある最小単位にプルリクエストを分割するようにアドバイスしています。

ファインディ3(開発メンバーのプルリクエスト一覧)

具体的には、開発メンバーが想定より変更行数が多いプルリクエストを提出してきた場合、その背景の確認からプルリクエストの適切なコード量を提示しています。開発マネージャー、テックリードが中心となり、レビュー、1on1のプロセスを通じて、開発メンバーのコード品質の向上に取り組んでいます。各メンバーのコード品質の改善が、不具合の減少やリファクタリングのし易さという開発生産性の向上に繋がっていくと考えています。

開発プロセスのリードタイム

どの開発組織でも、プルリクエストがレビューされず放置される問題やレビューが始まるまでに時間がかかるという問題があるかと思います。

当社でも開発メンバー、テックリード、開発マネージャーが複数プロジェクトを並行し担当するため、同様の課題があります。その課題に対して、プルリクエストからレビューまでのリードタイムを可視化し、遅延理由をヒアリングするプロセスを重要視しています。レビュアーが置かれている状況、業務負荷をリアルタイムに把握することで、開発マネージャーは適切なリソースマネジメントを行い、メンバーのサポートをしています。

上記のプロセスを通じて、レビュー対象のコードがレビューされないまま放置されるという無駄な時間を最小限にし、プロジェクトの遅延を防ぎ、開発生産性の向上に繋げています。

業務平準化の度合い

業務平準化の度合いを把握するためにレビュアーの偏りという指標もモニタリングしています。開発における問題の一つとして、一部のメンバーに業務が偏り、業務の平準化等の対処が遅れがちという点があるかと思います。その対処の遅れは開発プロジェクトの遅延に繋がる大きなリスクを孕んでいます。

そのため、レビュアーの偏りという観点については、感覚に頼らず、可視化することを重視しています。その結果、一部のメンバーへの業務の偏りを早期に把握し、改善に繋げています。また、定期的なモニタリングを通じて、業務の偏りの傾向を把握し、構造的な解決にも繋げるようにしています。

上記の4つの項目を可視化、モニタリングし、1on1やレビュープロセスを通じて開発メンバーとの改善活動を続けることで、開発組織全体の生産性向上に繋げています。

 

受賞の裏側での取り組み

ここまでは、当社の一般的な取り組みを説明してきましたが、アワード受賞の裏側の2つの開発生産性向上の具体的な取り組みについて説明します。

新メンバーの開発状況の可視化による業務立ち上がり早期化

2021年7月には、エンジニア数(業務委託メンバー除く)が21名であったのに対し、2022年7月には34名と60%も増え、エンジニアの半分以上が入社1年未満という状況でした。そのため、開発メンバーの状況を把握することが難しいという課題がありました。また、新規のプロダクト開発が増え、スムーズなオンボーディングの進め方やメンバーへの負荷の大きさが課題となっていきました。

この課題に対し、新メンバーのコミットやレビューの状況を定量化し、新メンバーの開発状況の効率的な把握に努めました。その結果として、リアルタイムで各新メンバーの課題を把握し、適切なフォローを実施できたため、スムーズなオンボーディングや新メンバーの負荷の平準化に繋がりました。上記のプロセスを通じて、新メンバーが早期に戦力化したことにより、開発生産性が向上したと考えています。

コードレビュー体制の改善によるコード品質・開発生産性向上

新メンバーが急速に増加したため、コード品質や開発の進め方について認識のばらつきがでてきました。その結果、プロジェクトによっては、大きすぎるプルリクエストの頻発、全体的なコードレビュー不足が大きな課題となりました。

この状況に対して、1on1、コードレビューでプルリクエストの改善指導に取り組みました。その結果、各メンバーのコード品質改善のみならず、レビュー品質改善に繋げることができました。また、負荷が大きいレビュー体制の場合、新規のレビュアー参加を促す等のリソース拡大・最適化にも取り組みました。その結果、コードレビューの網羅性が向上し、不具合の減少やリファクタリングしやすいコードの増加等という開発生産性の向上に繋がったと考えています。

 

実際に取り組んだエンジニアの声

2名のエンジニアに開発生産性の取り組みについてお聞きしました。

佐々木 義広(ささき よしひろ)
2022年3月入社 現開発マネージャー(入社時テックリード)

佐々木さん写真

入社後に担当したプロジェクトは、正社員エンジニアと多数の業務委託エンジニアで構成され、Github単体では開発生産性の課題を把握し難い状況でした。各種指標を可視化することで、レビュアーの偏りやプルリクエストの粒度などの課題が発見できました。可視化された指標に基づいて、メンバーへのフィードバックを行い、開発速度の向上に繋げることができました。

池口 翔太郎(いけぐち しょうたろう)
2022年7月入社 Webアプリエンジニア

池口さん写真

入社後、風力発電設備(ブレード)の保守業務を効率化する業務アプリケーションの開発プロジェクトに参画しました。入社当初は、開発経験・インフラスキルや技術力の不足から高い開発生産性を発揮できるか、という点には心配していました。そういった状況でも、先輩社員の丁寧なレビューや1on1でのフォローアップのおかげで、コード品質を振り返り、開発スキルを着実に向上できたと考えています。当社のプロジェクトでは、クラウド環境の構築にKubernetesやTerraformを利用しているため、インフラの知見を伸ばすことが開発生産性の向上に大きく繋がると考えています。そのため、各指標の振り返りを通じてインフラ知識の習得に取り組んでいます。

 

最後に

今回は、センシンロボティクスの開発組織が取り組む開発生産性の向上について取り上げました。どのように開発生産性を向上させるか?という問いには、解がある訳ではなく、試行錯誤を通じて、当社の開発組織に適した生産性向上の方法を見つけていくと考えています。本記事を通じて、当社の開発生産性向上に対する本気度や取り組みの一端を知っていただけると幸いです。

今回のような取り組みや考え方に共感いただけましたら、エンジニアポジションにご応募いただけると幸いです。各ポジションの募集要項はこちらに掲載しています。まずはカジュアル面談からのスタートも大歓迎です。皆様からのエントリーを心からお待ちしています。