アジャイルソフトウエア開発の目的は動くソフトウエアを素早くかつ頻繁に提供することだ。スワーミングはアジャイルチームがこの目的を達成するのを支援する手法のひとつだ。スワーミングとは何か、どんな利点があり、どのように導入すればいいのか。
Vin D'Amico氏はagile teams swarm to greatnessという記事でアジャイルソフトウエア開発を実践しているチームは、より少ない計画でより多くのソフトウエアを提供でき、素早く返答できると言う。
計画から、設計、コーディング、テスト、そして納品まで素早く行えます。そして、これを繰り返します。ソフトウエアが利害関係者の設定したゴールに達するまで続けるのです。
しかし、どうしてそのように素早く返答できるのか。氏曰く、
(…) 優れたチームは群れる(swarm)からです。彼らはすぐに問題を解決しようとしたり、障害を排除しようとしたりします。出来なかった場合に最後の手段としてバックログに積み上げるのです。
seven strategies for team swarmingという記事では、David Bernstein氏はスワーミングが複雑な問題を解決できる効率的なチームを生み出すのにどのように役立つか説明している。
スワーミング実施すると、チーム全体がひとつの問題に対処します。こうなると各自がお互いを知り、一緒に働きやすくなります。一般的に集団は形成期(互いを知る)、対立期(衝突が発生し、解決する)を経て、活動期(高い能力を有するチーム)になります。皆にチームになる機会を与える必要があるのです。
スワーミングはペアプログラミングと同じような働きをする。チームのメンバが近くで同じタスクに取り組むようにするのだ。
1人で働くのではなく、単一のタスクを2人や3人で取り組みます。ペアで働くことから得られる勢いは2人の人間を同一のタスクに割り当ててしまうことを相殺します。ハイパフォーマンスなチームは常にペアで働いています。
スワーミングとは何か。InfoQはYahooグループの議論の要約を以前、記事にしている。この記事はスワーミングの目的を説明している。“ビジネス側が価値を置く仕事にチームを注力させてやり遂げること”や“チーム全体で可能な限り始めからひとつのストーリーに取り組みことで仕事の質と一貫性を向上させる”といった目的だ。Vin D’Amico氏によれば、”[スワーミング]は端的に言えば単一の問題を協力して対処したり、仕事を素早くかたづけたりする行為です”。David Bernstein氏の定義では“スワーミングはチーム全体で単一の問題を解決するために働く”ことだ。
Oleksi Derkatch氏はスワーミングがどのように働き、何を生み出すか説明している。
各開発者が別々のストーリーで働くのではなく、すべての開発者がひとつのストーリーで働く(群がる)というアイディアです。目的はより多くのストーリーを完成させることです。全体の80%の機能を完璧にするのではなく、すべての機能を80%完成させた方がいいのです。
Renee Troughton氏は組織がスワーミングを使ってどのようにチームを組成しイノベーションを起こすかについてthe new age of businessという記事で書いている。
ほとんどの組織は‘リソース’をプロジェクトからプロジェクトへと投入します。しかし、投入される人の嗜好や情熱についてはほとんど考慮していません。さらに、仕事の速さと投資収益率の関係も考えていないのです。
アイディアに対して新生児を扱うように注力してくれる情熱を持った人が必要です。(…) ある仕事の参加することに興味を持った人は意志を表明して仕事に参加し、最後までやりきるでしょう。
あなたのチームはスワーミングしているか。ソフトウエアを素早く頻繁に提供することに役に立っているか。