私が理解しているように、アジャイル手法のアイデアは、機能的なものを提供し、それを頻繁に提供することです。アプリケーションは、インクリメント後に最終的な形状のインクリメントに入ります。
ただし、初期のイテレーションでは、アプリケーションの基礎となるフレームワークまたは基盤を構築する可能性があるため、これは重要ですがユーザーには見えません。
これらの最初の反復で何がクライアントに配信されますか?足場コードを作成するときに、正しい方向への進捗状況をどのように示しますか?
2週間のスプリントが一般的です。
私にとっては、最初のスプリントまたは2は、この正確な理由により(後の「少ない」という説明が少ないため)、後のスプリントよりも「目に見える」機能が少なくなる可能性があります。
とは言っても、足場全体を構築するのに2週間かかることはなく、UIに表示するものは何もありません。
たぶん、最初のスプリントまたは2ですべての足場アイテムを肉付けすることはしません。たぶん、パーツは待って後で追加することができます。
たぶん、最初のスプリントには「ダミーデータを使用してWebページXを作成」があり、顧客に見せるために光沢のあるものを取得できます。そして、次のスプリントには「データベースのデータを使用するようにWebページXを変更する」があります。
アジャイルマニフェストは、作業ソフトウェアは包括的なドキュメントよりも価値があることを示唆しており、スクラムフレームワークはこの概念を採用して、ビジネス価値のあるテスト済みの作業ソフトウェアを提供することがすべてのスプリントの要件であることを示唆しています。
どうして?まあ、とりわけ、デザイナーと開発者はしばしばYNNI(あなたがそれを必要とすることは決してないだろう)のアイテムに多くの時間を費やすことの犠牲になります。残念ながら、あなたが話しているこれらのフレームワークは、多くの場合、この分野で大きな責任を負います。開発者はフレームワークがサポートしなければならないかもしれないすべてのものを構築し始め、突然3か月が経過し、それを示すビジネス上の価値がなくなりました。それから、フレームワークは彼らが最終的に必要とするものを本当にサポートしていません。
したがって、推奨されるアプローチは、現在実際に必要なものだけを構築し、それを今すぐ提供することです。
これは、再利用可能なパーツなどを構築できないことを意味するのではなく、現在のニーズの構築をサポートするために常に実行するだけです。さらに、それはあなたが道に来るものに完全に目隠しをしなければならないという意味ではありません-物事を構築しないでください、後でそれらを変更/強化することは不可能です。しかし、鍵は常にビジネス価値を提供することです。
環境のセットアップなど、何かを配信する前に絶対に確立する必要があるいくつかの重要なことがしばしばあります。これらのことのために、多くのチームは、基礎が置かれた「スプリント0」があると便利だと感じています。スプリント0は、製品のバックログまたはバーンダウンには適用されないという点で、他のスプリントよりも少し長くなる可能性がありますが、妥当な期間までタイムボックス化する必要があります。
これらの最初の反復で何がクライアントに配信されますか?
ユーザーにとって最高のビジネス価値を持つもの。たとえば、アプリケーションに複雑なビジネスルールがある場合、最初の反復には、コードの形式でエンコードされたビジネスルールのみが含まれます。これらのビジネスルールのコードがある限り、顧客は満足するはずです。 (実際にそのようなことを受け入れるように顧客を説得する問題は、まったく別の問題です。)たとえば、顧客のビジネスエキスパートに、ドメインが何をすべきかを表すユニット/受け入れテストを示し、コードがそれを緑の結果で渡すことができます。または、さらに良いことに、ビジネスの専門家にテストの作成を手伝ってもらいます。
の質問もあります
あなたはフレームワークや基盤を構築するかもしれません
実際に提供されるものよりもはるかに重要だと私は信じています。 Evolutionary Design には大きな意味があります。つまり、最初にアーキテクチャを作成するのではなく、時間をかけてアーキテクチャを作成する必要があります。基盤に関しては、これは通常、ある種のデータベースまたはUIフレームワークを意味します。その場合、「 良いアーキテクチャとは、重要な決定を延期できるものです 」という考え方があります。また、データベースまたはUIの選択は重要な決定です。たとえば、最初の反復からDBを使用する代わりに、データ用のメモリ内ストレージだけで十分な場合があります。
私たちがやろうとしているのは、最初の反復で可能な限り最も単純なアプリケーション(提供しているもののHello Worldバージョン)を提供することです。これには3つの重要な利点があります。
あなたが望むものはほとんど何でも届けることができます。インフラストラクチャのアイデアを構築することは、単に間違っている/俊敏ではない/持続可能ではない。
たとえば、完全に機能するHello Worldアプリの構築は数時間で構築できます。クラウドで、またはVMとして)サーバーを(一時的にでも)起動することは、数時間で実行できます。
これらは開発を開始するのに十分です。次に、CIが必要な場合はCIストーリーを追加できます。物理サーバーが必要な場合は、そのためのストーリーを追加してください。
しかし、1日目に配信を開始し、決して停止しない!
ただし、初期のイテレーションでは、アプリケーションの基礎となるフレームワークまたは基盤を構築する可能性があるため、これは重要ですがユーザーには見えません。
将来使用する可能性のあるフレームワークを構築する必要がないため、これは誤りです。アイデアは必要なものだけをビルドすることです( [〜#〜] yagni [〜#〜] も参照)。
スプリントゼロでは、実際の作業に備える必要があります。多くの人がこのスプリントで何をすべきかを主張していますが、私の意見では、バックログのアイテムで作業を開始できるときに終了しています。このステップには、PCの設定、ビルドプロセスの設定、フレームワークの選択などが含まれます。
スプリントゼロ(またはイテレーションゼロ)が完了したら、アプリケーションの作業を開始できます。バックログからアイテムを取り出し、1つずつ完成させます。イテレーション1を完了すると、何か便利なものになります。最初の反復には通常、最も重要な機能のいくつかが含まれています。
これらの最初の反復で何がクライアントに配信されますか?足場コードを作成するときに、正しい方向への進捗状況をどのように示しますか?
反復ゼロの後、明らかに何も提供する必要はありません。成果物はイテレーション1の後に提供されます。これには、反復に設定した機能が含まれています。
質問が「イテレーションXに入るものをどのように選ぶか?」である場合は、 これらのビデオキャスト (イテレーション0 AとBの一部のビデオ)を調べてください。
初期のイテレーション、特に最初のイテレーションには、アーキテクチャスパイクが含まれるか、少なくとも計画が必要です。これには、特定の量の発見時間と、おそらくいくつかのアーキテクチャプロトタイピングが含まれます。
あなたが言ったように、一般に、利害関係者/顧客にはあまり意味がないかもしれないが、強力なプラットフォームまたはパターンの方向を形成するために必要とされる構造的要件があります。 Aが完了するまでBの構築を開始できないため、これを回避することはできません。
アジャイルアプローチの一部は、お客様に連絡を取り、ドキュメントを作成する必要がないようにすることです。電話をかけるか、電子メールを送信するだけでよいので、ドキュメントは必要ありません。顧客の期待は適切に設定する必要があり、完了した作業は非常に簡潔で必要である必要があります。金メッキや「必要になるかもしれません」などはありません。Aで必要なものを作成してBに移動します。
プロジェクトへの攻撃方法に応じて、特定のモジュールを完了するために必要な基盤のみを構築する場合があるため、スプリント計画会議中に、現在のスプリントの計画を、お客様、そのスプリントに必要なものに応じて、いくつかの基本的な要件がある可能性があります。そのため、それがスプリント1に入ります。最初のスプリントが完了し、Aが構築され、Bを完了する予定です。
顧客とのタイムラインに同意した場合、その合意を満たす限り、顧客はおそらく1番目または2番目のことを気にしません。ユニットテストの結果はいつでも表示できますが、スプリント2(または3)の後に確認できるものがあると言って配信すると、それが強力な優先順位を設定します。顧客は開発者と同じくらい合理的であることが期待され、両方が同じ目標に向けて取り組んでいます。お客様のニーズを満たし、期待どおりに機能する完成したプロジェクト。顧客がスプリント20の後でプロジェクトが完了することを確認したいだけなので、スプリント1の後で何も見られないことを心配しているので(-ish)。