web-dev-qa-db-ja.com

非技術系クライアントに、アプリケーションの仕様を簡素化する必要があることをどのように説得するのですか?

多くの場合、文字通り数百の不要な機能を備えたアプリケーションを新しいクライアントが使用する状況に直面します。プロジェクトが成功する可能性があるために、物事を大幅に簡略化する必要があることは明らかです。どのようにしてクライアントに最小実行可能製品(MVP)アプローチを採用し、簡素化するよう説得しますか?

編集:

したがって、現在のトップの答えは、巨大なアプリケーションの時間/コストの見積もりをクライアントに提供することです。この答えはこの状況の本当の問題を扱っていないので、私はこの答えがあまり好きではありません。そしてそれは-大規模なアプリケーションをスペックアウトして、最初からそれを構築するのは悪い習慣です。最初は小さくてシンプルなMVP基盤を構築する方がはるかに快適です。その後、その基盤に小さな機能を1つずつ追加します。では、クライアントにこの方法でソフトウェアを構築するように説得するにはどうすればよいでしょうか。

15
Ryan

数百の機能を高品質で実行するのにかかる費用/時間を見積もること。非常に、非常に少数のクライアントが彼らの口があるところに彼らのお金を置きます。

15
Telastyn

2つの言葉:ユーザーストーリー。

クライアントのGet AClue®を支援する最速の方法はthemを使用して、必要な機能またはページのすべてのユーザーストーリーについて説明することです。次のようないくつかのことが起こります。

  1. 彼らは、ページ/機能が実際に何をすることになっているのかについてthinkする必要があります。
  2. あなたはより多くの詳細( "それから?...とその後? ...")を要求するにつれて、マジックを持つことによってすべてが生まれるわけではないことを彼らは理解し始めますSpace Monkeys™が週末に飛行します。
  3. 彼らは作成プロセスの真のパートナーになります。つまり、彼らが理解することを意味しますなぜすでに80%完了しているものについて考えを変えると、a)スケジュールの遅延、およびb)コストの増加を引き起こします。

真剣に。ユーザーストーリー所有者によるは、プロセスに少なくともある程度の正気をもたらすために私が知っている最高のツールの1つです。

12
Peter Rowell

コストと本番稼働までの時間について話し合いながら、要件(「必須」、「必須」、「必須」)のランク付けを依頼して、必要な機能の最小限の実行可能な製品セットが必要になるようにします。バージョン1で「必須」であり、残りの要件を、最初のバージョンの後にスプリントとして達成できるバックログのセットに入れます。できれば、必須ではない "Nice to have"がパックの後ろに移動し、それらのスプリントに到達するまでに、(製品の実際の経験から)より重要な新しいものがトップに浮かぶことを願っています。

クライアントは、ビジネスのコストと製品を迅速に入手することの重要性を考慮しており、バックログに入れて「所有するナイス」を直接却下しないことを理解する必要があります。

OP編集に対応するための編集:実行可能な最低限の製品を早期にリリースすることがなぜ良いのかをクライアントに納得させるには、製品が実際のユーザーによって使用されるまで、製品が成功するかどうか(特にユーザビリティの観点から)を知ることが難しいことを説明します。顧客が初期の製品をユーザーベース全体に売り出すのをためらっている場合は、「限定ベータ版」を実行することをお勧めします。このベータ版は、対象とする顧客のサブセットのみが利用できるようにします。このアプローチの裏側は、製品が使用できないという遅い決断を伴う、長くて費用のかかる開発サイクルであることを伝えます。 37 Signalsは、これについていくつかの優れたリファレンスを作成しています。 Getting Real および Rework です。 Getting Realは無料でWebから入手できます。

7
Turnkey

状況への不満の主な原因は、おそらく顧客が使用している認識および誤解を招く/誤った用語の1つです。顧客は通常、要件のリストをあなたのところに持ってきませんが、彼らがそれについて考えることができるすべてのもののウィッシュリストmightが役立つかもしれません。これらはすべての要件ではありません顧客はまだ各機能が本当にであるかどうかを考えるために時間を費やしていないためです必須

これは必ずしも問題になるとは限りません

顧客がこれらすべての機能にお金を持ち、それを手放そうとしているのに、実際の、実際の問題を解決することに本当に関心がない場合顧客が持っている場合、これは非常に有利なプロジェクトになる可能性があります。非常にまれにしか起こりません。ほとんどの開発者にとって、プロジェクトは最終的には顧客にとって成功しないと事前に感じることができるため(開発者としてのあなたにとって財政的に成功したとしても)、それは魂を殺す仕事です。また、固定コストのプロジェクトで多くの不確実性が生じる可能性が高く、大規模プロジェクトのリスクを誤って判断することが実際に問題になるため、リスクも高くなります。

問題がある場合はどうなりますか?

あなたがそのまれな状況にいないと仮定しましょう。この場合、ウィッシュリストの主な2つの欠点に対処する必要があります。

  1. 顧客が要件のこのような大きなリストを開発するコストについて正しい考えを持っている可能性は低いので、実際に必要な金額の契約を結ぶことはほとんどありません。
  2. このウィッシュリストが、顧客が抱えており、解決したい本当の問題を正確かつ簡潔に説明しているとは考えられません。

私の経験では、1を修正するために2に対処する必要があります。actual問題までドリルダウンすると、開発者であるあなたが、顧客自身が考えもしなかった方法で問題を解決することで創造的に飛躍しますこれらのソリューションは、完全なウィッシュリストの実装よりもはるかに安価で迅速になる可能性があります。

どのように修正しますか?
マシューフリンが答えで述べているように、まず顧客に要件の優先順位を付けさせることから始めます。これは必ずしも簡単なことではありませんが、彼らにそれを強制します。必要に応じて、「誰かがあなたの頭に銃を構えた場合、どの要件を守りますか?」というフレーズを使用します。このプロセスの間に、顧客が個々の要件が何を意味するのかを明確に理解していないことがよくあります。その場合は、Peter Rowellの提案に従って、お客様にユーザーストーリーを紹介してもらいます。あなたと顧客は問題と要件をよりよく理解し始め、優先順位付けに戻ることができます。顧客の問題を解決するのに十分な知識があると確信できるまで快適になるまで、これらの手順を必要なだけ繰り返します

ソリューションの開発に関する質問にどのように答えますか?優先順位付けされた要件のリストを取得したら、段階的な開発プロセスを顧客に提案するために必要な情報を入手できます。アジャイルと呼ぶ必要はありませんが、各要件(または分割不可能な一連の要件)ごとに契約をより小さな部分に分割し、顧客が検証してそれらを1つずつ提供することを提案できます。または、オンラインおよびオフラインで利用できる多くのリソースを使用して、アジャイル開発スタイルの1つに協力することが最善の方法であることを顧客に納得させることができます。いずれの場合でも、これらの要件のビルディングブロックを優先順位に従って明確に提案する形式で契約/プロジェクトの提案を提供できます。それぞれに独自のコストと結論があります。そのニンジンをお客様の前で押さえてください。インクリメント後に続行するかどうかを決めるのは自分自身の考えだったと思うかもしれません:)。

3

過剰な要件のために予算を超えてスケ​​ジュールが遅れたアプリケーションの歴史的な例は、FBIの仮想ケースファイルです。これは、数十の既存のアプリケーションを置き換えることを目的としており、それらはすべて、スイッチオーバー時に一度に完全に機能する必要がありました。プロジェクトは最終的にキャンセルされました。成功したのは、フレームワークを設計し、個々のアプリケーションを新しいシステムに徐々に置き換えることでした。代わりに、政治と内紛はすべてのアプリケーション関係者が自分のアプリが最も重要なものであると主張し、既存のアプリに追加したいすべての機能から「必須」の仕様で誰もが仕様を練り上げました。最終的に、毎日書き込まれる変更要求の量は、実際に毎日書き込まれるコードの量を超えました。

「すべてを手に入れなきゃ」というのは2つのケースで見た。 1つは、大規模な金融クライアント(すべてのもののウォーターフォールを使用)に、40の異なるシステム(40のうちの1つを作った会社)があり、一挙に交換されて運用できるようになりました。統合テストとコミュニケーションは大きな問題でした。私の推定では、彼らは電話会議で1日あたり約10万ドルを消費しました(通話の全員の請求レートを数えると)。どちらの場合も、配達される予定のリストを打ち出し、全員の足を地面に釘付けにするのに強力な交渉担当者が必要でした。ゴールポストの移動、再交渉はありませんでした。どちらの仕事も予定どおり、仕様どおりになりました。 1つは予算を大幅に上回り、もう1つは予算内でした。そのためには、チームが何を提供できるかを理解している非常に優れたプロジェクトマネージャーが必要です(機能Qの作成とテストには3.5週間かかり、提供の約束は少なくとも90%正確であると言える人)。

優れたPM、交渉担当者、指標が不足しているため、クライアントに段階的な配信を促すことをお勧めします。それでもゴールドレンガ全体を一度に必要とする場合は、他のコンサルタントを探す手助けをするとよいでしょう。時々、最良の答えは「私たちはあなたを助けることができない」です。

1
Tangurena

最初に、それらの要件が現実的ではないことを説明し、カウンター要件のセットを提示します。これにより、問題がより簡単かつ迅速に解決され、コストとリスクが軽減されることを説明します。これを技術的な議論にしようとしないでください。クライアントはそれを気にしません。クライアントは、時間をかけて良い製品を手に入れ、ビジネスケースを解決します。クライアントが予算をとらない場合は、契約を受け入れて作業を行うか、このフォームでプロジェクトの責任を負うことができない理由をクライアントに拒否して説明します。

1
Paul Hiemstra

他の人々が提案したものと同様ですが、少し異なりますが、お客様はすべて有効である可能性がありますが、優先する必要があります。最初に行う必要がある項目。 2番目に実行する必要がある項目。最も重要なのは、時間を使い果たした場合、どのアイテムが持っていないことが最も害になるかです。 1から732(または何でも)までの各項目に優先順位を付け、その順序でそれらを完了します。

1
Matthew Flynn

他の回答が述べているように、優先順位付けは非常に重要です。これを行う便利な方法は MoSCoW-method を使用することです。しかし、リスト全体を分割することから始めることをお勧めします。そうしないと、機能リスト自体があなた(またはあなたの顧客)に理解の問題を与えます:)

これの隣に、問題を全体として見る問題があります。おそらく、お客様と一緒に次の手順を実行することで、これを解決できます。

  • 機能をグローバルに利用し、そこからカテゴリを抽出する
  • (MoSCoWを使用して)カテゴリに優先順位を付け、おそらく階層を定義します(デフォルトの機能を持つ1つの基本カテゴリ、主要な主題のカテゴリ、主要な主題の特定のバリエーションのカテゴリ)。これにより、前の手順で定義したカテゴリが変更される可能性があります(新しい洞察のおかげ)。
  • 各機能を1つずつ確認し、カテゴリに割り当てます
  • Top-xカテゴリのアイテムに(MoSCoWを使用して)優先順位を付けます。

これにより、要求された機能の簡潔でトップダウンなビューが提供され、ベースから開始して他の機能で拡張するためのさまざまな反復を定義するためのハンドルバーが提供されます。

0
Geerten

短い回答:私は顧客の声に耳を傾け、彼らとの中間的なアプローチを見つけます。

お客様の声を聞いて、予算とタイミングに応じて、プロジェクトをフェーズ(リリース、リリース2など)に分割することをお勧めします。

次に、アプリケーションが提供する必要のある必要な機能の成果物、予算、優先順位付けの各フェーズの見積もりを続けます。

したがって、作業の範囲と成果物を定義することが方法です:)

0
Yusubov