協力関係にあるチームの構成と、ジェネラリスト(多能工的開発者)とスペシャリストの両方で構成されたチームには、関連性があると言われている。これはアジャイルコミュニティの中では暗黙の了解となっている。Dave Gray氏(リンク)は彼のブログの中で面白い図を描いている(リンク)。この図はジェネラリストとスペシャリストの関連を表している。Dave氏のブログによると、ジェネラリストは多くの分野にわたって全般的な理解をしている。ジェネラリストは特定の問題を解決するのに必要なスキルは持っていないかもしれないが、問題をがどのようなものであるか、分類する分野で力を発揮する。スペシャリストの方はというと、ジェネラリストとは対照的に、特定の分野に深い理解を持っている人である。スペシャリストは問題解決や、計画を実行する上で最高のパフォーマンスを発揮する。Dave氏によれば、プロジェクトを成功に導くためには、両方のタイプのメンバーがプロジェクトにいる必要があるとのことである。
Jurgen Appelo氏は(リンク)このジェネラリストとスペシャリストの理論に対して別の意見を持っている。彼はブログ (リンク)の中で述べている内容は、スペシャリストはすばらしいだけではなく、自分の組織内のチームメンバーが多能工的になっていくのを防ぐことができるというものである。
哲学者かつ経済学者であるAdam Smith氏(リンク)が彼の代表作のThe Wealth of Nations (邦題:国富論(リンク) から社会は多くのことを学んできました。これは、専門に特化することで生産性が著しく向上し、繁栄をもたらすというものです。アジャイル論者が紹介しているような多能工的なチームはこれをすべて真っ向から無視するものです。
彼は以下のように続けた。
プログラマがWebサイトのデザインを行えば、がっかりするような結果になるでしょう。ピクセルとセンチメートルの違いに気づくことができないメンバーも中にはいるでしょう。私はソフトウェアエンジニアによる機能的なウェブサイトのデザインを見たことがありました。もしこのデザインを使っていたら、サイトの訪問者間で現実の騒動に発展することもありえたと思っています。
Jurgen氏は David J. Anderson氏の本を引用して自分の説の強化をおこなった。
Agile Management for Software Engineering(リンク)(邦題:アジャイルソフトウェアマネジメント)という書籍の中で、David J.Anderson氏は Capers Jones氏が行った研究について触れています。これ(原著 272ページ)によると、通常はジェネラリストで構成されたチームよりも、スペシャリストで構成されたチームの方がパフォーマンスは良いということです。
Jurgen氏によると、スペシャリストに起因する非効率性は、ジェネラリストに起因する非効率性に比べてきわめて小さいとのことである。仕事をするという部分において、ジェネラリストは明らかにスペシャリストよりも速度が落ちるからである。
一方で、アジャイルコミュニティの中には、コストの問題でスペシャリストはなるべく減らす方がいいと強く信じているメンバーもいる。David Christiansen氏は(リンク)「ジェネラリストが優先。スペシャリストは最後(リンク)」という意見を持っている。適切なチームの構成に関する質問に対する回答の中で、彼は以下のように説明をした。
もしできるならば、スペシャリストはチームから外すべきです。一芸しかできない気むずかし屋(リンク)のポニーであるかもしれないからです。チーム全体を改善していくことに興味がなく、逆に障害となる可能性があります。その上、他の仕事をしないで特定の決まった作業のみを行います。そのため、スペシャリストは自然と彼らの技能に合うタスクが流れてくるのを待つのに時間を使うようになります。そうなると、プロジェクトの費用を浪費することになるか、そのために予算が取られることになります。どちらにしても、リスク、スケジュール依存性、失敗などの確率が増えます。ジェネラリストの場合は、プロジェクトのライフサイクルの全体にわたって価値を発揮し続けます。ジェネラリストはすべてのフェーズでプロジェクトの手助けをすることができます。依存性が少ないために、スケジューリングが大きな問題になることもありません。ジェネラリストから構成されたチームは、クリティカルパス上の依存関係を排除することができ、遙か先のゴールをめざすことができるでしょう。
これらの意見に対して、Scott Ambler氏は(リンク)中間の案を出した。彼の考えは「多能工としても仕事ができるスペシャリストでチームを構成するべき」というものである。
チームを構築する一つのアプローチは、ジェネラリストと、スペシャリストの両方を入れることです。ジェネラリストはチームメンバー間をつなぎ止めるかすがいとしての役割と、プロジェクトの全体像にフォーカスする役割を果たします。スペシャリストはプロジェクト内の問題の詳細にフォーカスします。これはジェネラリストの強みとスペシャリストの弱みが調和するのでうまく行きます。このようにジェネラリストとスペシャリストをペアにするのは役に立つことが多いです。さらに良いアプローチとしては、専門技能を1つか2つ有するジェネラリスト(多能工として仕事ができるスペシャリスト(リンク) )でチームを構成することです。
Scott氏によると、多能工的スペシャリストというのは、さまざまなことをどのように組み合わせればいいのかを把握する能力が高いとのことである。結果としてチームがどのように活動しているのか理解するのに優れたメンバーとなる傾向が高い。
Jeff Atwood氏も同様のことを述べ(リンク)、多能工的スペシャリストに賛同した。Jeff氏によると、多くのソフトウェア開発者は、自分の持っているスキル群や得意分野を深める方向に努力している。エンジニアリングのスキルの幅広い世界と比べて、コーディングに特化することはきわめて狭い世界に閉じこもってしまっていると言える。あらゆる方面に力を発揮できるソフトウェア開発者となるようにスキルを伸ばすべきである。
結論としては、すべてのアジャイルコミュニティのメンバーが、スペシャリスト化することが正しい方向であると感じているわけではないということである。人々やプロジェクトによって、ジェネラリストとスペシャリストをどのような割合で入れるべきか、という希望は変わってくる。あるいは、共同してプロジェクトの成功に向かっていくことができる、多能工的スペシャリストをメンバーにしたいという希望を持っているものもいる、ということである。
原文はこちらです:http://www.infoq.com/news/2008/06/agile-generalist-specialist