私は、アジャイル開発プラクティスを採用する可能性を探っているチームで働いています。
私たちが直面している問題の 1 つは、イテレーション (スプリント) をいつ完了するかを決定することです。
機能のバックログを定義し、それらのストーリー ポイントの見積もりを作成し、最初の 30 日間のスプリントに機能 A、B、D、および F を含めることを決定したとします。スプリントの最後に到達し、A、D、および F を完了しましたが、B は 80% しか完了していません。次のことを行う必要があります。
時間通りにスプリントを完了するが、機能 B を除外する (残りの作業を将来のスプリントに延期する)
機能 B を完了するのに必要な時間だけスプリントを延長しますが、次のスプリントは開始しません。
機能 B を完了し、次のスプリントの作業を開始するのに必要な時間だけスプリントを延長します。
スプリント全体を失敗させ、すべての作業をバンドルして将来のリリースの一部にします。
オプション 1 の問題点は、チームが約束したことを実行していないことです。場合によっては、リリース全体を役に立たなくする (または少なくとも実質的に価値を下げる) ことなく、機能 B を除外することができない場合があります。機能 B がないと、次のスプリントの方向性を導き出すのが難しくなる可能性があります。
オプション 2 の問題は、チームの一部のメンバーがかなりの時間アイドル状態になる可能性があることです。これにより、全体的な生産性が低下します。単体テストを追加したり、機能を磨いたりできるかもしれませんが、それに比例した価値はありません。また、チームのほとんどがアイドル状態である理由を経営陣に説明することは、政治的にも困難です。
オプション 3 は、アジャイルの精神に反しているように思われます。前のスプリントの結果が開発の次の反復を導くことを許可しないことで、次のスプリントを危険にさらすことになります。
オプション 4 は深刻なようで、オプション 1 と 3 とほとんど同じ問題があります。まず、コミットメントが完全に失われています。第 2 に、より多くの機能を後続のリリースにバンドルすると、顧客によるテストと検証が難しくなり、以前のフィードバックに基づいて将来の反復を導くことができなくなります。