What We Learned and What We Didn't from Our Efforts to Visualize Productivity
by
inouehi
Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
Slide 1
Slide 1 text
チームのアジリティを上げよう! 否、〇〇を上げよう! 開発生産性の可視化に取り組んでみて わかったこと、わからないこと 2023/09/16 スクラムフェス三河
Slide 2
Slide 2 text
2 ● Hiroki Inoue ● Software Engineer ● Engineering Manager @ WHITEPLUS, Inc. About Me
Slide 3
Slide 3 text
3 1. 開発生産性の可視化に取り組むか検討している方 2. 開発生産性の可視化の運用を試行錯誤している方 3. 開発生産性の可視化に悩めるチームを手助けし、エンジニアリングプロセスの発展に関わりたい方 Target Audience
Slide 4
Slide 4 text
4 アジェンダ はじめに 開発生産性の可視化を始める前に考えていたこと 01 02 試行錯誤してきたこと 試行錯誤してきた中でわかったこと 03 04 わからないこと 05 今後のこと 06
Slide 5
Slide 5 text
5 はじめに
Slide 6
Slide 6 text
6 私たちは数カ月前から、開発生産性を可視化し、得られたフィードバックからシステム開発プロセス等 を見直す運用をスクラムにインストールし、試行錯誤してきました。当初持っていた期待、課題感は以 下のようなものでした。 ● プロダクト、事業の成長速度を上げたい。 そのために開発生産性ののび代、ボトルネックが知りたい。 ● 開発プロセスに対する漠然とした不安。 ○ 雰囲気でスプリント振り返りをしてしまってないか。 ○ 雰囲気でマネジメントしてしまってないか。 ○ 実際のところうまくいっているのか、うまくいっていないのか。 ● エンジニアの内省を支援したい。 背景
Slide 7
Slide 7 text
7 取り組みを始める前、様々な疑問がありましたが、しばらく取り組んできた結果今では、生産性可視化 の正解や普遍的な方法論が必ずしもあるわけではなく各社が各々のコンテクストにおける最適解を模索 しているように感じています。私は書籍や勉強会から他社の取り組みに学びつつ、自身のチームでも試 行してきました。 背景
Slide 8
Slide 8 text
8 私たちの取り組みには以下のような前提があります。 ● スクラムで開発を行っている。 ● 計測、評価、改善活動は5名程度のチームごとに行っている。 ● 経営層からのトップダウンではなくて、エンジニア組織からのボトムアップでスタートした。 ● 開発生産性の向上を主導するチームがあるのではなく、開発チーム内で行っている。 ○ 可視化を主導するのはEMの役割の一つ。 ○ 数値を見るだけでなく開発プロセスに参加し、定性的な情報も体感している。 ○ 数値はチームの皆が見る。 ○ 改善活動はチームで、あるいはエンジニア組織全体で実行する。 前提
Slide 9
Slide 9 text
9 以上を踏まえ、開発生産性の可視化及び改善活動を通じてわかったこと、わからないことを整理し、 チームの学びを共有します。 セッションの概要 Learn and Grow by Team:チームの学びと成長 Beginner 20 Mins
Slide 10
Slide 10 text
10 開発生産性の可視化を 始める前に考えていたこと
Slide 11
Slide 11 text
11 ● 開発生産性を定量的に計測することに意味はあるのか ● あるとすればどのような意味があるのか ● 何を計測し ● どのように評価し ● そこからどのような発見を抽出できるのか 疑問
Slide 12
Slide 12 text
12 ってかそもそもの話... 生産性って何!? 疑問
Slide 13
Slide 13 text
13 まずもって単位がわからず掴みどころがない… 疑問
Slide 14
Slide 14 text
14 まずもって単位がわからず掴みどころがない… ⇨生産性可視化を推進した私自身がそれに対して懐疑的だった。 疑問
Slide 15
Slide 15 text
15 試行錯誤してきたこと
Slide 16
Slide 16 text
16 開発生産性を定量的に計測することに意味はあるのか
Slide 17
Slide 17 text
17 わからん。 開発生産性を定量的に計測することに意味はあるのか
Slide 18
Slide 18 text
18 わからん。 ならば、やってみよう。 開発生産性を定量的に計測することに意味はあるのか
Slide 19
Slide 19 text
19 何を計測すべきか
Slide 20
Slide 20 text
20 わからん。。 何を計測すべきか
Slide 21
Slide 21 text
21 ならば、調べてみよう。 何を計測すべきか
Slide 22
Slide 22 text
22 ● ドキュメントにあたる ○ Accelerate ● 勉強会に参加する 情報収集
Slide 23
Slide 23 text
23 Four Keys[1]で始めてみよう。 何を計測すべきか 1. デプロイの頻度, 変更のリードタイム, 変更障害率, サービス復元時間。State of DevOps 2021では運用パフォーマンス指標である「信頼 性」が5つめのメトリクスとして追加された。
Slide 24
Slide 24 text
24 ● GitHubやJira等を利用して開発するのが一般的。 ● そこには開発に関する情報が蓄積されている。 ● GitHubやJiraから情報を取得できる。 どのように計測するのか
Slide 25
Slide 25 text
25 ● 分析ツールを自作する。 ● Saasを利用する。 どのように計測するのか
Slide 26
Slide 26 text
26 ● 分析ツールを自作する。 ● Saasを利用する。 Findy Team+ Offers MGR どのように計測するのか
Slide 27
Slide 27 text
27 ● Four Keysすべてを追いかけない。 ● ガチガチに目標を固め過ぎない。 スモールスタート
Slide 28
Slide 28 text
28 ● デプロイの頻度 ← 変更のリードタイムへの依存関係がありそう ● 変更のリードタイム ← 更に分解できる ● 変更障害率 ← 課題感がないのでスコープアウト ● サービス復元時間 ← 課題感がないのでスコープアウト スモールスタート
Slide 29
Slide 29 text
29 ● デプロイの頻度 ← 変更のリードタイムへの依存関係がありそう ● 変更のリードタイム ← 更に分解できる ○ 開発する ○ レビューする ← ここからやってみよう ○ 修正を完了する ○ マージする ● 変更障害率 ← 課題感がないのでスコープアウト ● サービス復元時間 ← 課題感がないのでスコープアウト スモールスタート
Slide 30
Slide 30 text
30 ● レビューの早さについては最初から具体的目標を持ち、その他は観察することからはじめた。 ● 徐々に見る観点を増やした。 ○ レビューの早さ、修正の早さ、開発の早さ、PRサイズ、アクティビティ量、デプロイ頻度... スモールスタート
Slide 31
Slide 31 text
31 レビューを早くするためにレビュイーとレビュアーがすべきことを啓蒙 ● レビュアーはレビューを優先的に行う。 ● レビューしやすいPRを作る。 ● ガイドラインを参考にする。 いかにして早めるか?を言語化する
Slide 32
Slide 32 text
レビューを早くするためにレビュイーとレビュアーがすべきことを啓蒙 ● レビューに至るまでのコミュニケーション ○ 要所を相談してから進める。 ○ モブ設計により大きな認識のズレを無くしておく。 ○ レビューをスムーズにする前提知識を事前に周知する。 ● レビューにおけるコミュニケーション ○ 指摘のトーンや背景を伝える。 ○ 参考資料やサンプルコードを示す。 ○ 適宜口頭で説明する。 32 いかにして早めるか?を言語化する
Slide 33
Slide 33 text
33 チームとして学びを蓄積するため、スクラムイベントに組み込む。 ● スプリントレトロスペクティブの前に計測値を確認する。 ● 推奨するプラクティスも繰り返し確認し、意識に浸透させる。 スクラムイベントに組み込む
Slide 34
Slide 34 text
34 1on1でも活用する。 スクラムイベントに組み込む
Slide 35
Slide 35 text
35 レビューの着手が早くなった。 みんな偉い👏 しばらく試してみると…
Slide 36
Slide 36 text
36 レビューの着手が早くなった。 みんな偉い👏 そして修正を完了するまでの(レビュー〜アプルーブまでの)時間等にも目を向け始める。 しばらく試してみると…
Slide 37
Slide 37 text
37 ● デプロイの頻度 ● 変更のリードタイム ○ 開発する ← ここもやってみよう ○ レビューする ← ここからやってみよう ○ 修正を完了する ← ここもやってみよう ○ マージする ● 変更障害率 ● サービス復元時間 次のステップ
Slide 38
Slide 38 text
38 PRサイズを小さくしよう。 次のステップ
Slide 39
Slide 39 text
39 PRサイズを小さくしよう。 言うだけでは変化は起きず… PRサイズを小さくする
Slide 40
Slide 40 text
40 PRサイズを小さくしよう。 言うだけでは変化は起きず… それではと、具体的な方法を示した。 ● 1つのPRに含む変更意図は1つにする。 ○ リファクタ、不具合修正、フィーチャーのような単位で分ける。 ● フィーチャーは更に分解できる。例えば、レイヤー毎に分ける。 ○ モブ設計と併用することで手戻りを防ぐ。 ● 変更行数200~400, ファイル数10を目安に分割する。 ○ (正直なところ手応えなし) ● Reactのコンポーネント単位、削除ならエンドポイント単位など PRサイズを小さくする
Slide 41
Slide 41 text
41 PRサイズを小さくしよう。 言うだけでは変化は起きず… それではと、具体的な方法を示した。 それでも大きな変化を感じることはできず… PRサイズを小さくする
Slide 42
Slide 42 text
42 PRサイズを小さくしよう。 言うだけでは変化は起きず… それではと、具体的な方法を示した。 それでも大きな変化を感じることはできず… レビュアーとして辛さを感じるPRサイズをヒアリングした。(自分事化) PRサイズを小さくする
Slide 43
Slide 43 text
43 PRサイズを小さくしよう。 言うだけでは変化は起きず… それではと、具体的な方法を示した。 それでも大きな変化を感じることはできず… レビュアーとして辛さを感じるPRサイズをヒアリングした。(自分事化) 慣性を少し強めた。 ● レビューで指摘する。 ● 具体的な目標値を設定する。 ● スプリント振り返りで話す。 PRサイズを小さくする
Slide 44
Slide 44 text
44 注意事項 ● レビューの数が増える。 ○ レビューを早く行うこととセットで取り組まないと結局詰まる。 PRサイズを小さくする
Slide 45
Slide 45 text
45 注意事項 ● レビューの数が増える。 ○ レビューを早く行うこととセットで取り組まないと結局詰まる。 ● PRを細かく分けると全体が見えにくくなる。 ○ 最初に設計しておくとスムーズ。 PRサイズを小さくする
Slide 46
Slide 46 text
46 注意事項 ● レビューの数が増える。 ○ レビューを早く行うこととセットで取り組まないと結局詰まる。 ● PRを細かく分けると全体が見えにくくなる。 ○ 最初に設計しておくとスムーズ。 ● PRサイズの目安(例えば、変更行数200~400)が自組織に当てはまるか評価すべき。 ○ 弊チームの場合、行数よりもむしろファイル数を気にする声が多かった。 ○ 適正サイズは恐らくコンテクスト(言語、アーキテクチャ etc.)に依存する。 PRサイズを小さくする
Slide 47
Slide 47 text
47 ● ガイドライン ● 雛形 ● ADR ● ペアプロ ● オンデマンドの支援 開発における迷いを減らす
Slide 48
Slide 48 text
48 レビューの分担を調整する ● ナレッジ共有の役割を終えたレビュアーをアンアサイン ● ボトルネックなっているレビュアーの業務調整やアンアサイン ● レビュアーの分散化 品質保証 ナレッジ 共有
Slide 49
Slide 49 text
49 ● 数値の差異がディスカッションの契機になる。 ● 他チームを観察し、プラクティスを取り入れる。 チーム間交流
Slide 50
Slide 50 text
50 ところで
Slide 51
Slide 51 text
51 ● 環境 ○ 開発プロセス ○ 既存システムの保守性 ○ 開発・運用環境[1] ○ 開発外業務[2]の多寡 ● 人 ○ ドメイン知識 ○ 技術力 ○ モチベーション 生産性に影響を与える要素 1. CI/CD、型付け、静的解析、フィーチャートグル、ChatOps、オブザーバビリティといった類の話。 2. コードの生成に直接的につながらない業務。間接業務、見積り、照会、障害対応等。
Slide 52
Slide 52 text
52 ● 環境 ○ 開発プロセス ○ 既存システムの保守性 ○ 開発・運用環境 ○ 開発外業務の多寡 ● 人 ○ ドメイン知識 ○ 技術力 ○ モチベーション 生産性に影響を与える要素
Slide 53
Slide 53 text
53 ● 環境 ○ 開発プロセス ○ 既存システムの保守性 ○ 開発・運用環境 ○ 開発外業務の多寡 ● 人 ○ ドメイン知識 ○ 技術力 ○ モチベーション 生産性に影響を与える要素
Slide 54
Slide 54 text
54 ● 不要コードの削除 ● リファクタリング ● DDDによる整理 ● 静的解析の更なる活用(レベル上げ、カスタムルール、ツール追加) 保守性を高める
Slide 55
Slide 55 text
55 ● GitHub Copilot導入 ● ChatGPT導入 ● ビルド時間の短縮 ● 循環的複雑度の計測 開発・運用環境を改善する
Slide 56
Slide 56 text
56 ● ドキュメントやツールに働かせる。 ● 業務の交通整理を行う。 ● 設計(障害耐性、復旧容易性、理解容易性)改善を目指す。 ● 開発外業務の多くをEMが巻き取りつつ、一部負荷を平準化しつつメンバーに渡す。 開発外業務をスリムにする
Slide 57
Slide 57 text
57 ● 現場見学 ● インプット、アウトプットの機会提供 ● ナレッジ共有の機会提供 ● ペア・モブプロ(設計) ● レビュー ● ディスカッション ● 勉強会 ● ドキュメント整備 人を支援する
Slide 58
Slide 58 text
58 試行錯誤してきた中で わかったこと
Slide 59
Slide 59 text
59 生産性とはなんなのか 3つのレベルで生産性を捉えるという考え方がある。[1] 1. 仕事量の生産性 2. 期待付加価値の生産性 3. 実現付加価値の生産性 1. 大規模言語モデル時代の開発生産性(hirokidaichi)
Slide 60
Slide 60 text
60 生産性とはなんなのか 仕事量の生産性を言い換えると、”開発の成果物を作る能力”と解釈。 1. 仕事量の生産性 2. 期待付加価値の生産性 3. 実現付加価値の生産性
Slide 61
Slide 61 text
61 生産性とはなんなのか 仕事量の生産性を言い換えると、”開発の成果物を作る能力”と解釈。 “開発の成果物”とは”動くシステム”と言えそう。
Slide 62
Slide 62 text
62 生産性とはなんなのか 仕事量の生産性を言い換えると、”開発の成果物を作る能力”と解釈。 “開発の成果物”とは”動くシステム”と言えそう。 “仕事量”とは”動くシステムの量”と言えそう。
Slide 63
Slide 63 text
63 生産性とはなんなのか 仕事量の生産性を言い換えると、”開発の成果物を作る能力”と解釈。 “開発の成果物”とは”動くシステム”と言えそう。 “仕事量”とは”動くシステムの量”と言えそう。 “仕事量の生産性”とは”動くシステムの量やそれを作るのにかかる時間の多寡”と考えられそう。
Slide 64
Slide 64 text
64 生産性とはなんなのか 仕事量の生産性を言い換えると、”開発の成果物を作る能力”と解釈。 “開発の成果物”とは”動くシステム”と言えそう。 “仕事量”とは”動くシステムの量”と言えそう。 “仕事量の生産性”とは”動くシステムの量やそれを作るのにかかる時間の多寡”と考えられそう。 ではそれをどう測るのか?
Slide 65
Slide 65 text
65 生産性とはなんなのか 仕事量の生産性を言い換えると、”開発の成果物を作る能力”と解釈。 “開発の成果物”とは”動くシステム”と言えそう。 “仕事量”とは”動くシステムの量”と言えそう。 “仕事量の生産性”とは”動くシステムの量やそれを作るのにかかる時間の多寡”と考えられそう。 ではそれをどう測るのか? 重さ、長さ、速さ、体積の様に何らかの単位で括って認識する必要がある。
Slide 66
Slide 66 text
66 生産性とはなんなのか 仕事量の生産性を言い換えると、”開発の成果物を作る能力”と解釈。 “開発の成果物”とは”動くシステム”と言えそう。 “仕事量”とは”動くシステムの量”と言えそう。 “仕事量の生産性”とは”動くシステムの量やそれを作るのにかかる時間の多寡”と考えられそう。 ではそれをどう測るのか? 重さ、長さ、速さ、体積の様に何らかの単位で括って認識する必要がある。 そこで現状広く認知されているのがFour Keysという考え方。
Slide 67
Slide 67 text
67 生産性とはなんなのか 仕事量の生産性を言い換えると、”開発の成果物を作る能力”と解釈。 “開発の成果物”とは”動くシステム”と言えそう。 “仕事量”とは”動くシステムの量”と言えそう。 “仕事量の生産性”とは”動くシステムの量やそれを作るのにかかる時間の多寡”と考えられそう。 ではそれをどう測るのか? 重さ、長さ、速さ、体積の様に何らかの単位で括って認識する必要がある。 そこで現状広く認知されているのがFour Keysという考え方。 Four Keysが良好であることを以って生産性が高いとみなしましょうという合意が広まっている。
Slide 68
Slide 68 text
68 生産性とはなんなのか 1. https://cloud.google.com/blog/ja/products/gcp/using-the-four-keys-to-measure-your-devops-performance Four Keys[1] ● デプロイの頻度 … 組織による正常な本番環境へのリリースの頻度 ● 変更のリードタイム … commit から本番環境稼働までの所要時間 ● 変更障害率 … デプロイが原因で本番環境で障害が発生する割合(%) ● サービス復元時間 … 組織が本番環境での障害から回復するのにかかる時間
Slide 69
Slide 69 text
69 生産性とはなんなのか Four Keysが含意するものに差異がありうる。例えば、 ● デプロイの頻度 … 計測の都合によるカウント方法の差異 ● 変更のリードタイム … commitするタイミングの差異 … 計算方法の差異 … PRの難易度の差異 … 製品特性による開発プロセスの差異
Slide 70
Slide 70 text
70 生産性とはなんなのか Four Keysが含意するものに差異がありうる。例えば、 ● デプロイの頻度 … 計測の都合によるカウント方法の差異 ● 変更のリードタイム … commitするタイミングの差異 … 計算方法の差異 … PRの難易度の差異 … 製品特性による開発プロセスの差異 ⇒比較したい場合コンテクストの違いに注意する必要がある。
Slide 71
Slide 71 text
71 生産性とはなんなのか 合意の産物である。
Slide 72
Slide 72 text
72 生産性とはなんなのか (ある一面において)合意の産物である。
Slide 73
Slide 73 text
73 Four Keysの外にあるもの ● PRに反映されないタスク ○ ドキュメント作成 ○ 技術検証 ○ ルールやガイドライン整備 ○ 勉強会 ○ 採用 ○ 技術広報 など ● 前述したレベル2, 3の生産性
Slide 74
Slide 74 text
74 高まった。 ● レビューの早さ⤴ ● 変更のリードタイム⤴(短縮された) ● デプロイ頻度⤴ 開発生産性は高まったのか
Slide 75
Slide 75 text
高まった。 ● レビューの早さ⤴ ● 変更のリードタイム⤴(短縮された) ● デプロイ頻度⤴ 一方で、即効性のある打ち手が少なそうであることもわかってきた。 75 開発生産性は高まったのか
Slide 76
Slide 76 text
76 ● 数値を踏まえて振り返りや1on1を行うようになった。 ○ 変更のリードタイムが長引いた要因を、工程の内訳を踏まえて振り返れた。 ● 体感の答え合わせができる。 ○ レビューを迅速に行っている感覚があり、数値がそれを裏付けていた。 ○ 新規参画者のパフォーマンスが右肩上がりなのを確認できた。 ● 体感と異なることもあり、それが発見である。 ○ 自覚していなかったがPRを小さくできる余地があった。 振り返りがどう変わったか
Slide 77
Slide 77 text
77 ● 判断の手掛りが増えた。 ● やったことに対して反応(変化の有無)を確認できる。 ● 違いを認識できて、どんな違いがあるのかを探索する機会が得られる。 そこから発見があり、プロセス改善が進んだ。 マネジメント(意思決定)がどう変わったか
Slide 78
Slide 78 text
78 ● うまくいっている。 ○ 以前の私たちよりも進歩している。 ● うまくいっていない。 ○ まだ改善の余地がある。 実際のところうまくいっているのか、うまくいっていないのか
Slide 79
Slide 79 text
79 ● うまくいっている。 ○ 以前の私たちよりも進歩している。 ● うまくいっていない。 ○ まだ改善の余地がある。 開発プロセスは比較的改善を進めやすい。 それ以外の部分は、リソースが必要になる場合にハードルが上がる/時間を要する。 実際のところうまくいっているのか、うまくいっていないのか
Slide 80
Slide 80 text
80 ● うまくいっている。 ○ 以前の私たちよりも進歩している。 ● うまくいっていない。 ○ まだ改善の余地がある。 ⇒うまくいっていないことを自覚できる。これが謂わばのび代。 実際のところうまくいっているのか、うまくいっていないのか
Slide 81
Slide 81 text
81 ● うまくいっている。 ○ 以前の私たちよりも進歩している。 ● うまくいっていない。 ○ まだ改善の余地がある。 ともかく、やったことに対して数値のフィードバックがあるので手応えを確認しやすくなった。 実際のところうまくいっているのか、うまくいっていないのか
Slide 82
Slide 82 text
82 ● 数値が根拠となりフィードバックが受け入れられやすくなった。 ● 自覚してないことに気づけるようになった。 ● 裏付けがあることで、体感に自信が持てるようになった。 エンジニアの内省がどう変わったか
Slide 83
Slide 83 text
83 ある。 開発生産性を定量的に計測することに意味はあるのか
Slide 84
Slide 84 text
84 以下のようなことがやりやすくなる。 ● ボトルネックの特定 ● のびしろの切り分け ● 個人視点では自己診断、チーム視点では成長支援 ● 変化の検知 どのような意味があるのか
Slide 85
Slide 85 text
85 以下のようなことがやりやすくなる。 ● ボトルネックの特定 ○ 開発、レビュー、修正、マージ ○ 開発外業務 どのような意味があるのか
Slide 86
Slide 86 text
1. 生産性に影響を与える要素 86 以下のようなことがやりやすくなる。 ● のびしろの切り分け ○ 開発プロセス、保守性、開発・運用環境、開発外業務の多寡、人[1] どのような意味があるのか
Slide 87
Slide 87 text
87 以下のようなことがやりやすくなる。 ● 個人視点では自己診断、チーム視点では成長支援 ○ うまくいったことを確認したり、失敗に気づける ○ 目標が立てやすい ○ 目標に近づいているのか否かを判断しやすい ○ 数値として見えることで自律的な改善の慣性が働く どのような意味があるのか
Slide 88
Slide 88 text
88 以下のようなことがやりやすくなる。 ● 変化の検知 ○ なぜ変化したのかは改めて調べる必要がある点には注意が必要 どのような意味があるのか
Slide 89
Slide 89 text
89 また、副次的なものとして ● ベストプラクティスを探索する契機となる。 ● 説得力が生まれる。 どのような意味があるのか
Slide 90
Slide 90 text
90 生産性可視化とは 組織のオブザーバビリティを高める試み である どのような意味があるのか
Slide 91
Slide 91 text
91 生産性を可視化するだけでは片手落ち。 環境の改善、人に対するエンパワメントを怠れば効果は得られない。 どのような意味があるのか
Slide 92
Slide 92 text
92 ● デプロイの頻度 … 増やしたい ● 変更のリードタイム … 短縮したい ● 変更障害率 … 課題感がないのでスコープアウト ● サービス復元時間 … 課題感がないのでスコープアウト どのように評価するか
Slide 93
Slide 93 text
93 ● デプロイの頻度 ● 変更のリードタイム ○ 開発する … 短縮したい ○ レビューする … 短縮したい ○ 修正を完了する … 短縮したい ○ マージする … 短縮したい どのように評価するか
Slide 94
Slide 94 text
94 ● デプロイの頻度 ● 変更のリードタイム ○ 開発する … 短縮したい ○ レビューする … 短縮したい ○ 修正を完了する … 短縮したい ○ マージする … 短縮したい ⇒絶対値に囚われすぎないようにしている。 どのように評価するか
Slide 95
Slide 95 text
95 ● デプロイの頻度 ● 変更のリードタイム … ☟長期化する要因例 ○ 開発する … 担当者のスキル、要件の精度、システムの理解容易性、影響範囲 ○ レビューする … 意識・習慣(仕事の優先順位づけ)、業務量、レビューしやすさ ○ 修正を完了する … 開発する同様の要因+認識違い、指摘の流儀、レビュアー数 ○ マージする … デプロイの仕組み、デプロイを阻む要素、QA体制 ⇒長期化した要因を探り対策をうつ。 どのように評価するか
Slide 96
Slide 96 text
96 参考値としてPRサイズやPR数なども確認する。 どのように評価するか
Slide 97
Slide 97 text
97 PRに反映されない業務量も考慮したい。 どのように評価するか
Slide 98
Slide 98 text
98 考え方の一例 ● 自チームの過去と現在の比較 ○ 何をきっかけに変化が起きたのか。 ○ ネガティブイベントの再発を抑え、ポジティブイベントの再現性を高めたい。 ● 他チームと自チームの比較 ○ 真似できる何かを探索する。 どのように評価するか
Slide 99
Slide 99 text
99 考え方の一例 ● チームやチーム内の他者と自分の比較 ○ 環境の課題と個人の課題を切り分ける。 ○ 真似できる何かを探索する。 ○ 得意、不得意を把握する。 どのように評価するか
Slide 100
Slide 100 text
100 ● 違うということ ● 変化したということ ● 変化してないということ そこからどのような発見を抽出できるのか
Slide 101
Slide 101 text
101 ● 違うということ ● 変化したということ ● 変化してないということ そこからどのような発見を抽出できるのか
Slide 102
Slide 102 text
102 ● 違うということ ○ 私たちのチームは彼女/彼らのチームと何かが違う。 ● 変化したということ ● 変化してないということ そこからどのような発見を抽出できるのか
Slide 103
Slide 103 text
103 ● 違うということ ○ 私たちのチームは彼女/彼らのチームと何かが違う。 ● 変化したということ ○ 今の私たちは過去の私たちと何かが違う。 そこからどのような発見を抽出できるのか
Slide 104
Slide 104 text
104 ● 違うということ ○ 私たちのチームは彼女/彼らのチームと何かが違う。 ● 変化したということ ○ 今の私たちは過去の私たちと何かが違う。 ⇨その”何か”が何なのかを探索することこそが重要。 そこからどのような発見を抽出できるのか
Slide 105
Slide 105 text
105 ● 違うということ ○ 私たちのチームは彼女/彼らのチームと何かが違う。 ● 変化したということ ○ 今の私たちは過去の私たちと何かが違う。 ● 変化してないということ ○ このケースは注意が必要。 そこからどのような発見を抽出できるのか
Slide 106
Slide 106 text
106 ● 違うということ ○ 私たちのチームは彼女/彼らのチームと何かが違う。 ● 変化したということ ○ 今の私たちは過去の私たちと何かが違う。 ● 変化してないということ ○ このケースは注意が必要。 ○ 今の私たちは過去の私たちと、一見、何も変わらない。 そこからどのような発見を抽出できるのか
Slide 107
Slide 107 text
107 ● 違うということ ○ 私たちのチームは彼女/彼らのチームと何かが違う。 ● 変化したということ ○ 今の私たちは過去の私たちと何かが違う。 ● 変化してないということ ○ このケースは注意が必要。 ○ 今の私たちは過去の私たちと、一見、何も変わらない。 ⇨何も変わらない?本当に? そこからどのような発見を抽出できるのか
Slide 108
Slide 108 text
108 ● グラフに表れない何か(コンテクスト)が変化してないか? ○ メンバー数 ○ 稼働日数 ○ 開発外業務量(PRに反映されないアクティビティ量) ○ 難易度 ○ 新規、改修(しがらみや車輪の有無) ○ 技術スタック など ● ポジティブな変化とネガティブな変化が相殺した結果なのではないか? そこからどのような発見を抽出できるのか
Slide 109
Slide 109 text
109 ● グラフに表れない何か(コンテクスト)が変化してないか? ⇨その”何か”が何なのかを探索することこそが重要。 そこからどのような発見を抽出できるのか
Slide 110
Slide 110 text
110 注目すべきは”違い”や”変化” ● 起きるべきタイミングで期待された変化が起きたか。 ● 想定外の変化が起きていないか。 ● 他チームや他社との単純比較に価値はなく、違いからコンテクストの差異を読み取ろうとする行為 には意義がありそう。 そこからどのような発見を抽出できるのか
Slide 111
Slide 111 text
111 ”違い”や”変化”がない場合であっても ネガティブとポジティブが相殺した結果かもしれないので、コンテクストの違い/変化を点検する。 そこからどのような発見を抽出できるのか
Slide 112
Slide 112 text
112 “解像度”を上げよう! ● “アジリティ”や”生産性”という言葉には解像度を高める余地がある。 〇〇を上げよう!
Slide 113
Slide 113 text
113 “解像度”を上げよう! ● “アジリティ”や”生産性”という言葉には解像度を高める余地がある。 ● デプロイ頻度?変更のリードタイム?変更障害率?平均修復時間? ○ コミットからオープンまでの時間?オープンからレビューまでの時間?レビューからアプ ルーブまでの時間?アプルーブからマージまでの平均時間? ● あるいは、その他? 〇〇を上げよう!
Slide 114
Slide 114 text
114 “DX(開発者体験)”を上げよう! ● DXを改善すると生産性も高まるという考え方がある。 〇〇を上げよう!
Slide 115
Slide 115 text
115 “モチベーション”を上げよう! ● モチベーションを上げることで開発がスムーズにいくならば、それに取り組むべき。 〇〇を上げよう!
Slide 116
Slide 116 text
116 生産性を上げよう!とただ思っても何をすればよいのかわからない。 生産性とは何か? それを向上させる要因は何なのか? を定義、特定する必要がある。 〇〇を上げよう!
Slide 117
Slide 117 text
117 チームのアジリティを上げよう!否!!! “生産性”は上げるものではなく、上がるもの。(個人的な見解です) 放っておいたら勝手にあがるってことではなくて、環境を整えられれば自然と上がる。 課題を潰すと結果として生産性が上がるという感覚。
Slide 118
Slide 118 text
118 わからないこと
Slide 119
Slide 119 text
119 ● PRの粒度を揃えないと比較できないと思われるが、粒度を揃える方法、粒度の表現方法が不明。 ○ 他社との単純比較可能性については懐疑的。 ○ 同社の他チームですら比較する際にはコンテクスト合わせの配慮が必要。 わからないこと
Slide 120
Slide 120 text
120 ● のび代(環境(開発プロセス他)、人(ドメイン知識他))の比重まではわからない。 わからないこと
Slide 121
Slide 121 text
121 ● 個別の施策の効果は必ずしもわからない。 ○ 勉強会など、PRに顕著に反映されないものや即時的に反映されないものがある。 ○ 取り組んでいることが全体としてポジティブなのかネガティブなのかくらいはわかりそう。 わからないこと
Slide 122
Slide 122 text
122 ● メトリクスの変化のみから確実にわかることはない。 ○ コンテクストが重要。 ○ 何によりもたらされた変化なのかを見極めなければならない。 わからないこと
Slide 123
Slide 123 text
● 適正値がわからないメトリクスがある。 ○ 例えばレビューにおけるコメント数 ■ 少なすぎる場合、レビューが機能していない可能性を示唆してそうだが断定はできない。 ● コメント数単体で評価するのはミスリードの危険を孕んでいる。 ■ 10は多い?30は?100は? ● チームあるいは個人に固有の閾値を見極める必要がありそう。 ○ メトリクスの活用方法を研究する必要がある。 ○ 気にしないのも一つの手。 123 わからないこと
Slide 124
Slide 124 text
124 今後のこと
Slide 125
Slide 125 text
125 ● 過去のPRを振り返り分析したい時にコンテクストの情報がないので なぜ計測値が大きいのか/小さいのかを読み取り切れない。 ● 計測値を確認するだけではなく、コンテクストを読み取る作業も必要。 ● 計測値を比較可能にするための努力が必要。 ○ PRを小さくし、難易度やサイズの違いを極小化するのはこのためでもある。 運用上の留意事項
Slide 126
Slide 126 text
126 ● 分析対象外としたいブランチにGitHub上でラベルを貼る運用としているが漏れることがある。 ● ノイズがある。 ○ 非稼働日(特に連休)により計測値が悪化する。 ○ 調査のため作成し閉じたPR(成果有)と開発を中止したPR(成果無)が見分けられない。 ○ 自動生成されるコードなどにより変更行数が顕著に大きくなる。 ○ (そもそも運営の是非があるが)待ち時間等で進める開発はリードタイムが長くなる。 かといって除外すると、貢献がPR数に反映されない。 ● PRに反映されないタスクもある。 運用上の留意事項
Slide 127
Slide 127 text
127 ● チーム異動があった場合、集計を工夫しないと一つのグラフに異なるコンテクストが混じり込みミ スリードになる。 ● 支援が必要なメンバーをボトルネックにするもしないもチーム次第。 運用上の留意事項
Slide 128
Slide 128 text
128 ● のび代の改善を続ける。 ● 変化の探知機として活用する。 ○ 計測値の変化から環境や人の変化を察知する。 ○ オンボーディングが順調かどうかをモニタリングする。 ● 内省を助けるスマートウォッチとして活用する。 私たちの展望
Slide 129
Slide 129 text
129 ● 前述の“わからないこと”や“運用上の留意事項”を踏まえたベストプラクティスを探索する。 私たちの展望
Slide 130
Slide 130 text
130 まとめ
Slide 131
Slide 131 text
131 まとめ ● Four Keysを用いた生産性可視化をステップバイステップで進めた。 ● スクラムイベントに組み込んで習慣化した。 ● 計測値から洞察を得て主に開発プロセスを見直し、生産性が改善した一方のび代も残されている。 ● 計測値の絶対値に囚われず、背景にある生産性を高める/低める要因を探索するのがよさそう。 ● 計測値を比較する際にはコンテクストを合わせる必要がある。 ● また、コンテクストの違いを擦り合わせる過程で発見がある。 ● Four Keysで測れるものとそうでないものがある。 ● それはともかくとして、組織のオブザーバビリティを高めるのに役立つ。 ● その性質を理解した上で運用を構築し、人と環境のエンパワメントを続けたい。
Slide 132
Slide 132 text
ご清聴ありがとうございました