エンジニア組織の生産性の可視化とは? 〜『DevOps指標』を活用しよう〜
こんにちは!Findyの田中(@dai___you)です!
近年、IT系スタートアップが台頭しつつあり、またソフトウェアを軸として事業展開をする企業が増える中で、”いかに素早く、動くソフトウェアを顧客へ届けるか”が企業存続において重要な時代と言われています。
この”素早く、動くソフトウェアを顧客へ届ける”とは、ユーザーへのプロダクト提供スピードを速くすること、またユーザーが不便なく使いやすいプロダクトを届けること、と言い換えることができます。
そこで、今回は『エンジニア組織の生産性の可視化をテーマに、"素早く、動くソフトウェアを顧客へ届けるためには"どのような指標をみればよいのか』の一例について書いていこうと思います。
エンジニア組織の生産性はどう測る?
本記事では、ソフトウェアサービスを展開するIT企業を中心に、エンジニア組織の生産性を向上させるために見るべき指標について書いていきます。
結論から言うと、素早く、動くソフトウェアを顧客へ届けるために、エンジニア組織の生産性を測る要素としては以下の2点に集約されます。
- ソフトウェアデリバリの速度
- ソフトウェアデリバリの安定性
それぞれ解説していきますと、1つ目のソフトウェアデリバリの速度は、ソフトウェアが顧客のもとへ届くまでの時間であり、プロダクトの企画〜運用までのプロセスを速く実行することが重要です(今回はプロダクトの企画・仕様作成の時間は除き、エンジニアがコードコミットしてから本番環境へデプロイされるまでの時間として言及いたします)。2つ目のソフトウェアデリバリの安定性は、コードコミット〜デプロイするまでの障害および障害に対する復旧の時間であり、顧客へきちんと動くソフトウェアを届けることが重要です。
これら2つの要素は、以下の指標として数値化し、定点観測することが可能です。
- ソフトウェアデリバリの速度
- デプロイの頻度 - 組織による正常な本番環境へのリリースの頻度
- 変更のリードタイム - commit から本番環境稼働までの所要時間
- ソフトウェアデリバリの安定性
- 平均復旧時間(MTTR:Mean Time To Restore) - 組織が本番環境での障害から回復するのにかかる時間
- 変更失敗率 - デプロイが原因で本番環境で障害が発生する割合(%)
上記は、『LeanとDevOpsの科学』という書籍からの引用となりますが、これらソフトウェアデリバリの指標(Four Keys:4つのキーメトリクスとして紹介)は、組織全体のパフォーマンスおよび企業の業績に好影響を与える、という科学的な根拠をもって実証されています。
また、このソフトウェアの速度と安定性は互いにトレードオフの関係性ではなく、両立しうるものである(ソフトウェアデリバリのプロセスの質を上げれば、速度も安定性も向上する)と本書では紹介されています。
実際に、パフォーマンスが良好な組織とそうでない組織では、
-
ソフトウェアデリバリの速度
- コードでのデプロイ頻度は46倍
- コミットからのデプロイまでのリードタイムは1/440
-
ソフトウェアデリバリの安定性
- 平均復旧時間(稼働停止からの復旧に要する時間)は1/170
- 変更失敗率は1/5
というほどの差分があり、パフォーマンスが良好な組織は指標すべてにおいてハイパフォーマンスな成果を上げていることが見てとれます。
以下Googleが投稿した記事内におけるソフトウェアデリバリのパフォーマンスを分類した表も自社のエンジニア組織の生産性を測る指標として参考になるかと思います。
エンジニア組織の開発アクティビティを把握しよう
エンジニア組織における生産性指標は理解できた一方で、それらを指標として定量化/可視化する仕組みがない、という企業様は少なくありません。
そのようなケースにおける解決策の一つとして、GitHubのようなソースコード管理ツールによって、まずはソースコードベースでエンジニアの開発アクティビティをログとして残せる仕組みを取り入れる方法があります。
ソースコード管理ツールを活用することで、エンジニアの開発アクティビティが履歴化されるとともに、共同での開発作業が円滑になり、チームでの開発効率はよくなります。
エンジニア組織のソフトウェアデリバリを可視化しよう
次に、Four Keysに関連する指標を定量化する必要があります。
Findy Teamsでは、GitHubやGitLab、Jiraなどのエンジニア向けツールのデータを取得し、エンジニア組織のパフォーマンスを可視化することが可能です(Findy Teamsのサービスに関してはこちらをご覧ください)。
お客様からのご要望が強かったこともあり、現在Findy Teamsでは『DevOps指標』として、Four Keysに関連する指標をご覧いただけるようになっておりますので、最後にそちらをご紹介したいと思います。
Findy Teamsの『DevOps指標』を活用しよう
Findy Teamsでは、『DevOps指標』として、以下の指標を見ることができます。
- デプロイ頻度 - デプロイ設定に応じて算出した期間内のデプロイ回数
- 変更のリードタイム - 期間内にメインブランチへマージされたプルリクにひもづくcommitからマージまでの所要時間
- 変更障害率 - 期間内にメインブランチにマージされたプルリクのうち、hotfixブランチからのプルリクが占める割合
- 平均修復時間 - 期間内にメインブランチにマージされたプルリクのうち、hotfixブランチまたは、revertブランチに紐づくコミットの最初のコミットからメインブランチへのマージまでの平均時間
(Findy Teamsを導入いただいている企業様はこちらから直接操作画面にアクセスできます)
また、デプロイ頻度の先行指標として、プルリク・レビュー・マージ/クローズごとの開発アクティビティや、開発リードタイムを可視化することができます。
自社内でもDevOps指標およびそれに係るプルリクベースでの開発アクティビティや開発リードタイムを把握し、エンジニア組織の生産性改善に繋げています。 結果として、開発効率は3倍上がりました(詳細な取り組みの内容はこちらからご覧ください)。
そのほか、導入企業様からもFindy Teamsの指標を活用した生産性向上の取り組みは増えてきています。
様々な企業様のエンジニア組織づくりのご支援をさせていただく中で、このようなデータを活用した取り組みには、採用効果があり、改善するエンジニア組織に優秀なエンジニアが集まりやすい、ということもわかりました。
エンジニアが生産性高く働ける仕組みを取り入れることで、開発者体験の向上および企業業績の向上、また採用効果への影響など、さまざまなメリットがあります。
貴社は、このようなデータを活用した取り組みはされておりますでしょうか? この機会に、データを活用したエンジニア組織づくりをしてみてはいかがでしょうか? 本記事が、自社のエンジニア組織改善の参考になりましたら幸いです。
以上、最後までお読みいただき、ありがとうございました!
現在エンジニア組織について悩んでいる、Findy Teamsにご興味があるという方は、こちらより資料請求・お問い合わせ頂ければと存じます。 (※2週間の無料トライアルも可能となっております!!)
引き続き、Findy、Findy Teamsをよろしくお願いします!