ソフトウェア開発チームを管理するのは並大抵のことではありません。プロジェクトが最終ラインに到達するまで、エンジニアリング プロジェクト マネージャーは息つくことができません。ソフトウェア エンジニアリング マネージャーがプロジェクトとチームのパフォーマンスを向上させる方法を模索するのはこのためです。そして、まさにそこに、Kpi のようなものが神の姿を借りて登場します。
KPI はチームのフィットネス トラッカーのようなものです。KPI は、物事がスムーズに機能している部分と、ネジを締める必要がある部分を確認するのに役立ちます。しかし、無数の KPI が存在する中で、実際にどの KPI を考慮すべきでしょうか?あなたをロックスター ソフトウェア チーム マネージャーのように見せてくれるトップ 15 と、やめたほうがいいかもしれないいくつかを詳しく見てみましょう。
KPI は画面上の単なる数値ではなく、より良い意思決定へのロードマップです。適切な指標を追跡することで、チームがどこで優れているか、どこに改善の余地があるかを特定できます。これは、プロジェクトのタイムライン、リソースのニーズ、潜在的な障害を予測するのに役立つ水晶玉を持っているようなものです。
あなたがレースに参加していると想像してみてください。ただし、車がトラックを走り回るのではなく、チームはスプリントでタスクを完了するために競い合っています。
問題は、スタートライン (「やるべきこと」) からゴールライン (「完了」) までどれくらい早く到達できるかということです。
そこで、サイクル タイムが登場します。これは、チームがどれだけ早く仕事を終わらせているかを示すストップウォッチです。
サイクルタイムはスピードがすべてですが、ただ速く走るだけではありません。
重要なのは効率性であり、どこで速度低下が発生しているかを知ることです。平均して、高パフォーマンスのチームのサイクル タイムはタスクあたり約 1.8 ~ 3.4 日です。
時間がかかっている場合は、内部を調べて遅延の原因を確認する時期が来ている可能性があります。プロセスのボトルネック、マルチタスクが多すぎる、または単なる古い技術的負債である可能性があります。
あなたのチームがモバイル アプリの新機能に取り組んでいるとします。タスクは月曜の朝にバックログから「進行中」に移行します。開発チームはコーディング、テスト、コミットのプッシュを開始し、水曜日の午後までにタスクが完了し、「完了」とマークされます。これは 3 日のサイクルタイムです。
さて、別のタスクで行き詰まりが発生したとします。コード レビューに永遠に時間がかかるか、依存関係によって物事が滞っている可能性があります。そのタスクが 7 日または 10 日も続く場合は、何かが正しくないことを示しています。
ここで魔法が起こります。サイクルタイムを追跡することで、パターンを見つけることができます。
もしかしたら、あなたのチームはいくつかのタスクでは非常に迅速に取り組んでいるかもしれませんが、他のタスクでは行き詰まっているかもしれません。この洞察があれば、詳細を掘り下げてプロセスを合理化する方法を見つけることができます。おそらく、コード レビュー プロセスを微調整したり、タスクの優先順位を変更したりするのと同じくらい簡単なことかもしれません。
目標は?サイクル タイムを短縮し、チームがプロのようなタスクを継続的に達成できるようにするため。
そして、それが起こったとき、あなたは単に速く動いているだけではなく、賢く動いているのです。
コードに関して言えば、コードを大量に書くことが重要ではなく、書いたものが実際に機能することを確認することが重要です。そこでコード カバレッジが役立ちます。
コード カバレッジはコードの健康診断と考えてください。
コードベースのどの程度がテストされているかがわかるため、問題になる前に卑劣なバグを発見できていることがわかります。
ソフトウェア開発の世界では、コード カバレッジの適切なベンチマークは約 70 ~ 80% です。それを達成できているなら、かなりうまくやっていると言えます。
ただし、ここでの目標は完璧であることではないことに注意してください。100% のカバー率は、ビーチの砂粒をすべてキャッチしようとするようなものです。
代わりに、コードの重要な部分がカバーされていることを確認することに重点を置きます。
電子商取引サイト用の新しい機能を構築していると想像してください。ショッピング カートだとします。
カートに商品を追加し、合計を計算し、支払いを処理するコードを作成しました。さて、顧客が使い始める前に、これらすべてが機能することを確認したいと考えています。
各部分のテストを作成します。
カートにアイテムを追加 -- アイテムが正しく追加されたかどうかをテストします。
合計の計算 -- 誰かが複数の項目を追加したときに、計算が正しいことを確認します。
支払いの処理 -- 支払いゲートウェイをテストして、取引がスムーズに行われることを確認します。
テストがこれらすべてのシナリオをカバーし、エラーなしで実行される場合は、確実なコード カバレッジが得られます。しかし、支払いプロセスのテストを省略すると (複雑であるか余分に時間がかかるため)、コードの重要な部分がテストされないままになることになります。これは、夜間にドアの鍵を開けたままにするようなものです。
コード カバレッジを常に監視することで、コードの大部分が確実にテストされるようになり、本番環境にバグが侵入する可能性が減ります。重要なのは問題を早期に発見し、後で顧客からの苦情に発展しないようにすることです。
これを想像してみてください。開発チームは同じコード部分を何度も書き直し続けています。進歩に向けて全力疾走する代わりに、彼らはハムスターの回し車の上で立ち往生し、実際には前に進むことなくグルグルと回り続けます。これはコードのやり直しが実行中であり、何かが間違っていることを示しています。
理想的には、チームは新しい機能の構築に多くの時間を費やし、すでに行われたことをやり直す時間を減らす必要があります。コードのやり直しが多すぎると、生産性が低下する可能性があります。
実際、研究によると、頻繁なやり直しにより開発者の時間の最大 40% が消費される可能性があり、その時間をイノベーションに費やしたほうがよいと考えられます。
変更失敗率 (CFR) を開発チームの「バグメーター」と考えてください。これは、コードの変更によって機能が損なわれる頻度を測定します。 CFR が高いということは、水漏れのあるボートを所有しているようなものです。スムーズに航行する (クールな新機能を構築する) 代わりに、常に水をためる (バグを修正する) ことになります。
理想的な世界では、コードベースに加えたすべての変更が完璧に機能します。しかし実際には、物事は壊れます。 Accelerate State of DevOps Report によると、CFR の業界平均は約 16 ~ 30% であり、10 件の変更のうち 1 ~ 3 件で問題が発生する可能性があることを意味します。 CFR がそれを徐々に上回っている場合は、本番環境に移行する前にコードにさらなる TLC が必要であることを示しています。
あなたのチームが新機能を公開すると、すぐにユーザーがクラッシュを報告し始めたとします。データを詳しく調査すると、最近の展開の 40% で問題が発生していることがわかりました。ああ! CFR が高いということは、チームがバグの対処により多くの時間を費やし、イノベーションに費やす時間が減少することを意味します。
目標は?テストとコード レビューを改善して CFR を下げると、次の大きなものの構築により多くの時間を費やし、すでに出荷されたものの修正にかかる時間を短縮できます。
欠陥検出率 (DDR) は、バグ捕捉スコアカードのようなものです。コードが公開される前に捕らえたバグの数と、リリース後にすり抜けたバグの数を示します。 DDR が高いほど、テスト ゲームの品質が向上します。しかし、より多くのバグが忍び寄って運用環境に現れている場合は、テスト ツールを強化する時期が来ています。
優れた DDR は、テスト プロセスがしっかりしていて、通常はリリース前に 85% 以上のバグを検出することを目指していることを示します。 DDR が低い場合、多くの危険信号を見逃して、後でユーザーが苦情を言い始めて初めて気づくようなものです。
新しいアプリのアップデートをリリースすると想像してください。テスト中に 8 件のバグを発見しましたが、リリース後、ユーザーからさらに 5 件のバグが報告されました。つまり、DDR は 8/13、つまり約 62% になります。素晴らしいとは言えません。これは、テストでバグの 40% 近くが見逃されたことを意味します。これは、リリース前チェックを強化する時期が来たことを明確に示しています。
DDR を強化するには、自動テストを改善したり、より徹底的なコード レビューを実施したり、大規模なリリースの前にさらに多くのユーザー受け入れテストを実行したりすることを検討してください。 DDR が優れているほど、ユーザーの満足度は高まり、リリース後の「うーん」という瞬間は少なくなります。
バグ率は、コード内に厄介なバグがどのくらいの頻度で現れるかを測定します。バグ率が高い場合は重大な危険信号となる可能性があり、コードが急いで外に出されているか、まだコツを学んでいる人によって書かれているかのどちらかであることを示しています。業界データによると、経験豊富なチームは通常、コード 1,000 行あたりのバグが 10 個未満であることを目標としています。
あなたのチームが新機能をリリースすると、数時間以内に 15 件のバグが報告されます。このような現象が定期的に発生する場合は、コードのレビューやテストにもっと注意を払う必要がある、または開発者が正しく行うにはさらに時間が必要である可能性があることを示しています。
MTTR は、システムクラッシュ後にチームがいかに早く立ち直れるかにかかっています。
これは災害復旧用のストップウォッチであり、混乱からどれだけ早く立ち直ることができるかを示します。理想的には、低い MTTR が必要です。数時間ではなく数分を考えてください。
あなたのウェブサイトは午後 2 時にクラッシュし、チームは午後 2 時 15 分までにウェブサイトをオンラインに戻しました。これは 15 分の MTTR です。チームが復旧するまでに通常 1 時間かかる場合は、インシデント対応計画を修正する時期が来ている可能性があります。
ベロシティは、スプリント中にチームがどれだけの作業を完了したかを測定します。これは生産性の指標ですが、異なるチーム間で常に一致するわけではないことを忘れないでください。重要なのは、単に数値を比較することではなく、時間の経過とともに速度がどのように変化するかを追跡することです。
最後のスプリントで、チームは 50 ストーリー ポイントを完了しました。このスプリントでは、彼らは 55 点で終了しました。ベロシティが高いということは、チームの調子が上がっていることを意味している可能性があります。あるいは、チームがより簡単なタスクに取り組んでいることを意味している可能性があります。ここでは一貫性に注意してください。
累積フローは、ワークフロー内でタスクが蓄積されている場所を示します。
これをプロジェクトのトラフィック レポートと考えてください。タスクが 1 つのステージで長時間滞留している場合は、ボトルネックが発生しています。
他のタスクはスムーズに進んでいる一方で、「コードレビュー」では多くのタスクが滞っていることに気づきました。これは、物事を進めていくために、より多くのレビュー担当者またはより適切に定義された基準が必要であることを意味する可能性があります。
デプロイメントの頻度は、チームがコードを実稼働環境にプッシュする頻度を追跡します。デプロイメントの頻度が高いということは、一般的にチームが機敏で適応力があることを意味します。速度のために品質を犠牲にしないように注意してください。
あなたのチームは週に 2 回アップデートを展開しています。それらの更新が確実であればそれは良いことですが、各展開でバグが発生する場合は、元に戻して品質に重点を置く時期が来たかもしれません。
キュー時間は、タスクが「To Do」の山に詰まっている場合など、待機状態にある時間を測定します。キュー時間が長いと、タスクが多すぎるなど、チームメンバーが少なすぎるなど、プロセスの非効率性を示す可能性があります。
タスクが何日も QA の承認を待っている場合、それは QA チームが助けを必要としているか、タスクを進めるための基準を合理化する必要があることを示しています。
スコープ完了率は、チームが実行する予定だった作業が実際にどれだけ完了したかを示します。チームが定期的にタスクを未完了のまま放置している場合、それは彼らが噛みきれないほどのことを噛みしめていることを意味している可能性があります。
あなたのチームは、このスプリントで 20 のタスクを完了する予定でしたが、完了したのは 15 個だけでした。このようにスコープ完了率が低い場合は、チームがより現実的な目標を設定するか、より適切に時間を管理する必要があることを示している可能性があります。
追加されたスコープは、スプリントの開始後に新しいタスクが追加される頻度を追跡します。ここでの割合が高い場合は、計画が不十分であること、またはさらに悪いことに、スケジュールやリソースを調整せずにプロジェクトの目標が拡大し続ける場合、範囲のクリープの兆候である可能性があります。
10 個のタスクからスプリントを開始すると、最後にはさらに 5 個のタスクが追加されます。これは範囲が 50% 増加することになります。これは、チームが計画中に作業の範囲を十分に徹底的に調べていないことを意味している可能性があります。
リードタイムは、タスクが作成されてから完了するまでの合計時間を測定します。それはアイデアから実行までの完全な旅のようなものです。通常、リードタイムが短いことはチームが効率的であることを意味しますが、リードタイムが長いことはプロセスの遅延またはボトルネックを示している可能性があります。
機能リクエストが届き、コンセプトから展開までに 2 週間かかります。同様のタスクに 1 週間かかった場合は、承認の遅れやチーム間の引き継ぎが多すぎる可能性があり、何が原因で作業が遅れているのかを調査する時期が来ました。
こちらもお読みください: 変更のリードタイム: DORA メトリクスの詳細とソフトウェア配信への影響
チャーンレートは、コードが書き直された頻度、または書かれた直後に大幅に変更された頻度を追跡します。高いチャーンは、最初のアプローチが完全に正しくなかったか、要件が大きく変化していることを示している可能性があります。
あなたのチームは機能を作成しましたが、最初の実装がニーズを満たしていなかったため、1 週間以内にその半分を書き直す必要がありました。これが繰り返される場合は、計画にもっと時間を費やす必要があるか、最初から要件を明確にする必要があることを示しています。
どの KPI が注目に値するか知りたいですか?チームのパフォーマンスと進捗状況の全体像を把握できるものに焦点を当ててください。以下に注目してください:
コーディング効率: 「これを書いた!」というところから、コードがどのくらい速く、スムーズに流れるか。 「わぁ、うまくいきます!」
コラボレーション指標: よくリハーサルを行ったバンドやシンクロナイズド スイミング チームなど、チームがどれだけうまく同期して演奏しているか。
予測可能性の指標: プロジェクトの結果をどの程度正確に予測できるか。天気予報アプリと同じくらい信頼性の高い予測が可能になります (ただし、より正確です!)。
信頼性指標: コードがどれだけ堅牢であるか、およびテストが重大な問題になる前にそれらの卑劣なバグをどの程度うまく検出できるか。
これらの KPI は、予期せぬ事態を回避し、プロジェクトを順調に進めるのに役立ちます。これらは成功ツールキットの必需品であると考えてください。飾り気のない、良いものだけです。
それでは、要点を以下に示します。KPI は単なる数値ではなく、賢明な意思決定のための秘密兵器です。これは、エンジニアリングの生産性の紆余曲折をプロのように乗り越えるのに役立ちます。さらに、Middleware の DORA メトリクスをミックスに追加すると、無敵のチームが完成します。ミドルウェアは、導入頻度、リードタイム、変更失敗率、平均復旧時間などの DORA 指標を簡単に追跡することで、推測を排除します。
KPI を常に監視し、常に正しい軌道に乗っていることを確認してくれる個人的な相棒がいるようなものです。ミドルウェアを使用すると、問題に対応するだけでなく、問題を予測し、ソフトウェア開発を成功に導くことができます。私たちのオープンソース リポジトリをチェックしてください!
開発者の可能性を引き出すオープンソースのエンジニアリング管理
オープンソース コミュニティに参加してください
ミドルウェア は、エンジニアリング リーダーが DORA メトリクスを使用してチームの有効性を測定および分析できるように設計されたオープンソース ツールです。 DORA メトリクスは、ソフトウェア配信のパフォーマンスと運用効率に関する洞察を提供する 4 つの主要な値のセットです。
それらは次のとおりです:
目次
ソフトウェア開発 KPI (主要業績評価指標) は、コード品質、デプロイ頻度、リードタイムなどの指標を含む、開発プロセスの有効性と効率を評価するために使用される測定可能な値です。 KPI は、特定の目標に向けた進捗状況を評価し、全体的なパフォーマンスを向上させるのに役立ちます。
DORA メトリクスを含む KPI を追跡するには、包括的なパフォーマンス追跡にはミドルウェアを使用し、プロジェクト管理には Jira、コードの分析情報には GitHub を使用します。
以上が5 つの項目で追跡する必要がある上位のソフトウェア開発 KPIの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。