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

不確実性に向き合うためにチームの アジリティを高める開発タスクの切り方

Avatar for tanden tanden
October 05, 2022

不確実性に向き合うためにチームの アジリティを高める開発タスクの切り方

XP祭り2022の発表資料です

Avatar for tanden

tanden

October 05, 2022
Tweet

More Decks by tanden

Other Decks in Programming

Transcript

  1. 自己紹介① BASE株式会社 ネットショップ作成サービス「BASE」の エンジニアリングマネージャー Scrum Master (LSM) 北海道旭川市出身 2016.09 -

    新卒でWebゲーム開発 2020.01 - BASE株式会社で「BASE」の開発 本日はよろしくお願いします!     炭田高輝(tanden) Back-End Web Developer 2
  2. 自己紹介② • 新卒1年目に「アジャイルサムライ」に出会う • 「おお、これだ!」と思い、本を読み漁ったりスクラムマスターの 研修に行ってみる • スクラムをチームに提案して実際にトライしてみるも、なんとなく 良くなったがうまく定着させることができなかった •

    途中1社を経て、BASE株式会社で「よりよい開発チーム」「品質の 高いものをより早くユーザーに届ける」にはどうすればよいか、模 索中です     炭田高輝(tanden) Back-End Web Developer 3
  3. 不確実性とは何か 不確実性の定義 • 白黒はっきりつけられない曖昧さ(確率)が 残っている状態や状況のこと • 不確実性を減らすとは、確率をどちらかに 寄せる作業(白黒つける) Q. この設計で負荷の問題は起きるのか、起きな

    いのか? A. 調査の結果、起きるとわかる 結論を出すことで、曖昧さがなくなり、不確実性 が減ったとみなせる 6 エンジニアリング組織論への招待 ~不確実性に向き 合う思考と組織のリファクタリング 広木大地 著
  4. 不確実性に振り回される5つのパターン 不確実性に振り回されれる5つのパターン • 突発パターン • 手戻りパターン • 大群パターン • 氷山の一角パターン

    • 忘却パターン 5つのパターンが起きることを前提として うまくコントロールできるようにすれば、開発がぐんと前に進むはず 16
  5. 受け渡し型の開発とは 成果物を受け渡していく開発のこと • 要件定義 • 仕様作成 • デザイン • 設計

    • スケジュール見積もり • バックエンド実装 • フロントエンド実装 • 結合テスト(QA) • 受け入れテスト(QA) • リリース 19 ウォーターフォールやリレー形式の開発と呼ぶこともあります
  6. バッチサイズが大きいことの問題点 受け渡し型開発は構造上バッチサイズが大きくなってしまう • 突発パターン • 手戻りパターン • 大群パターン • 氷山の一角パターン

    • 忘却パターン バッチサイズが大きいと上の5つのパターンが起こりやすく、また対応も しにくいことを見ていきます 22
  7. 各パターンの合わせ技で不確実性が襲ってくる② • 受け入れテストで突然(突発) • やっぱりこの機能も必要です(手戻り) • 全部作り直しですが、どこから手をつけましょう(大群) 29 要件定義 仕様作成

    デザイン 見積もり バックエンド フロントエンド 結合テスト 受け入れテスト リリース 設計 受け入れテストで突発的に 手戻りが発生して、一気にやることが増える
  8. ユーザーストーリーによる分割② • ユーザーとして • タスクを登録したい • タスクを忘れたくないからだ • ユーザーとして •

    タスクを完了状態にしたい • 終わっていないタスクを判別したいからだ • ユーザーとして • タスクを削除したい • する必要がないタスクを実行してしまう無駄をなくしたいからだ 43
  9. ユーザーストーリーによる分割② 44 • ユーザーとして • タスクを登録したい • タスクを忘れたくないからだ • ユーザーとして

    • タスクを完了状態にしたい • 終わっていないタスクを判別したいからだ • ユーザーとして • タスクを削除したい • する必要がないタスクを実行してしまう無駄をなくしたいからだ
  10. ユーザーストーリーによる分割③ • ユーザーとして • タスクのタイトルを設定したい • タスクを見つけやすくして、実施漏れを防ぐためだ • ユーザーとして •

    タスクの詳細を記入したい • タスクの背景や実施する理由を忘れないようにするためだ • ユーザーとして • タスクの優先度を設定したい • 重要度によってタスクを分類したいからだ 45
  11. ユーザーストーリーによる分割③ • ユーザーとして • タスクのタイトルを設定したい • タスクを見つけやすくして、実施漏れを防ぐためだ • ユーザーとして •

    タスクの詳細を記入したい • タスクの背景や実施する理由を忘れないようにするためだ • ユーザーとして • タスクの優先度を設定したい • 重要度によってタスクを分類したいからだ 46
  12. ユーザーストーリーによる分割④ • ユーザーとして • タスクのタイトルを保存したい • タスクを見つけやすくして、実施漏れを防ぐためだ • ユーザーとして •

    タスクのタイトルを更新したい • タスクの内容が変わったことを反映するためだ • ユーザーとして • タスクのタイトルの設定に失敗したことを知りたい • タイトルの保存をやり直す必要があるかどうかを知れるからだ 47
  13. ユーザーストーリーで小さく分割する 48 ToDo管理をしたい 登録をしたい 完了にしたい 削除したい タイトルを設定をしたい 詳細を記入したい 優先度を設定したい タイトルを保存をしたい

    タイトルを更新をしたい 設定に失敗したこと を知りたい ユーザーストーリーを使って開発タスクを小さくしていくことで ユーザー相当の検査が行われるまでのバッチサイズを小さくできます
  14. バッチサイズ小さいと5つのパターンに対応しやすい バッチサイズを小さくすることで • 切れ目が沢山でき、方向転換が簡単になる(突発パターン) • 無駄が少なくなる(手戻りパターン) • やることの多さに圧倒されない(大群パターン) • 不確実性を捉えやすい(氷山の一角パターン)

    • 忘れないうちにやりきれる(忘却パターン) バッチサイズを小さくするためには • 着手ギリギリまで工程に分けない • 受け入れテストを含むように開発タスクを分割する • ユーザストーリーでの分割が便利 54
  15. スコープを柔軟に変えられる② 59 ToDo管理をしたい 登録をしたい 完了にしたい 削除したい タイトルを設定をしたい 詳細を記入したい 優先度を設定したい タイトルを保存をしたい

    タイトルを更新をしたい 設定に失敗したこと を知りたい 「タイトルの設定」と「詳細の記入」を作って使ってみて「優先度を 設定できる機能は後回しにしても十分機能として使える」のような判 断がしやすくなる。
  16. 分割にも慣れが必要 困った場合はお近くのスクラムマスターにぜひご相談を! もしくは、以下の書籍やブログが参考になります • ryuzeeさんのブログ「プロダクトバックログアイテムの分割方法」 • 『アジャイルな見積りと計画づくり』 12章「ユーザーストーリーの分割」 • 『アジャイルエンタープライズ』

      18章「ユーザーストーリーで協力する」 • 『エッセンシャルスクラム』     5章「要件とユーザーストーリー」   6章「プロダクトバックログ」 • 『More Effective Agile』     9.4「基本原則:バーティカルスライスでのデリバリー」 • 『スクラム実践入門』        3.3「スプリントプランニング」 5.4「ユーザーストーリー」 • 『スクラム現場ガイド』       12章「ストーリーやタスクを分割する」 • 『大規模スクラム(LeSS)』    11章「プロダクトバックログリファインメント」 64