swarmingがアジャイルまたはエクストリームプログラミングのコンテキストで言及されたと聞きました。ペアリングを補完するもののようです。
正確には何ですか?いつ適用すべきですか?どうやってうまくやるの?
チームの全員が同じストーリーに同時に取り組むという考えです。全員が異なるタスクに集中する代わりに、完了するまで、全員が一度に1つのタスクに集中します。次に、次の段階に進み、全員が一緒に作業します。
これは、スプリントが終了する前にストーリーの完成に苦労しているチームを支援します。多くの場合、チームはすべてのストーリーの80%を完了しますが、完全なものはありません。完成していないストーリーは(事実上)エンドユーザーにとって価値がないので、これはストーリーの80%を完全に完成させるよりも役に立ちません。チームの全員が一度に1つのストーリーに集中していると、ストーリーを完成させるのが簡単になります。これがスウォーミングの背後にある動機です。
ここにはいくつかの困難があります。たとえば、QAは、構築(または設計)する前に常にテストできるとは限りません。この場合、設計を早い段階で確立する必要があります。そうすると、QAは、実際の実装ではなく、設計に対するテストを(最初は失敗して)作成できます。
スワーミングとは、複数の人が一緒に作業またはストーリーを完成させるという事実を指します。私の経験では、これはあなたが頻繁に行うことではありません。
通常、私のチームの各メンバーは、異なるタスクや異なるストーリーに取り組んでいます。誰かが遅れている場合、またはタスクまたはストーリーを早期に完了したい場合は、他の人々が他のタスクの作業を停止し、「群がって」タスクを完了します。つまり、全員が単一のタスクまたはストーリーでそれまで作業します完成されました。
私たちは最近、かなり退屈で面白くない仕事である少数の物語を手にしました。チームに小さなインセンティブ(ピザ)と締め切り(1日の終わり)を与えて仕事を終えたので、彼らはストーリーに群がり、午後に少なくとも2日間の仕事をノックアウトしました。彼らは仕事を早く終わらせ、それから各チームメンバーは自分が取り組んでいたものに戻りました。彼らは無料の昼食をとった、私はそれが鈍い性質のために引きずられていたかもしれない仕事を早くにやった、そしてチームは彼らのスプリントより先に進んだ。 Win-Win-Win。
「スウォーミング」は「ちょっと、私たちがあなたを助けましょう」の派手な言葉にすぎません。
スワーミングは、アジリティの中心的な概念です。 「問題がある時」に行うことではありません。最も単純な形のスウォーミングとは、チームがアイテム(ストーリー)について共同で作業し、それらを完了するまで作業することを意味します。核となるコンセプトは、「最初から終わり、最後から始める」ことです。言い換えれば、すべての開発者が個別にストーリーに取り組んでいるのではなく、チームはより限定されたストーリー/タスクのセットに焦点を合わせ、各項目をより早く終わらせます。シングルスレッドシステムとマルチスレッドシステムの違いと考えてください。ユーザーストーリーに実行する必要のある10のタスクがあり、それぞれが8時間である場合、合併症がないと仮定して、1人の開発者が各タスクを連続して処理し、80時間または約2週間でストーリーを完了することができます(10日間のスプリントがある場合) 1日あたり8開発時間)。 2人の開発者がタスクを分割して同時に処理した場合はどうなりますか?これにより、同じ80時間の作業を1週間で完了することができます。 3分の1を追加すると、3〜4日で完了することがわかります。
ウォーミングはいくつかの方法で実行できます。
すべての開発者にストーリーを提供するチームは、「進行中の作業」またはWIPが多すぎる傾向があり、多くの場合、多くのストーリーが開始されますが完了しません。これはアンチパターンであり、ベストプラクティスではありません。
群がるチームは、WIPが少なく、ストーリーが多くなる傾向があります。つまり、開発済み、テスト済み、承認済み、展開の準備ができているということです。したがって、これはアジリティの核となるプラクティスです。
InfoQの次の article は、スウォーミングへの1つのアプローチを説明しています。
詳細な説明については、記事をお読みください。