Slide 1

Slide 1 text

フロー効率の向上から始める 開発生産性の高め方 YAPC::Japan::Online 2022 #yapcjapan | 2022/3/5 track B | @omokawa_yasu モブワークを沿えて 1

Slide 2

Slide 2 text

自己紹介 2

Slide 3

Slide 3 text

3 副業:占い師 おもかわ やすあき

Slide 4

Slide 4 text

モブワーク フロー効率 高めたよ 4 トークテーマで一句

Slide 5

Slide 5 text

概要 5 1. モブワークでフロー効率を上げることができた 2. モブワークでフロー効率が上がった理由をふりかえる 3. 今後、さらにフロー効率を高めるには?

Slide 6

Slide 6 text

当時の開発体制 6 PdMチーム プロダクトオー ナー 開発チーム QAチーム QA担当 一般メンバー テックリード スクラムマスター デザイナー

Slide 7

Slide 7 text

スプリント バックログ 当時の開発手法 7 デイリー スクラム 1週間の スプリント スプリント レトロスペクティ ブ スプリント プランニング スプリント レビュー インクリメント プロダクト バックログ

Slide 8

Slide 8 text

発生した課題:コードレビューがボトルネックに 8 PdMチーム 開発チーム QAチーム QA担当 一般メンバー テックリード スクラムマスター レビュー依頼 多すぎて キャパオーバー プロダクトオー ナー デザイナー

Slide 9

Slide 9 text

解決策:コードレビューをモブワークにした 9 レビュイー レビュアー ① オンライン or オフラインで開発メンバーが 全員集まる。レビュイーが担当タスクの背景と実 装意図を説明 ② 軽く質疑応答した後、モブプログラミング。 そ の場でマージ・デプロイまで行う

Slide 10

Slide 10 text

結果:デプロイまでの時間が短縮され、    フロー効率が向上した ● タスク着手からデプロイまでの時間(リードタイム) ○ 185%向上 ● 1スプリントあたりのベロシティ ○ 115%向上 10

Slide 11

Slide 11 text

185% リードタイムの向上率はかなりよかった ベロシティはむしろ下がると思ってた(稼働率が下がったので) 11

Slide 12

Slide 12 text

モブワークの効果をふりかえってみた 12

Slide 13

Slide 13 text

効果1:アイドルタイムの削減 13 レビュイー レビュアー プルリクエスト レビュー 修正 マージ プルリクエスト レビュー 修正 マージ モブワーク Before After

Slide 14

Slide 14 text

効果2:マルチタスク防止 リアルタイムにフィードバックが得られるため、レビュイーがマルチタスクを防止 できる 14

Slide 15

Slide 15 text

効果3:レビュアーの負担を軽減 ● モブワークで初めて分かったが、最もレビュアーが時間を掛けるのは実装 意図や背景の理解だった ● レビュイーに口頭で説明してもらえるため、レビュアーの理解が進む 15

Slide 16

Slide 16 text

効果4:チーム全体の学習を促進 ● 網羅的にコードレビューするとドメイン知識が深まる ● 1人だと実装パターンのアイデアは2~3個だが、モブワークすると5~6個く らい出る ● メンバーの集合知がテックリードに勇気を与える ○ テックリードに集中したプレッシャーを全員で分担 ○ メンバーの多角的な視点は最高の学習機会 16

Slide 17

Slide 17 text

効果5:テックリードがレビューするときの     思考過程が全員に伝わる ● 特に印象深かったチェック観点 ○ エッジケースが足りてるか、かなり時間を掛けて見てた ○ プルリクエスト作成者にもしものことがあったら、レビューしているコー ドを引き継ぐ責任を取れるかどうか見てた ○ コード規約・フォーマットは、Rubocopなどのリンターに任せているの でレビューしてなかった 17

Slide 18

Slide 18 text

効果6:参加メンバー全員のモチベーション向上 ● リアルタイムにコードがデプロイされるとテンションが上がる ● ライブコーディングは基本的に楽しい(人にもよるけど) ● 1人で詰まると地獄だが、みんなで詰まると心が折れない 18

Slide 19

Slide 19 text

モブワークの成功をサポートした要素 19

Slide 20

Slide 20 text

ウチの組織では、技術面とチーム面の2つの要素がモブワークをサポートしてくれました 20 モブワークの成功 ● 継続的デリバリーの整備 ○ 自動テスト ○ トランクベース開発 ○ 監視 ○ 高いテストカバレッジ ● 心理的安全性の確保 ○ ワーキングアグリーメント明 文化 ○ タイムボックス確保 ○ コラボレーションスペース確 保

Slide 21

Slide 21 text

技術面の要素について補足 ● トランクベース開発でビッグバンリリースを防ぐ ○ ブランチは1日でマージできるくらいのサイズに調整する ○ フラグで表示制限して段階的にリリースできるようにする ● 高いテストカバレッジ ○ カバレッジが高いと安心してリファクタリングできる ● 自動テスト ○ 不安定(FLAKY)なテストはこまめに改修してCIコストを改善 21

Slide 22

Slide 22 text

チーム面の要素について補足 ● ワーキングアグリーメントを明文化 ○ 「尊敬・感謝・称賛」を大事にすることをWikiに書き起こした ○ レビューコメントにキャプションをつけ、「相手にどんなリアクションを求 めているのか」を判別できるように ● タイムボックス確保 ○ デイリースクラムの後にモブワークをスケジューリングし、「意志の力 に頼らない運用」にする(イフゼン・プランニング) 22

Slide 23

Slide 23 text

チーム面としてもっとも重要だと思ったこと 23 徹底して規約を定め、コス トパフォーマンスの悪いコ ミュニケーションを撲滅す る

Slide 24

Slide 24 text

今後やろうと思っているアイデア 24

Slide 25

Slide 25 text

課題:見積もりがボトルネックなので解消したい 25 要件定義 見積もり タスク分解 開発 デプロイ 見積もり精度を上げるためにタスクを分 解する作業を入れたが、 長時間かかる割 に見積もり精度が上がらないためコスト パフォーマンスが悪い

Slide 26

Slide 26 text

案:モブワークによる改善 26 要件定義 見積もり タスク分解 開発 デプロイ Before After 要件定義 見積もり モブワーク デプロイ

Slide 27

Slide 27 text

27 要件定義 見積もり タスク分解 開発 デプロイ Before After 要件定義 見積もり モブワーク デプロイ ● コードを見ずにタスク分解するのは困難 。ざっく り見積もりしてすぐモブワークを始めたほうが 確実 ● つねにモブワークすることで、 タスクを分解しメ ンバーに割り当てるコストを削減

Slide 28

Slide 28 text

案:モブワークしやすい開発体制に変更する 28 PdM 開発 QA 設計からデプロイまで完遂できるチーム (メインチームと仮称) Before After

Slide 29

Slide 29 text

すばやいフィードバックを目指す開発スタイル 29 ● 動くものを作り、リアルタイムで改善を 加える ● モブワークは口頭のやりとりが増える ため、暗黙知が多くなることがリスク。 意思決定した内容の文書化を徹底す る ● コミュニケーションコストが高い箇所は ドメインを分割するチャンス。 切り出し たドメインに対応する別のチームを作 る ※ 書籍『チームトポロジー』の図を一部変更して掲載

Slide 30

Slide 30 text

まとめ 30

Slide 31

Slide 31 text

長続きするハイパフォーマンスなプロダクト チームは、より効率的な共同作業の方法を見 つけてデリバリーのボトルネックを取り除くこと で、デリバリー頻度を着実に向上させることが できる 31 『チームトポロジー』より引用

Slide 32

Slide 32 text

今回の話はこちらの4冊を参考にしました。 興味ある方はぜひ読んでみてください! 32

Slide 33

Slide 33 text

何か参考になれば嬉しいです。 たのしいチーム開発ライフをお過ごしくださ い! 33

Slide 34

Slide 34 text

ご清聴ありがとうございました! 34