@Joe「私たちは「アジャイル」ショップなので、私たちは調整する必要があると思いますが、いつかは変化が大きく、些細なことはありません。」
プロセスで要件の変更率を制御できない場合、プロセスはアジャイルではなく、無計画です。アジャイルとは、「自分のやり方で何かをする」という意味ではありません。
要件の変更/クリープを制御するには、プロセスで要件が変更されないという概念(スクラムの中心にあるという概念)を採用できます。要件の変更は、古い要件を新しい要件に置き換えるものとして扱います。要件のバックログが必要であり、ユーザーに実装したい要件を選択させる必要があります。
あなたは2週間でXとYが欲しかったのですが、突然Zが欲しくなったのです。それでは、4週間で3つすべてをお届けできます。または、2週間でペア(XとZ)または(XとY)または(YとZ)を提供し、残りの1つを後で提供できます。選択してください。
これは、顧客と交渉する方法です。これは、要件変更のコストを伝える方法です。あなたのグループがその力を持っていない場合、あなたはアジャイルショップにいません、そしてあなたがそれについてできることは何もありません。それはひどいですが、それは本当です。
交渉できる場合は、要件と要件の変更の実装にかかる時間を(正確に)追跡する必要があります。つまり、過去および現在のプロジェクトからこのデータを収集する必要があります。
リクエスト(またはN個のリクエストの影響を受けるモジュール)ごとに、(開発者数などのリソースに加えて)元の推定時間と実際の完了時間を収集します。さらに良いことに、リクエスト/リクエストの変更のサイズを見積もってください(過去のプロジェクトやリクエストのコード行または機能ポイントの観点から)。
ユーザーと話すことができる指標があるとします。新しいリクエストには、たとえば1K行のコード、または平均5つの入力フィールド(50の関数ポイント)を持つ10のWebページが必要になることがわかっています。
次に、過去のプロジェクトに固有の履歴データ(コードの行ごと、Webページごと、実際の機能ポイントごと)を確認することで、これらのそれぞれのコストを絶対的な完了時間で見積もることができます。十分なデータがある場合は、実際の開発者数を追跡する要件を特定することもできます。
次に、それを使用して、履歴データに基づいて顧客に伝えます。プロジェクトの失敗は指数分布に従う傾向があると主張します。そして、あなたはあなたの顧客のために次の議論で武装しています:
過去および現在のプロジェクトと利用可能なリソースからのデータに基づいて、あなたが求めている要件がかかります
X失敗の25%の確率(または成功の75%)で完了する時間
1.5 * X 5%の失敗(または95%の成功)で完了するまでの時間
0.5 * X失敗の95%(または成功の5%)で完了する時間
時間リソースの量の関数としての失敗の確率は、通常95%、25%、5%になります(指数分布に似ています)。 )。その1.5は、最小限のリスクでほぼ確実に成功する可能性がありますが、それよりもはるかに小さい(元の0.5はほぼ確実に失敗することを保証します)。
あなたは彼らにそれを消化させます。彼らがまだ危険な命題(昨日行われた!)に行くなら、少なくともあなたは彼らにそう言ったことを書面で持っている。あなたのグループがアジャイルであるだけでなく工学的なものであるという希望がある場合、顧客はあなたの番号を真剣に検討し、それに応じてこのリクエストと将来のリクエストをスケジュールするかもしれません。
変更を要求することは無料の食事ではないことを、検証可能な明確な用語でエンジニアに説明するのは、エンジニアとしてのあなたの仕事です。