【43】アジャイルなコミュニケーションシステムを導入する
失敗したプロジェクトのふりかえりをすると、プロジェクト・マネジャー、チームメンバー、ステークホルダー間のコミュニケーション断絶を非難することに終始するものです。プロジェクト・マネジャーはチームメンバー間のコミュニケーション断絶を軽減し、絶えず効果的にコミュニケーションをとるよう教わります。ところが、プロジェクト・マネジャーはこの責任の重みに過剰に反応してしまうことがあります。必要不可欠なコミュニケーションと、プロジェクトの進行に悪影響を及ぼすノイズだらけのコミュニケーションとを混同してしまうのです。
こうした問題を解決しようと、ソフトウェア開発の取り組みは柔軟でアジャイルなプロセスへと向かっています。アジャイル開発手法にとって重要なのは、予測不能な変更にチームが効果的に対応して、プロジェクトのフィーチャーを見直し、優先順位づけをやり直せるような、タイムリーなコミュニケーションループが存在することです。
アジャイルなプロジェクト・マネジャーは、どうやってコミュニケーションを必要不可欠なものだけに絞るのでしょうか? 彼らは毎日の「15 分スタンドアップ」ミーティングを推進しています。このミーティングでは開発者に、前回のミーティングから達成したこと、「今日」達成しようとしていること、それを達成するために想定される障害について説明させます。このスタンドアップミーティングでリスクになるのは、開発者の自己評価だけを頼りにしているところです。これに解決策はあるのでしょうか? スタンドアップミーティングをさらに効果的にするために、各機能のテスト結果を表示できるようなタスク管理ツールを導入しましょう。実際のコードがどんな状態にあるのか、ツールはウソをつきませんし、テスト結果は開発者の自己評価のよい補強材料にもなります。機能とそれがパスしたテストセットを対応づけたレポートを提示すると、その機能の現状がより正確にわかってよいでしょう。
例えば、継続的インテグレーションツールの結果を見ると、客観的な進捗状況を知ることができます。こうしたツールを利用することで、スタンドアップミーティングにおけるコミュニケーションを必要不可欠なものだけに減らせます。すなわち、エッジケース、インテグレーション課題、バグや欠陥による障害報告(うまくいけば、タスク管理ツールによって記録済み)および想定外の開発項目といったものだけに絞れるのです。全員が共有してアクセスできるツールを使って開発状況の「証拠開示」をすることによって、開発者はより精度の高いフィードバックを得ることができます。フィーチャーとタスクの間にある見えない関係が早期に見つかることも多々あります。
同期コミュニケーションは常に非同期コミュニケーションよりも効果的だとよく誤解されていますが、適切な開発ツールと短期の非同期コミュニケーションループを加えると、対面の同期コミュニケーションを効果的に補完することができます。
一般的なフィードバックには Wiki が使えます。Wiki を使うと、開発の進捗状況に合わせて、プロジェクトのビジョンを簡単に調整していくことができます。また、Wiki のようなシステムを使うことで、情報をタイムリーに入手でき、機能開発の進捗を妨げている技術詳細に関心のないステークホルダーに対しても、ハイレベルなコミュニケーションチャンネルを提供することができます。一方、ソフトウェア開発者は日々の技術的作業をこなしていくうちに、プロジェクト全体に関するビジョンがあいまいになっていきます。Wiki はプロジェクト参加者全員に明確な共有されたビジョンをもたせるのにも効果的な方法となります。
プロジェクト・マネジャーは、いかにして情報のループを緊密にノイズなく保つかという問題に取り組むことによって、プロジェクトが失敗したときによく非難されるコミュニケーション断絶という問題を避けることができます。プロジェクト・マネジャーに課せられた責任と課題は、プロジェクトのあらゆるレベルにおいてフィードバックループを整備することなのです。