「スウォーミング」とは何ですか?


42

アジャイルまたはエクストリームプログラミングの文脈で言及された群れを聞いたことがあります。ペアリングを補完するようです。

正確には何ですか?いつ適用する必要がありますか?どうやってうまくやるの?


@CodeWorks:Googleでの検索では関連性のある結果はほとんど得られず、質問に対する明確な答えは得られませんでした。正規の答えがそこにある場合は、どうしてもここに投稿してください。
ジェイバズージ


戦略ビデオゲーム「星の剣」には、アリ/カマキリ/ハイブマインドの人々が研究コマンドを発行すると発言する「私たちは威厳のある研究室に群がっています」というナレーションがあります。私はそれが劇的な皮肉の感覚で着陸することを意図していたと常に思っていました。
エリックReppen

回答:


43

アイデアは、チームの全員が同じストーリーで同時に作業することです。誰もが異なるタスクに集中するのではなく、完了するまで一度に1つのタスクに集中します。その後、次の作業に進みます。そこで、全員が一緒に作業します。

これは、スプリントの終了前にストーリーを完了するのに苦労するチームを支援します。多くの場合、チームはすべてのストーリーの80%を完了しますが、完全なものはありません。未完成のストーリーは(事実上)エンドユーザーにとって価値がないため、これはストーリーの80%を完全に仕上げるよりも有用ではありません。チームの全員が一度に1つのストーリーに集中していると、ストーリーを完成させるのが簡単になります。これが群れの背後にある動機です。

ここにはいくつかの困難があります。たとえば、QAはビルド(またはデザイン)する前に常にテストできるとは限りません。この場合、早い段階で一緒に設計を確立する必要があります。その後、QAは実際の実装ではなく、設計に対して(最初は失敗する)テストを作成できます。


+1。面白い。この作品を実際に見ましたか?
CodeART

2
別の言い方をすれば、「できるだけ進行中の作品を少なくする」ということですね。
ジェイバズジ

1
@CodeWorksはい。私は現在、私がある程度の成功を収めているところでそれを使用しました。機能指向なので、非常に楽しい開発方法です。誰もが同じ目標に向かって同時に取り組んでいるので、チームワークが非常にうまく促進されることがわかりました。
Oleksi

1
@JayBazuziうん、ほとんど。ただし、チーム全体のサポートも重要です。
Oleksi

9
@CodeWorks、まったくありません。実際、それはおそらくそれを増加させました。全員が非常に緊密に協力していたため、浮上するブロッカーが少なかった。何かが起きたとき、少なくともチームの誰かがそれを解決する方法を知っていて、それが彼らの完全な関心を持っていたので、すぐにそうすることができました。また、コンテキスト切り替えは一般的に生産性にとって悪いです。CPUに聞いてください。:P
Oleksi

10

スウォーミングとは、複数の人が協力してタスクまたはストーリーを完了するという事実を指します。私の経験では、これは頻繁に行うことではありません。

通常、私のチームの各メンバーは、異なるタスクや異なるストーリーに取り組んでいます。誰かが遅れている場合、またはタスクまたはストーリーを早期に終了したい場合、他のユーザーは他のタスクの作業を停止し、「スウォーム」してタスクを完了します。完成されました。

私たちは最近、かなり退屈で面白くない仕事である少数の物語を持ちました。チームに小さなインセンティブ(ピザ)と締め切り(一日の終わり)を与えて仕事を終えたので、彼らは物語に群がり、午後に少なくとも数日間の仕事をノックアウトしました。彼らは仕事を早く終わらせ、その後、各チームメンバーは自分が取り組んでいたものに戻った。彼らは無料の昼食をもらい、退屈な性質のせいで引っ掛かる可能性のある仕事を早く終わらせ、チームは彼らのスプリントを先取りしました。ウィンウィンウィン。

「Swarming」は「ちょっと、それであなたを助けましょう」の空想用語にすぎません。


これは、他の回答とはまったく異なるようです。あなたは、「異常な、緊急の必要があるとき、みんなをそれに乗せてください」と言っています。@Oleksiは、「開発サイクルを計画するときは、各人が個別のタスクを並行して作業するよりも、一度に1つのタスクに全員を配置する方が良い」と述べました。どちらの定義も妥当であり、両方とも有用なプラクティスですが、彼の投票数は4倍なので、彼の答えは最も広く受け入れられている定義を反映していると思います。
ジェイバズージ

@Jay Bazuzu:全員がスプリント計画の一環として単一のタスクを実行する場合も、必要に応じて有機的に発生する場合も、定義はほぼ同じです。全員が単一のタスクで共同作業します。
ブライアンオークリー

ここであなたの答えが非常に重要だと思います。「受け入れられる」他の答えは「何」です。しかし、あなたのものはどのように対処するようです。
猿の稲妻14

2

スウォーミングは、実際には敏ility性の中心的な概念です。「問題があるとき」に行われるものではありません。スウォーミングとは、最も単純な形式で、チームがアイテム(ストーリー)を共同で作業し、完成するまで作業することを意味します。核となる概念は、「開始を終了して終了する」ことです。つまり、すべての開発者が個別にストーリーに取り組んでいるのではなく、チームはより限定されたストーリー/タスクのセットに焦点を合わせ、各アイテムをより早く完成させます。これは、シングルスレッドシステムとマルチスレッドシステムの違いと考えてください。ユーザーストーリーに実行する必要がある10のタスクがあり、各タスクが8時間である場合、1人の開発者が各タスクを連続して作業し、80時間または約2週間でストーリーを完了することができます(10日間のスプリントが与えられます) 1日あたり8開発時間)。2人の開発者がタスクを分割して同時に作業した場合はどうなりますか?この方法で1週間で同じ80時間の作業を完了できます。3番目を追加すると、3〜4日で完了することがわかります。

スウォーミングは、いくつかの方法で実行できます。

  1. ペアプログラミング(2人の開発者が並んでコードを操作します。1人はコードを記述する「ドライバー」、もう1人はナビゲーターであり、長期的な方向を念頭に置いてコードのレビューを同時に行います。
    1. ペア作業:開発者とテスターは、同じ作業(1つのコーディングと他のテスト、ライティングの自動化など)で同時に作業します。
    2. 上で述べたように群がるのは非常に一般的です。通常、チームメンバーはストーリーをまとめますが、この方法ではそれぞれが個々のタスクを所有します。
    3. Mobプログラミング:チーム全体が一度に1つのストーリー(またはタスク)に集中します。

すべての開発者にストーリーを提供するチームは、「進行中の作業」またはWIPが多すぎる傾向があり、多くの場合、多くのストーリーが開始されますが、完了しません。これは反パターンであり、ベストプラクティスではありません。

群れをなすチームは、WIPが少なく、ストーリーが完成する傾向があります。したがって、これは敏is性の中核であるプラクティスです。


1

InfoQに関する次の記事では、スウォームに対する1つのアプローチについて説明しています。

  • チームはコーディングタスクのほとんどにmobプログラミングを使用しています
  • 多くの場合、チームの一部または個々のチームメンバーは、短い間隔でチームに分かれて参加します。
  • 誰もがすべてを行います(役割なし)
  • チームは見積もりを使用していません。WIPは常に1つであり、スタンドアップや同様の儀式は不要です。

詳細な説明については、記事を参照してください。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.