はじめに
受託開発においては、ソフトウェア開発に詳しくないクライアントと協働することが多々あります。本記事では、そのような状況下でアジャイル開発を成功に導くための効果的なクライアントフェイシングテクニックを紹介します。
受託開発におけるクライアントの特徴と課題
受託開発では、クライアントがソフトウェア開発に関する知見を持っていないことが一般的です。そのため、以下のような特徴や課題が見られます。
- ウォーターフォールで進めても、後になって頻繁に変更要求が発生する一方で、納期は守るよう要求される。
- 技術的な説明に興味を示さず、後になって不満を訴えてくる。
- 予算に見合わない夢を持ち、ユーザーのニーズを見落としがちである。
- 市場に対する様々なコミットメントを抱えており、ステークホルダーからの要望による要件変更が発生しやすい。
これらの特徴や課題から、プロジェクトの遅延、赤字、プロダクトの品質低下など、関係者全員が不幸な結果に陥るリスクがあります。
アジャイル開発で臨む際の注意点
上記の課題を乗り越え、アジャイル開発を成功に導くためには、以下の注意点に留意する必要があります。
1. 多段階契約の実現
プロジェクトを複数のフェーズに分けて契約を結ぶことで、各フェーズでアジャイル開発を実施し、初期のローンチに向けた開発を円滑に進められます。初期フェーズでは以下の項目を定義することをお勧めします。
- カスタマージャーニーマップ
- プロダクトロードマップ
- ビジネスモデル
- 収益構造
- ユーザーストーリー
これにより、プロダクトの全体像を明確化し、クライアントと認識を合わせることができます。特にユーザーストーリーについては、初期の想定ストーリーとポイントを記載し、次フェーズ以降の概算工数として活用できます。
1.1. 現実的な目標設定
多段階契約を結ぶ際、予算と工数が合わないことが判明した場合、プロジェクトの断念も視野に入れる必要があります。クライアントの夢と現実のギャップを明らかにし、実現可能な目標を設定することが重要です。クライアントの期待をマネジメントし、現実的な計画を立てることで、プロジェクトの成功確率が高まります。
1.2. 試作フェーズの導入
技術的な難易度が高い要求や機能ボリュームが多い場合、完成品がイメージと異なるリスクがあります。このリスクを軽減するために、マイルストーンに試作的なフェーズを組み込むことをお勧めします。試作フェーズでは、クライアントとベンダー双方が機能や設計についての理解を深め、修正点を早期に発見できます。この取り組みにより、クライアントの満足度が高まり、無駄な手戻りを防ぐことができます。
2. アジャイル開発を行える体制の整備
クライアントにアジャイル開発の知見がない場合、プロジェクトマネージャーの言うことを迎合してしまうリスクがあります。これを防ぐために、クライアントであるプロダクトオーナー(PO)に対する教育を実施し、模擬的なイテレーションやスプリント会議を通じて、プロダクトを発展させる仕組みを整えましょう。繰り返しスプリントを行いながらプロダクトを改善していく点についても、クライアントの理解を得ることが大切です。
3. 生産性と残作業工数の数値化
ストーリーポイントやベロシティをスプリント会議で視覚化することで、マイルストーンまでの残作業ボリュームや生産性を逆算して見積もることができます。機能追加や修正依頼によりマイルストーンまでに終わらない見込みとなった場合、追加予算の請求も可能になります。ただし、自分たちの不手際によるフィードバックの増加ややり直しについては請求できないため、受け入れ条件をクライアントと確実に握っておく必要があります。
4. 頻繁かつ透明性のあるコミュニケーション
アジャイル開発では、クライアントとの頻繁で透明性のあるコミュニケーションが欠かせません。定期的なスプリントレビューやデモを通じて、プロダクトの進捗状況や課題を共有し、クライアントからのフィードバックを得ることが重要です。また、バーンダウンチャートなどの可視化ツールを活用し、プロジェクトの状況をわかりやすく伝えることも効果的でしょう。
5. 信頼関係の構築
クライアントとの信頼関係は、アジャイル開発を成功に導く上で非常に重要です。クライアントの懸念事項に真摯に耳を傾け、適切なソリューションを提案することで、信頼関係を築いていきましょう。また、クライアントの意思決定プロセスを理解し、適切なタイミングでの情報提供や助言を行うことも大切です。
6. 技術面の理解促進
クライアントが技術面に興味を示さない場合でも、プロダクトの品質や開発の効率化に直結する重要な事項については、わかりやすく説明することが必要です。以下のような工夫を行うことで、クライアントの技術面への理解を深めることができます。
- 技術的な概念をビジネス上の利点と関連付けて説明する
- ビジュアルエイドやメタファーを用いて、複雑な概念をシンプルに伝える
- クライアントの関心事に沿った事例や実例を示す
- 技術的な意思決定が及ぼす影響について、具体的なシナリオを用いて説明する
クライアントが技術面の重要性を理解することで、より適切な意思決定が可能となり、プロジェクトの成功確率が高まります。
まとめ
受託開発でアジャイル開発を成功させるためには、クライアントの特徴や課題を理解し、多段階契約の実現、現実的な目標設定、試作フェーズの導入、体制の整備、生産性と残作業工数の数値化、頻繁かつ透明性のあるコミュニケーション、信頼関係の構築、そして技術面の理解促進に注力することが重要です。これらのテクニックを活用することで、クライアントとの円滑なコミュニケーションを図り、プロジェクトの成功に導くことができるでしょう。アジャイル開発の適切な実践により、クライアントとベンダー双方にとって満足度の高いプロダクト開発が実現できます。