Slide 1

Slide 1 text

開発生産性とどう向き合うか DMM Meetup #39 December 13, 2023 Shunsuke Nakao @noa4021J

Slide 2

Slide 2 text

About me 中尾 俊介 合同会社 DMM.com プラットフォーム事業本部 第1開発部 DMM PointClubグループ iOS Team Leader @noa4021J @noa4021J Shunsuke Nakao 2021年DMM.com新卒入社。 翌年からiOSテックリードとしてDMMポイントクラブのモバイル開発をリード する傍ら、モバイル開発の開発生産性を最大化する取り組みを行う。

Slide 3

Slide 3 text

Target Scope-in 本セッションの ターゲット ・開発組織を管理しているミドルマネージャー、チームリーダー ・開発生産性に興味関心を持っているエンジニア・デザイナーなどの  クリエイター ・開発生産性の可視化や向上にコミットしている担当者 本セッションでお話し すること Introduction ・事業レベルでの開発生産性との向き合い方 ・事業レベルの開発生産性を明らかにするために何を測るのが良いのか ・DMM PointClubグループでの開発生産性の定義例 ・開発生産性のレイヤー毎の連なり Scope-out 本セッションで話さな いこと ・経営レベルの開発生産性 ・FourKeys, SPACEなどを用いた開発生産性が向上した運用事例

Slide 4

Slide 4 text

Introduction 開発生産性をどう捉えるか 開発組織のケイパビリティを示すために、何をどう測るか DMM PointClubの開発生産性の定義例 Step1 Step2 Step3

Slide 5

Slide 5 text

開発生産性をどう捉えるか Step1

Slide 6

Slide 6 text

巷には「開発生産性」を示す定義や方法論が溢れている ・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…

Slide 7

Slide 7 text

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

Slide 8

Slide 8 text

Step1. 一事業の開発組織として、開発生産性とどう向き合うか 「開発生産性」とはまず何なのかを確認する LeanとDevOpsの科学 - 「成熟度」ではなく「ケイパビリティ」に焦点を テクノロジー部門の管理者たちは、市場で優位に立つため、ソフトウェアを迅速か つ確実にデリバリしなければならない。(中略)この場合に成功のカギになるの が、組織の「成熟度」ではなくケイパビリティ(組織的な能力あるいは機能)に焦 点を当てた、状況の適切な把握とそれを可能にする指標の測定である。

Slide 9

Slide 9 text

Step1. 一事業の開発組織として、開発生産性とどう向き合うか 「開発生産性」とはまず何なのかを確認する LeanとDevOpsの科学 - 「成熟度」ではなく「ケイパビリティ」に焦点を テクノロジー部門の管理者たちは、市場で優位に立つため、ソフトウェアを迅速か つ確実にデリバリしなければならない。(中略)この場合に成功のカギになるの が、組織の「成熟度」ではなくケイパビリティ(組織的な能力あるいは機能)に焦 点を当てた、状況の適切な把握とそれを可能にする指標の測定である。 Q. 開発生産性を測ることで、何を達成したい?

Slide 10

Slide 10 text

Step1. 一事業の開発組織として、開発生産性とどう向き合うか 「開発生産性」とはまず何なのかを確認する LeanとDevOpsの科学 - 「成熟度」ではなく「ケイパビリティ」に焦点を テクノロジー部門の管理者たちは、市場で優位に立つため、ソフトウェアを迅速か つ確実にデリバリしなければならない。(中略)この場合に成功のカギになるの が、組織の「成熟度」ではなくケイパビリティ(組織的な能力あるいは機能)に焦 点を当てた、状況の適切な把握とそれを可能にする指標の測定である。 Q. 開発生産性を測ることで、何を達成したい? テクノロジー部門の管理者たちは、市場で優位に立つため、ソフトウェアを迅速か つ確実にデリバリしなければならない。

Slide 11

Slide 11 text

Step1. 一事業の開発組織として、開発生産性とどう向き合うか 「開発生産性」とはまず何なのかを確認する LeanとDevOpsの科学 - 「成熟度」ではなく「ケイパビリティ」に焦点を テクノロジー部門の管理者たちは、市場で優位に立つため、ソフトウェアを迅速か つ確実にデリバリしなければならない。(中略)この場合に成功のカギになるの が、組織の「成熟度」ではなくケイパビリティ(組織的な能力あるいは機能)に焦 点を当てた、状況の適切な把握とそれを可能にする指標の測定である。 Q. 開発生産性を測ることで、何を達成したい? Q. 開発生産性を測ることで、何を達成したい? A.「自分たちの事業が」 「市場で優位に立つために」 「ソフトウェアを迅速に開発し」 「確実に価値を届けたい」

Slide 12

Slide 12 text

開発生産性を測ることによって達成したいこと Step1. 一事業の開発組織として、開発生産性とどう向き合うか 開発チーム 事業 顧客 INPUT OUTPUT OUTCOME OUTPUT

Slide 13

Slide 13 text

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

Slide 14

Slide 14 text

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

Slide 15

Slide 15 text

開発生産性を測ることによって達成したいこと Step1. 一事業の開発組織として、開発生産性とどう向き合うか 開発チーム 事業 顧客 INPUT OUTPUT INPUT OUTPUT OUTCOME OUTPUT INPUT OUTPUT Input/Outputの入出力性能が、 組織の能力=ケイパビリティ 開発組織にとってのケイパビリティが、開発生産性

Slide 16

Slide 16 text

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:リリースした成果物 ケイパビリティの視点:開発生産性に向き合う 「この開発組織は工数に対してどれだけ"期待通りの成果物"を リリースできるか」

Slide 17

Slide 17 text

1. 2. 3. 開発生産性は事業の「技術面における競争優位性」を 獲得するために測られる 開発生産性には開発組織のケイパビリティ(力量/能力)を測る ケイパビリティはレイヤーによって視点が変わる​ 事業は費用対効果、開発組織は開発生産性と向き合う Step1: 開発生産性をどう捉えるか

Slide 18

Slide 18 text

開発組織のケイパビリティを示すために、 何をどう測るか Step2

Slide 19

Slide 19 text

開発チーム INPUT OUTPUT 事業 顧客 INPUT OUTPUT Step2. 開発組織のケイパビリティを示すために、何をどう測るか 開発組織のケイパビリティの視点は、開発生産性に向き合う 「工数に対して期待通りの成果物をどれだけリリースできるか」 を事業責任者に対して示す

Slide 20

Slide 20 text

開発チーム INPUT OUTPUT 事業 顧客 INPUT OUTPUT Step2. 開発組織のケイパビリティを示すために、何をどう測るか 開発組織のケイパビリティの視点は、開発生産性に向き合う 「工数に対して期待通りの成果物をどれだけリリースできるか」 を事業責任者に対して示す 開発者の作業量?​ ベロシティ? SLI/SLO? FourKeys, SPACE? 🤔 どうすれば示せる?

Slide 21

Slide 21 text

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

Slide 22

Slide 22 text

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

Slide 23

Slide 23 text

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

Slide 24

Slide 24 text

「ロジックモデル」を用いてI/Oをプロットする アウトプット etc… アクティビティ etc… etc… 資源 開発者個人の活動→事業へのアウトカムに至るまでのフロー アウトカム 品質(Quality) 時間(Delivery) 予算(Cost) スコープ(Scope) 開発組織のケイパビリティ 開 発 速 度 変更のリードタイ ム デプロイ頻度 Story Point消化数 SLI/SLO 開発組織の出力 コーディング Story Point消化数 コードレビュー 保守・運用作業 個人の活動量 開発者の能力 コミュニケーショ ン エコシステム 技術的負債 作業工数 生産性に影響する要因 Step2. 開発組織のケイパビリティを示すために、何をどう測るか 自組織のケイパビリティを可能な限り「操作可能」「説明可能」に するためにアウトプットが測られる。 「アウトプットの改善によってケイパビリティが向上したこと」を 説明できる必要がある。

Slide 25

Slide 25 text

1. 2. 3. 開発組織のケイパビリティ「工数に対して期待通りの成果物をどれ だけリリースできるか」という問いに答える​ ​ 開発組織のミドルマネージャは、自組織のケイパビリティの説明 責任を果たす​ ​ 開発生産性を示す指標(FourKeys, SPACE etc)によって、アウト プットの改善によってケイパビリティが向上する仕組みが構築さ れる必要がある Step2: 開発組織のケイパビリティを示すために、何をどう測るか

Slide 26

Slide 26 text

DMM PointClubの 開発生産性の定義例 Step3

Slide 27

Slide 27 text

DMMの新しいポイントプラットフォームアプリ 公式LP: https://lp.pointclub.dmm.com/ Step3. DMM PointClubの開発生産性の定義例 DMMポイントを「稼いで」「貯める」 DMMの「お得な商品」や「セール」を 見つける 「DMMのすべてをお得に」 マンスリー ミッション 毎日チャレンジ ゲーム チケット くじ ミッション ガチャ 電子書籍 アニメ・映画 物販 PCゲーム etc… etc…

Slide 28

Slide 28 text

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.

Slide 29

Slide 29 text

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

Slide 30

Slide 30 text

ロジックモデルでのプロット アウトカム 品質 時間 予算 スコープ 工数 予実 アウトプット 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)- 新しい価値を提供する能力 を開発組織のケイパビリティとして採用。

Slide 31

Slide 31 text

ロジックモデルでのプロット アウトカム 品質 時間 予算 スコープ アウトプット 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). 理想と現実とのギャップを可視化する 理想と現実とのギャップは何に起因しているかを 定量指標を用いて発見する

Slide 32

Slide 32 text

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

Slide 33

Slide 33 text

No content