・ 不確実性の高いプロジェクトでは事前予測が困難
・ ユーザにプロトタイプを見せてみて初めてユーザの要望が詳細化することもある
・ 短期的なイテレーションに区切ってプロトタイプの生成→デモを繰り返すことで、ユーザの目指す姿に近づける
<アジャイルの立上げプロセス>
・ プロジェクト憲章=何のためにこのプロジェクトがあるか
・ チーム憲章=どのような行動規範によって団結していくか
・ツールと技法:
・ インセプションデッキ=10個の質問カードに対して意見を出し合い、チーム内での共通理解を構築する
・ 目的、リスク、迷った時の判断基準などをまとめておく(=プロジェクトマネジメント計画書の代わり)
<アジャイルの計画プロセス>
① 要求事項の収集
・ プロダクトバックログ=実現したいことがすべて書かれた一覧リスト
・ 最終的にやらない可能性があるものもすべてこの中に突っ込んでおく
・ 優先順位をプロジェクトオーナーが付け、並べ替える
・ 上位のものから各スプリントで着手し、詳細な見積もりを作ってから取り掛かる
・ ユーザストーリー形式での記述が人気
・ユーザーストーリー
・ユーザ視点で、開発する機能を説明した文章
・ ペルソナ+ニーズ+目的の形で、物語のように書く
(誰にとって、こういう機能が欲しい、それは〇〇だからだ、という書き方で書く)
・ Howまでは書かない。それはやる時に考える
・ タスク=やるべき作業のことであって、ユーザにとっては価値のないもので、ユーザストーリーとは異なる
・ユーザーストーリーを集めたものがエピック
・ 各ユーザーストーリーに対して、完了基準も決めておく
② 所要期間の見積もり
・ ストーリーポイント=各ストーリーの所要期間見積もり技法
・ あるストーリーを基準にして、それに対して何倍かという相対見積もりで見積もる
・何人日ではなく、何ポイントという大雑把な見積もりにする
・ プランニングポーカー
・ 全員参加型で1人1人が見積もりしてカードを出す。多数決ではなく合意で決めていく。
・ カードの数はフィボナッチ数列を使うのが特徴
・スパイク=見積もれないストーリーに対して、一時的に調査を実行すること
・バーンダウンチャート、バーンアップチャート
<アジャイルの実行プロセス>
・スプリント単位で回していく
・スプリントプランニング
・スプリントゴール(=今回のスプリントの大義。何をしたいのか)を決める
・今回のスプリントで完成させるべきバックログを選ぶ
・プロダクトバックログリファインメントをする=さらに掘り下げたり、洗練したり、調査したり
・ デイリースタンドアップ=15分以内のミーティング。何をしたか、何をするか、障害が何かだけを話す。
課題についてこの場で話し合ってはならない。パーキングロットに追加し、別の場で話し合う。
・ テスト駆動開発=まずテストを書く→テストが通るコードを汚くていいから早く作る→テストを壊さないようにリファクタ
<アジャイルの監視コントロールプロセス>
① パフォーマンスの測定
・バーンダウンチャート
・バーンアップチャート
・ベロシティ=1回のイテレーションの中で完了させられるストーリーの量
・ベロシティを計測することで、次回スプリントの計画に役立つ
・ベロシティの計測を意味あるものにするために、スプリントの長さは基本的に固定とする(例、2週間)
・ベロシティは個人の生産性ではなくチームの生産性。個人が残業し瞬間的にベロシティを上げることは本質ではない。
・持続可能なスピードと負荷で開発を回せることが大切
② イテレーションの終結
・イテレーション、スプリントの最後に以下のことをやる
・スプリントレビュー=今回のスプリントの成果をステークホルダーに説明する
・デモンストレーション=成果物をユーザに見せてFBを得る
・レトロスペクティブ=振り返り