Upgrade to Pro — share decks privately, control downloads, hide ads and more …

開発生産性とどう向き合うか | DMM Meetup #39

開発生産性とどう向き合うか | DMM Meetup #39

Shunsuke Nakao

December 13, 2023
Tweet

More Decks by Shunsuke Nakao

Other Decks in Technology

Transcript

  1. About me 中尾 俊介 合同会社 DMM.com プラットフォーム事業本部 第1開発部 DMM PointClubグループ

    iOS Team Leader @noa4021J @noa4021J Shunsuke Nakao 2021年DMM.com新卒入社。 翌年からiOSテックリードとしてDMMポイントクラブのモバイル開発をリード する傍ら、モバイル開発の開発生産性を最大化する取り組みを行う。
  2. Target Scope-in 本セッションの ターゲット ・開発組織を管理しているミドルマネージャー、チームリーダー ・開発生産性に興味関心を持っているエンジニア・デザイナーなどの  クリエイター ・開発生産性の可視化や向上にコミットしている担当者 本セッションでお話し すること

    Introduction ・事業レベルでの開発生産性との向き合い方 ・事業レベルの開発生産性を明らかにするために何を測るのが良いのか ・DMM PointClubグループでの開発生産性の定義例 ・開発生産性のレイヤー毎の連なり Scope-out 本セッションで話さな いこと ・経営レベルの開発生産性 ・FourKeys, SPACEなどを用いた開発生産性が向上した運用事例
  3. 巷には「開発生産性」を示す定義や方法論が溢れている ・SLOC ・Pull Requests ・Commits ・Deploys Step1. 一事業の開発組織として、開発生産性とどう向き合うか ・Story Point

    ・Cycle Time ・Sprint Burndown ・Increment ・DORA Four Keys ・SPACE ・d/d/d 開発者の作業量 ベロシティ (アジャイル開発) 開発生産性 (Developer Productivity) etc… etc… etc…
  4. 巷には「開発生産性」を示す定義や方法論が溢れている ・SLOC ・Pull Requests ・Commits ・Deploys Step1. 一事業の開発組織として、開発生産性とどう向き合うか ・Story Point

    ・Ticket完了量 ・Cycle Time ・Sprint Burndown ・Four Keys ・SPACE ・d/d/d 開発者の作業量 ベロシティ (アジャイル開発) 開発生産性 (Developer Productivity) etc… etc… etc… どれを測ればいいのか? 🤔
  5. 開発生産性を測ることによって達成したいこと Step1. 一事業の開発組織として、開発生産性とどう向き合うか 開発チーム 事業 顧客 INPUT OUTPUT INPUT OUTPUT

    1. 2. 開発生産性を測ることで ボトルネックを発見 開発チームのアウトプットを 底上げする INPUT OUTPUT
  6. 開発生産性を測ることによって達成したいこと Step1. 一事業の開発組織として、開発生産性とどう向き合うか 開発チーム 事業 顧客 INPUT OUTPUT INPUT OUTPUT

    OUTCOME OUTPUT 1. 2. 事業として、顧客への価値提供の 速度が上がる 顧客満足度、売上といった 「アウトカム」が上がる
  7. 開発生産性を測ることによって達成したいこと Step1. 一事業の開発組織として、開発生産性とどう向き合うか 開発チーム 事業 顧客 INPUT OUTPUT INPUT OUTPUT

    OUTCOME OUTPUT INPUT OUTPUT Input/Outputの入出力性能が、 組織の能力=ケイパビリティ 開発組織にとってのケイパビリティが、開発生産性
  8. Step1. 一事業の開発組織として、開発生産性とどう向き合うか 事業責任者の視点 事業責任者(BM)・プロダクトマネージャ(PdM) 開発組織の視点 https://speakerdeck.com/i35_267/multifaceted-touchpoints-of-development-productivity?slide=8 開発生産性の多角的接点〜1,000名のクリエイター組織 × 開発生産性〜 /

    Multifaceted touchpoints of development productivity ケイパビリティはレイヤーによって視点が異なる Input: 人件費単価, Output: 売上/利益 ケイパビリティの視点:費用対効果と向き合う 「この事業にいくら投資するとどれだけの価値を生み出せるか」 ミドルマネージャ・開発メンバー Input: 工数/工期, Output:リリースした成果物 ケイパビリティの視点:開発生産性に向き合う 「この開発組織は工数に対してどれだけ"期待通りの成果物"を リリースできるか」
  9. 開発チーム INPUT OUTPUT 事業 顧客 INPUT OUTPUT Step2. 開発組織のケイパビリティを示すために、何をどう測るか 開発組織のケイパビリティの視点は、開発生産性に向き合う

    「工数に対して期待通りの成果物をどれだけリリースできるか」 を事業責任者に対して示す 開発者の作業量?​ ベロシティ? SLI/SLO? FourKeys, SPACE? 🤔 どうすれば示せる?
  10. 「ロジックモデル」を用いてI/Oをプロットする アウトカム 品質(Quality) 時間(Delivery) 予算(Cost) スコープ(Scope) 変更のリードタイ ム デプロイ頻度 Story

    Point消化数 アウトプット SLI/SLO 開発組織の出力 etc… アクティビティ 個人の活動量 etc… 開発者の能力 コミュニケーショ ン エコシステム 技術的負債 etc… 作業工数 資源 生産性に影響する要因 開発者個人の活動→事業へのアウトカムに至るまでのフロー コーディング Story Point消化数 コードレビュー 保守・運用作業 開発組織のケイパビリティ Step2. 開発組織のケイパビリティを示すために、何をどう測るか
  11. 「ロジックモデル」を用いてI/Oをプロットする コーディング Story Point消化数 コードレビュー 保守・運用作業 変更のリードタイ ム デプロイ頻度 Story

    Point消化数 SLI/SLO アウトプット 開発組織の出力 etc… アクティビティ 個人の活動量 etc… 開発者の能力 コミュニケーショ ン エコシステム 技術的負債 etc… 作業工数 資源 生産性に影響する要因 開発者個人の活動→事業へのアウトカムに至るまでのフロー アウトカム 品質(Quality) 時間(Delivery) 予算(Cost) スコープ(Scope) 開 発 速 度 事業責任者の視点はここ 「この機能(品質・スコープ)を出すには、 どれくらいの工期(時間)と工数(予算)で出せますか?」 開発組織のケイパビリティ Step2. 開発組織のケイパビリティを示すために、何をどう測るか
  12. 「ロジックモデル」を用いてI/Oをプロットする アウトプット etc… アクティビティ etc… etc… 資源 開発者個人の活動→事業へのアウトカムに至るまでのフロー アウトカム 品質(Quality)

    時間(Delivery) 予算(Cost) スコープ(Scope) 開発組織のケイパビリティ 開 発 速 度 変更のリードタイ ム デプロイ頻度 Story Point消化数 SLI/SLO 開発組織の出力 コーディング Story Point消化数 コードレビュー 保守・運用作業 個人の活動量 開発者の能力 コミュニケーショ ン エコシステム 技術的負債 作業工数 生産性に影響する要因 開発組織のミドルマネージャはこの問いに「ロジカル」かつ「定量的に」答えるため に、ケイパビリティとアウトプットの因果関係を整理・取捨選択する必要がある Step2. 開発組織のケイパビリティを示すために、何をどう測るか
  13. 「ロジックモデル」を用いてI/Oをプロットする アウトプット etc… アクティビティ etc… etc… 資源 開発者個人の活動→事業へのアウトカムに至るまでのフロー アウトカム 品質(Quality)

    時間(Delivery) 予算(Cost) スコープ(Scope) 開発組織のケイパビリティ 開 発 速 度 変更のリードタイ ム デプロイ頻度 Story Point消化数 SLI/SLO 開発組織の出力 コーディング Story Point消化数 コードレビュー 保守・運用作業 個人の活動量 開発者の能力 コミュニケーショ ン エコシステム 技術的負債 作業工数 生産性に影響する要因 Step2. 開発組織のケイパビリティを示すために、何をどう測るか 自組織のケイパビリティを可能な限り「操作可能」「説明可能」に するためにアウトプットが測られる。 「アウトプットの改善によってケイパビリティが向上したこと」を 説明できる必要がある。
  14. 1. 2. 3. 開発組織のケイパビリティ「工数に対して期待通りの成果物をどれ だけリリースできるか」という問いに答える​ ​ 開発組織のミドルマネージャは、自組織のケイパビリティの説明 責任を果たす​ ​ 開発生産性を示す指標(FourKeys,

    SPACE etc)によって、アウト プットの改善によってケイパビリティが向上する仕組みが構築さ れる必要がある Step2: 開発組織のケイパビリティを示すために、何をどう測るか
  15. Full Cycle Developers フルサイクルエンジニアリングは、ソフトウェア開発における一連のライフサイクル … 設計、開発、 テスト、デプロイ、運用、サポートの全ての責任をデベロッパーが持ち、それらの全ての作業を一貫し て行うという開発モデル。DMM PointClubグループでは事業戦略に沿った施策(戦術)の立案、要件定 義などの超上流工程もエンジニアが実行する。

    BML Loop エリック・リース著「The Lean Startup」の中で紹介されている"Build-Measure-Learn"(BML)という学習 プロセス。新しい製品やサービスを開発しながら、顧客のフィードバックを迅速に獲得し、そのフィー ドバックを用いて製品を逐次改良していくフィードバックループ。 The Lean Startup: How Constant Innovation Creates Radically Successful Businesses Step3. DMM PointClubの開発生産性の定義例 https://netflixtechblog.com/full-cycle-developers-at-netflix-a08c31f83249 By combining all of these ideas together, we arrived at a model where a development team, equipped with amazing developer productivity tools, is responsible for the full software life cycle: design, development, test, deploy, operate, and support.
  16. ロジックモデルでのプロット アウトカム 品質 時間 予算 スコープ 工数 予実 アウトプット SLI/SLO

    開発組織の出力 アクティビティ 個人の活動量 開発者の能力 コミュニケーショ ン エコシステム 技術的負債 etc… 作業工数 資源 生産性に影響する要因 DMM PointClubでの開発生産性定義 コーディング Story Point消化数 コードレビュー 保守・運用作業 開発組織のケイパビリティ Step3. DMM PointClubの開発生産性の定義例 Time to Market Ability to Innovate リフト予実 ドキュメント作成 市場調査・分析 Opportunity focused Metrics
  17. ロジックモデルでのプロット アウトカム 品質 時間 予算 スコープ 工数 予実 アウトプット SLI/SLO

    開発組織の出力 アクティビティ 個人の活動量 開発者の能力 コミュニケーショ ン エコシステム 技術的負債 etc… 作業工数 資源 生産性に影響する要因 DMM PointClubでの開発生産性定義 コーディング Story Point消 化数 コードレビュ ー 保守・運用作 業 開発組織のケイパビリティ Step2. 開発組織のケイパビリティを示すために、何をどう測るか リフト予実 ドキュメント 作成 市場調査・分 析 変更の リードタイム デプロイ頻度 Story Point 消化数 OFM ※ Time to Market Ability to Innovate Evidence-based management https://www.scrum.org/resources/evidence-based-management エビデンスベースドマネジメント(EBM: Evidence-Based Management)は、組織 が不確実な条件のもとで顧客の成果や、組織の能⼒、およびビジネスの結果を継 続的に改善するのに役⽴つ経験的アプローチである。 https://www.scrum.org/resources/evidence-based-management-guide EBMの中で語られている 4つの重要価値領域(KVA: Key Value Areas)のうち、 DMM PointClubでは組織的能力を示す2領域 ・Time to Market(T2M)- 市場に出すまでの時間 ・Ability to Innovate(A2I)- 新しい価値を提供する能力 を開発組織のケイパビリティとして採用。
  18. ロジックモデルでのプロット アウトカム 品質 時間 予算 スコープ アウトプット SLI/SLO 開発組織の出力 アクティビティ

    個人の活動量 開発者の能力 コミュニケーショ ン エコシステム 技術的負債 etc… 作業工数 資源 生産性に影響する要因 DMM PointClubでの開発生産性定義 コーディング Story Point消化数 コードレビュー 保守・運用作業 開発組織のケイパビリティ Step3. DMM PointClubの開発生産性の定義例 リフト予実 ドキュメント作成 市場調査・分析 Time to Market Ability to Innovate 工数 予実 Opportunity focused Metrics 工数予実 0 4 8 12 見積もり工数 実工数 実工期(=T2M) 4 6 10 Opportunity-focused Metrics 0 4 8 12 見積もり工数 実工数 実工期(=T2M) 4 4 5 https://www.mckinsey.com/industries/technology-media-and-telecommunications/our-insights/yes-you-can- measure-software-developer-productivity 現実 理想 On top of these already powerful metrics, our approach seeks to identify what can be done to improve how products are delivered and what those improvements are worth, without the need for heavy instrumentation. Complementing DORA and SPACE metrics with opportunity-focused metrics can create an end-to-end view of software developer productivity (Exhibit 1). 理想と現実とのギャップを可視化する 理想と現実とのギャップは何に起因しているかを 定量指標を用いて発見する
  19. Conclusion Step1 開発生産性をどう捉えるか Step2 開発組織のケイパビリティを どう測るか Step3 DMM PointClubの 開発生産性の定義例

    開発組織の ケイパビリティ (力量/能力) を測る 「操作可能」 「説明可能」 ケイパビリティを可能な限り にするためにアウトプットを測る。 EBM(T2M, A2I)に基づいた ケイパビリティ定義 工数予実によって理想と現 実のギャップを可視化する