こんにちは!コドモンプロダクト開発部の加藤です🐱
コドモン開発部ではエクストリーム・プログラミング(XP)を取り入れたアジャイル開発に取り組んでいます。 私はつい最近まで、コドモンのある機能をリプレイスするプロジェクトに参加していました。 計画・振り返りのサイクルをまわしてイテレーティブに開発を進めていくのですが、プロジェクトを通じて計画の仕方については悩むことが多かったです。
今回は「アジャイルな見積もりと計画づくり」の書籍を通じて、アジャイルな計画づくりとは何かを考えていきます。
計画づくり、どのくらいしてますか?
みなさんは開発チームの計画づくりをどのくらいの労力をかけて・どのくらいの頻度で実施していますか? 「計画」という言葉でイメージするのは人それぞれですが、計画づくりの両極端なやり方を想像するとおよそ以下のようになりそうです。
計画を作りすぎるケース
- 計画は「絶対的に正しい」「変更しない」ものとして扱う
- 正しいものができた、と納得するまで計画づくりに労力を費やす
計画を作らなさすぎるケース
- どうせ計画通りにいかないのでそもそも作らない
- 計画がなくてもタスクをこなしていけばなんとか形になるはずなので、計画はいらない
アジャイル開発では変化に対応しながら少しずつプロダクトをリリースするので、ウォーターフォール型などの開発手法に比べて計画に工数をかけすぎてしまう、というケースは少ないのではないでしょうか。 一方で、アジャイル開発は計画不足に陥りやすい部分があるのかなと感じています。
計画不足の状態だと以下のようなデメリットが起こりえます。
- ユーザーへの価値提供のために今優先して対応すべきものの認識がチームメンバー間でブレる
- 少し前倒しで考えておけば予測できたタスクに、突発的に対応しなければならなくなってしまう
アジャイルだから計画をしなくていい、というのは誤解であり「ちょうどいい」計画づくりができるとよりよいプロダクト開発につながるのではないかと思います。
「アジャイルな見積もりと計画づくり」に学ぶ「ちょうどいい」計画づくり
アジャイル開発の「ちょうどいい」計画づくりについて「アジャイルな見積もりと計画づくり」の書籍を通じて考えていきます。
対象とする計画のレベル
事業の計画は以下のように複数のレベルに分けることができます。
今回はリリース・イテレーション・今日のレベルの計画について考えていきます。 ある機能のリリースを実現するために、開発チームが何を・どの順番で・どのように作るかという部分に焦点を当て、それらを具体的に動くプログラムに落とし込むまでの計画です。
よい計画づくりとは
「アジャイルな見積もりと計画づくり」では、よい計画づくりとは以下のような特徴を持ったプロセスだと定義しています*2。
- リスクを軽減する
- 不確実性を減らす
- 意思決定を支援する
- 信頼を確立する
- 情報を伝達する
つまり、計画づくりを通して以下の効果が得られていると、よい計画づくりができている状態と言えるのではないでしょうか。
- 未来に起こりうる負の要素を事前に検知・対応できること
- よい決定のためのコミュニケーションを支援すること
ここでのポイントとしては作った計画そのものだけではなく、計画作りのプロセスが上記の効果をもたらすことを期待していることです。
頻繁に計画を見直す
「アジャイルな見積もりと計画づくり」には、アジャイルな見積もりと計画作りのための12のガイドラインが記載されています*3。
- チーム全体を巻き込む
- 複数レベルの計画を立てる
- 大きさの見積もりと期間の見積もりを区別するために別々の見積もり単位を使う
- 不確実性はフィーチャか日付のいずれかで表現する
- 頻繁に計画を見直す
- 進捗をトラッキングして情報を共有する
- 学習することの大切さを受け入れる
- フィーチャは適切な大きさで計画する
- フィーチャを優先順位づけする
- 現実に即した見積もりと計画を立てる
- ゆとりを残す
- 複数チームの連携には「移動する先読み範囲」を使う
今回はそのなかでも実践が比較的簡単・効果が高そうな施策として「頻繁に計画を見直す」という項目を取り上げます。
「頻繁に計画を見直す」とは具体的には以下を実行できている状態を指します。
- 新しいイテレーションのたびに次のイテレーションの計画を立てる
- リリース計画をイテレーションが終わるたびに見直す
期待できる効果は以下の通りです。
- 新しい知識を計画に反映できる。徐々に計画の精度を高めていける
- 完璧な計画より現時点で有用な計画を立てることに集中できる
- 見直すという前提があるので、計画の作りすぎを予防できる
このような計画づくりをチームで実践するためには、マインド面での認識を揃えることが必要です。 以下のマインドが前提にあることをチームメンバーが認識した上で進めると実践に結びつけやすいです。
- 早い段階での計画作りでは精度の低い計画しか立てられないことを受け入れる
- 私たちの知識は完全ではなく、新しい知識の学習に合わせて計画も洗練させねばならないことを受け入れる
まとめ
「アジャイルな見積もりと計画づくり」ではアジャイル開発の計画づくりについて以下のように言及しています*4。
見積もりと計画づくりがアジャイルでないのに、プロジェクトがアジャイルであるということはありえない。
この言葉に表されるように、計画づくりはプロジェクト全体をアジャイルに進めるために重要な役割を持つプロセスだと感じています。
チームに向けて取り組みに必要なマインドの共有をすること・計画で期待するメリットが得られているかを意識して実践することで、私もよりよい開発プロセスを実現していきたいです。
ぜひみなさんも、プロジェクトをアジャイルに進めるために、まずは計画作りがアジャイルになっているか?という観点で見つめ直してみるのはいかがでしょうか?
【カジュアル面談やってます🏃】
コドモンのアジャイル開発・アジャイルな計画作りについて、気になる方はぜひお話ししてみてください!