Compartir a través de


ソフトウェア開発とサッカー

今日はチーム開発コラムです 。 「ソフトウェア開発は、チームスポーツである」 とは、昔からよく言われています。私はこの言葉が好きで、特にサッカーに例えてお話させていただくことが多いです。今日はそんな話の一部分を。

サッカーには、役割があります。 FW, MF, DF, GK 、もちろんさらにストライカーやトップ下、ボランチなどより細分化することができるのですが、ソフトウェア開発でも同じように役割があります。業務SE、アーキテクト、デベロッパー、テスト担当者、リリース担当者、構成管理者・・・。
♯ 役割は「兼務上等!」です。サッカーでもマルチプレイヤーがいますし、状況によってMFがディフェンスラインにはいったりもしますよね。

役割は決めれば、それでいいというわけではないです。また個々の役割が他の役割を意識せずに、自分の与えられたことだけをやっているわけにもいきません。サッカーでも、攻めているときは、ディフェンスラインを上げてカウンター攻撃に備える。機を見てオーバーラップして攻撃に参加するなど、ゲーム中はそれぞれのミッションをこなしつつ、他の役割とのコラボレーションしています。

しかし、これって、一長一短にできるものではありません。相互の理解、取り決め、そして厳しい練習があるわけですね。もちろん、個々の技術力や技術力の向上がベースになっているのは言うまでもありません。

ソフトウェア開発の現場に目を向けてみると、個別最適(個人スキル向上や独自のやり方の確立)を追及することが多く、チームとしての戦略、プロセスやコラボレーションを追及しているのかというと比較的そうではないと言わざるを得ない状況ではないでしょうか。

「さぁ、これからチームで協調してやっていきましょう!」といきなりいったところでそんなことができるわけもないですし。サッカーのたとえに戻るとチームで活動する練習をしていないし、戦術も規律もない・・・ということだと、どんなに「チームで生産性上げよう!」といったところで実現するのはやっぱり難しいですよね。

規律といえば、開発現場でプロセスを決めましょうとか、ルールを決めて、従いましょうというと、今までのやり方を少なからず変更しなければならず、個別に最適化していると特に反発があったりしてなかなかうまくいかないですね(何かやろうとすると必ず一時的に生産性は落ちます(そんな話はまた今度に取っておきます))。しかし、規律は大切です。そして、必要最小限の規律は、個々の作業の最適化とコラボレーションを促進します。これは間違いありません。

かつて、名古屋グランパスエイトを指揮し、下位チームから上位チームに引き上げた名将アーセン ベンゲル氏も「discipline(規律)」について何度も取り上げていました。
♯ 余談ですが、私は名古屋グランパスエイトのファンで、Jリーグ発足当初のリネカーや天才ストイコビッチ、デュリックスがお気に入りでした(^^ ちなみに名古屋という土地とは縁もゆかりもありません。。。

ただ、ソフトウェア開発では、規律を決められても、そんなに練習するわけにもいけませんし(教育という練習は必要ですが)、規律に従うだけでは、返って個々の生産性を犠牲にしてしまう(規律を守るための単純だが煩雑で非クリエイティブな作業が多い、今までやっていなかったからそれがどんなに重要な作業でも単純にいえば仕事量が増える)危険性もあります。そういうところでは、チームの開発基盤となる仕組みと役割に応じて最適なツールが重要になってきます。

昔、提案活動をしているときに、「うちはCMMI レベル3だ。だけど開発生産性が著しく低下してしまった。」ということをいくつもの会社や組織でお聞きしました。
取り決めをし、エビデンス(証拠)を残し、それを元に組織の成熟度をチェックし、さらに改善していくということは非常に重要なことですが、取り決めを守る、エビデンスを残すというのは大変な作業です。支援する仕組みがないとこの作業に忙殺されてしまい、本来のやるべきことに専念できなくなる危険性があります。品質面では向上が見込める可能性もありますが、生産性を犠牲にしては、ソフトウェア開発は成り立たなくなる危険性があります。

なんか話が堅苦しくなってきてしまいましたが、何か行き詰まりを感じていたり、解決先を模索しているときには、身近な話題に置き換えて考えてみるのも有効ではないでしょうか?

チームスポーツだとサッカー以外でもバレーボールなど皆さんが好きなスポーツで考えてみるといいかと思います。それ以外でも、自分の体(健康)といった考え方も面白いです。
そういえば、先日のMSDN オフラインセミナーではソフトウェア開発を 「伝言ゲーム」 に例えてお話させていただきました。

ちなみに、ここで書いた開発基盤と個別最適なツールというのは、Microsoft でいうと、Team Foundation Server と Team Edition for Architects, Developers, Testers, Database Professionals といった Visual Studio Team System となりますね。

ながさわ

Comments