計画の調整
実はこの4つのタイムボックスは粒度こそ違えど、「時間を区切って計画し、完了/反省する」ことは共通しています。フラクタルな構造になっていると言えるでしょう。
アジャイル開発では、各タイムボックスで設定した計画を調整することになります(図3)。
- デイリースクラムにおける調整
- スプリントにおける調整
- マイルストーンにおける調整
日々のタスクをこなす中で、さまざまな要因により早く終わったり遅延したりします。デイリースクラムでは、問題発生に応じて随時メンバー間で互いに助け合いながらメンバーの負荷を調整します。
基本的には開発者間の自主性に任せ、開発リーダー(ないしはスクラムマスター)は事後認識のみで十分です。
スプリントでは2週間先のことまでの計画を立てます。しかし、2週間という短い期間とはいえ、完了しきれないタスクが発生します。そこで、各スプリント間での調整を行ないます。
開発チーム内においてスプリントの切り替わりで出来/不出来を評価し、不出来なタスクは次のスプリントに持ち越さないように再構成します。
また、スプリントの優先順位は随時変わるものです。そのため、マイルストーンの終了を待たずに優先順位を微調整します。
大きな機能の優先順位変更や新規機能の追加、対応しきれなかったタスクによる他のタスクへの影響などに対する調整は、時間がかかります。これらは、マイルストーンの終了時点で一括して調整します(※注2)。
正確には次のスプリントをすぐに始めなければいけないので、マイルストーンにおいて調整するのにあらかじめマイルストーンが終わる前に準備しておく必要があります。
外部との計画調整
前半で述べたように、プロジェクトにはさまざまなステークホルダーがいますが、アジャイル開発の中でステークホルダーとのコミュニケーションは、主に次の2つのイベントによって成立します。
- デモとフィードバック
- 進捗確認と計画調整
これらのイベントは、アジャイル開発において肝となります。とはいっても、これらを何度も実行するのは手間です。
そこで、ディーバではこの2つのイベントをスプリント単位とマイルストーン単位で実施するようにしています。
例えば、1についてはスプリント終了時は機能の差分のみを、マイルストーン終了時は機能全体を報告します。2についてはスプリント終了時には差異のみを、マイルストーン終了時には差異を踏まえた実装優先順位の付け替えなどを報告するといった具合です。
このとき、相手とのコンセンサスに気を配ることが重要です。実際のソフトウェア開発では開発チーム外との調整が必要ですが、アジャイル開発では頻繁にスコープが変わるためにステークホルダー間でスコープの認識違いが発生しがちです。
ドキュメントでは具体性を持たせつつも一瞥して分かることを心がけ、デモにおいては理解されやすい部分(UIなど)だけでなく、見えない部分についても進捗が分かるような工夫をして実施しましょう。
アジャイル開発における最も印象的な手法の1つに、ペアプログラミングがあります。ペアプログラミングでは、お互いに集中して実装できるというメリットがあります。
これは計画時にも実践できるプラクティスです。これをここでは「ペアプランニング」と呼びます。やり方は簡単で、単にスプレッドシートやガントチャートを2人で編集するだけです。2人3脚でテンポよく計画を作り上げていく感覚は格別です。
計画を立てる際は1つのディスプレイで行なうのも良いですが、個人的には「Google Spreadsheets」をお勧めします。近くの席に座り(またはSkypeなどで)お互いに話しながら、同時にバックログリストを編集していきます。