ビジネスマンからの要件の緩和


27

技術系ではないビジネスマンから要件を引き出すのに最適な方法は何ですか? プロジェクトの仕様をまとめようとしているチームと協力しています。私たちが会い、次の会議への期待に至るたびに、私たちはビジネスの人々に彼らの要求を取り戻すように頼みます。通常、彼らは次のような反応を示します。「さて、来週私たちが好きなものを見ることができるようにプロトタイプを作り上げることができると思いますか? 6か月以上のプロジェクトであるため、明らかに実行不可能です(全体を開発する必要があります!)。また、なんらかの仕様なしにプロトタイプを作成する方法さえ知りません。率直に言って、私はほとんどの人と同じように、彼らは自分が望むものについてある程度の考えを持っていると思います。単純に伝える代わりに、「あなたが欲しいものを与えてください、または私たちは仕事をすることができない/できない」(結果に満足してもらいたい)、彼らが望むものを決めるのを助ける方法はありますか?たとえば、次のように伝えることができます。

「表示したいすべてのデータとマージンの機能の説明とともに、希望するUIを表示する画面(Powerpoint、ナプキンなど)を描画します。これから、私たちはそれを洗練し、この一連の動作要件に基づいてバックエンドを構築します。」

または

「今どのように見えるか心配する必要はありません(1番が電話を切ります)。プログラムが追跡する各項目について必要なすべてのデータのリストを提供してください。「顧客」の場合、名前、住所、電話番号、注文などをリストすることができます。完璧なデータベース構造である必要はありませんが、これから何かを見つけて、あなたが探しているもののアイデアを得ることができます。

これらの代替アプローチのいずれかは、ビジネスの人々に彼らが望むものに焦点を当てさせるのに意味がありますか?実際に見た代替手段はありますか?


18
私はいつも組織犯罪からの要件分析を雇うことについて空想していました。「あなたは会計データにアクセスできる人を教えてくれますか、それとも荒らしますか?」
デヴィッドソーンリー

7
「真実は混乱からよりも早くエラーから出てくるでしょう。」(フレッド・ブルックスが引用したように、フランシス・ベーコンir)彼らが望んでいることを具体的な言葉で伝えてください。彼らはあなたを修正します。理解するまで数回繰り返します。

回答:


22

私は過去3か月間、大規模プロジェクトの徹底的かつ徹底的な要件収集フェーズに費やしてきましたが、なによりも万能ソリューションはないことを学びました。すべての場合に機能するプロセス、秘密はありません。要件分析は真のスキルであり、最終的にそれをすべて把握したと思うと、まったく異なる人々のグループにさらされ、知っているすべてを窓から投げ出さなければなりません。

私が学んだいくつかの教訓:

  • さまざまな利害関係者は、さまざまな抽象化レベルで考えます。

    「技術レベルではなく、ビジネスレベルで話す」と言うのは簡単ですが、必ずしもそれほど簡単ではありません。あなたが設計しているシステムは象であり、あなたの利害関係者はそれを調べる盲人です。一部の人々は、プロセスとルーチンに深く没頭しているため、ビジネスあることに気付かないこともあります。他の人はあなたが望む抽象化のレベルで働くかもしれませんが、誇張された、あるいは虚偽の主張をする傾向があります、または希望的観測に従事します。

    残念ながら、あなたは単にすべての個人を個人として知り、彼らの考え方を理解し、彼らが言うことを解釈する方法を学び、さらに何を無視するかを決める必要さえあります。

  • 分割統治

    何かをしたくない場合は、委員会に送ってください。

    委員会に会わないでください。これらの会議はできるだけ小さくしてください。YMMVですが、私の経験では、オープンセッションでは3〜4人(自分を含む)、クローズセッションでは2〜3人(つまり、特定の質問に答える必要がある場合)が理想的なサイズです。

    私はビジネスで同様の機能を持っている人々に会おうとしています。Beanカウンターのある部屋でマーケティング担当者を投げることによって、得るものはほとんどなく、失うものは非常に多くあります。1つの主題の専門家である人々を探し出し、その主題について話させます。

  • 準備のない会議は、目的のない会議です。

    他のいくつかの回答/コメントは、ストローマンのテクニックに言及しています。これは、答えを得ることができないと思われる厄介な人々にとって素晴らしいテクニックです。しかし、ストローマンに頼りすぎないでください。さないと、人々はあなたが彼らに鉄道を走らせているように感じ始めます。人々を正しい方向にそっと微調整し、彼らが彼ら自身を所有しているように感じるように(そしてある意味では彼らは彼らを所有しているように)彼らが彼ら自身に詳細を考え出させなければならない。

    必要なのは、ビジネスがどのように機能するか、システムどのように機能するかについてのある種のメンタルモデルです。 問題の特定の会社の専門家でなくても、ドメインの専門家になる必要があります。ビジネス、競合他社、市場にある既存のシステムなど、リモートで関連している可能性のあるあらゆるものについて、できるだけ多くの調査を行ってください。

    その時点で、誰もが同意しがちなユースケースなどの高レベルの構造を使用することが最も効果的であることがわかりましたが、特定の質問をすることは依然として重要です。「顧客への請求方法は?」から始めた場合 、非常に長い会議に参加しています。開始時にプロセスを締め出すのではなく、プロセスを暗示する質問をします。広告申込情報とは何ですか?それらはどのように計算されますか?どのくらいの頻度で変更されますか?いくつの種類の販売または契約がありますか?彼らはどこで印刷されますか? あなたはアイデアを得る。

    ステップを逃した場合、通常誰かが教えてくれます。誰も文句を言わないなら、あなたは暗黙のうちにプロセスを確認したので、自分自身に背中を軽くたたいてください。

  • トピック外の議論を延期します。

    要件アナリストとして、あなたはファシリテーターの役割も果たしており、ミーティングですべての時間を過ごすことを本当に楽しんでいない限り、物事を順調に進める方法を見つける必要があります。皮肉なことに、この問題は、最終的にはときに最も悪質となります人々が話してもらいます。注意しないと、線路の敷設に多くの時間を費やした列車が脱線する可能性があります。

    しかし-そして、私はずっと前にこれを困難な方法で学びました- あなたは、問題が無関係であると人々に伝えることができません。それは明らかに彼らに関連している、そうでなければ彼らはそれについて話していません。あなたの仕事は、人々に可能な限り「はい」と言ってもらい、そのような障壁を立てることで、あなたを「ノー」の領域に押し込むことです。

    これは、多くの人が「アクションアイテム」で維持できる微妙なバランスです。基本的には、いつか戻ってくることを約束したディスカッションの一般的なキューで、通常は本当に重要だと思った関係者の名前でタグ付けされます。これは外交のためだけではありません。会議中に何が起こったのか、後で説明する必要がある場合に誰と話すかを思い出すのに役立つ貴重なツールでもあります。

    さまざまなアナリストがこれをさまざまな方法で処理します。非常に公開されているホワイトボードやフリップチャートログのようなものもあれば、静かにラップトップにタップして他のトピックに静かにアクセスするものもあります。あなたが快適に感じるものは何でも。

  • 議題が必要です

    これはおそらくほとんどすべての種類の会議に当てはまりますが、要件会議には二重に当てはまります。議論が進むにつれて、人々の心はさまようようになり、彼らが本当に気にかけているものにたどり着くのかと疑問に思うようになります。議題を持つことは、いくつかの構造を提供し、また、前述のように、トピックから外れている議論を延期する必要があるときを決定するのに役立ちます。

    あなたがいつ何をカバーたいのか正確に明確な考えなしにそこに入ってはいけない。それなしでは、あなた自身の進歩を評価する方法がありません、そして、ユーザーは常に長く走っているのであなたを憎みます(彼らがすでに他の理由であなたを憎んでいないと仮定して)。

  • モックイット

    PowerPointまたはVisioをモックアップツールとして使用する場合、洗練されすぎて見えるという問題に悩まされることになります。これは、ほとんど不気味なユーザーインターフェイスのです。人々はナプキンの絵(またはBalsamiqSketchflowのようなツールを使用して、ナプキンの絵のように見えるコンピューター生成の絵)に慣れいるのです。しかし、実際のUIのように見えるようになればなるほど、より多くの人々がそれを選択して足を踏み入れ、最終的に重要でない詳細について議論する時間を費やすことになります。

    したがって、間違いなくモックアップを行い、要件の理解をテストします(最初の分析段階の)-非常に迅速かつ詳細なフィードバックを得るのに最適な方法ですユーザーと目を合わせて見ていることを確認してください。

    モックアップは成果物はなく、理解を支援するツールであることに留意してください。UIデザインを行うときにモックに拘束されるとは思わないのと同じように、モックアップに親指を立てたからといって、デザインが正常であると仮定することはできません。私は、モックが松葉杖として、またはさらに悪いことに、要件を完全にバイパスする口実として使用されるのを見てきました。それをしていないことを確認してください。戻って、そのモックを実際の一連の要件に変えます。

  • 我慢して。

    多くのプログラマーにとってこれは信じがたいことですが、ほとんどの非自明なプロジェクトでは、一度座って完全な機能仕様を打ち出すことはできません。私は、1回の会議中に忍耐について話しているだけではありません。要件分析は、コードと同様に反復的です。グループAは何かを言い、次にグループBはあなたがグループAから聞いたものと完全に矛盾する何かを言います。それからグループAは矛盾を説明し、グループCが言及するのを忘れていたことがわかります。500回繰り返すと、おおまか真実似たものができます。

    小さなCRUDアプリを開発しているのでない限り(その場合、なぜ要件に悩まされるのでしょうか?)、1回、2回、または5回の会議で必要なものすべてを得ることを期待しないでください。あなたは多くのことを聞いて、多くのことを話し、自分自身を何度も繰り返します。これはひどいことではありません。必然的に成果物にサインオフする人々と何らかの関係を築くチャンスです。

  • テクニックを変えたり、即興演奏することを恐れないでください。

    プロジェクトのさまざまな側面では、実際にはさまざまな分析手法が必要になる場合があります。場合によっては、従来のUML(ユースケース/アクティビティ図)がうまく機能する場合があります。他のケースでは、ビジネスKSIから始めたり、マインドマップでブレーンストーミングをしたり、以前の警告にもかかわらずモックアップに直接飛び込んだりします。

    一番下の行は、自分でドメインを理解し、誰かの時間を無駄にする前に宿題をする必要があるということです。特定の部門またはコンポーネントのユースケースは1つだけであるが、非常に複雑なものであることがわかっている場合は、ユースケース分析をスキップして、ワークフローまたはデータフローについて話し始めます。アプリ実装のすべての部分に同じツールを使用しない場合、要件のすべての部分に同じツールを使用するのはなぜですか?

  • 耳を地面に向けてください。

    要件分析のために読んだすべてのヒントのうち、これはおそらく最も頻繁に見落とされているものです。私は正直に言って、スケジュールされた会議よりも盗聴や、時々水冷式の会話をクラッシュさせることを学んだと思います。

    孤立して作業することに慣れている場合は、おしゃべりを聞くことができるように、アクションがどこにあるかを把握してください。それができない場合は、頻繁に、キッチンやバスルームなど、どこへでも行きましょう。コーヒーやスモークの休憩中に人々が自慢することや不満を聞くことから、ビジネスが実際にどのように機能するかについて、あらゆる種類の興味深いことがわかります。

  • 最後に、行間を読みます

    過去に私の最大の過ちの一つは、私が実際に時間がかからなかったことを最終的な結果に焦点を当てていた人々が言っていたことを聞きます。時々-多くの場合-人々は何も話をしないか、あなたにとってまったく無意味に聞こえる手順について悩んでいるように聞こえるかもしれませんが、彼らが言っていることに本当に集中している場合、あなたは本当にあることに気付くでしょうそこに埋められた要件-またはいくつか。

    控えめで控えめに聞こえますが、5つの理由はここで非常に便利なテクニックです。あんなにひどい「ばかげた」反応(大声で言うのではない)を感じるたびに、自分を止めて、質問に変えてください:なぜですか?この情報が4回再入力され、印刷、コピー、スキャン、再印刷、パーティクルボードに固定され、デジタルカメラで撮影され、最後にセールスマネージャーに電子メールで送信されるのはなぜですか? そこである理由は、彼らはそれが何であるかを知らないかもしれないが、見つけるためにあなたの仕事です。それで頑張ってください。;)


4
プログラマーSEで私が見た中で最も恐ろしい答えの1つであることに対して+1!
モーガンハーロッカー

19

あなたがそれらから何かを得ることができない場合は、何かを書き、それを承認してもらいます。「いいえ、私はそれが好きではありません」と言うのは、「これがあなたのやり方です」よりも、技術に詳しくない人にとってはずっと簡単です。

多くの場合、彼らが望むものと彼らがあなたに伝えるものは、2つの非常に異なるものです。現在知っている情報を使用して、仕様の最初のドラフトを作成してください。利害関係者に読んで承認してもらいます。彼らがそれを読むとき、彼らは彼らが好きではないか、同意しないものを見る可能性が高いです。フィードバックを受け取ってから修正します。

何らかの方法で進むことができるものがある場合は、両方のオプションをオンラインにして、意思決定者に選択を依頼してください。彼らがするまで、それらを放っておかないでください。

プロトタイプについては、画面のモックアップを作成し、代わりに物事がどのように機能するかを説明してください。繰り返しますが、何かを見ることは、彼らが何が起こっているかを視覚化するのに役立ちます。新しい画面のモックアップを会議に持って行き、回答を得ます。

過去に、私は実際にFireBugを開いて、顧客がすぐに要求した変更を追加して、どのように見えるかを確認できるようにしました。彼らは彼らのフィードバックを与え、私はスクリーンショットを撮り、変更を実施しました。彼らは、変化がどのように見えるかを見ることができるのが本当に好きでした。


2
+1。ストローマンのテクニックは、エンドユーザーに自分が何をしているのかを考えさせる唯一の方法であることがよくあります。
-DaveE

誰でも(プログラマーを含む)誰でも「いいえ、私はそれが好きではありません。私はこれが欲しい」というよりも「これを変えたい」と簡単に要求できると思います。プロジェクト全体を一度に考えようとするのではなく、当面のタスクに集中するのに役立つと思います
-Earlz

「私はこれが欲しい」の代わりに「いいえ、私はそれが好きではない」と言ってもらうために+1。企業が彼らが何を望んでいるかを正確に知らない場合、これは私が試みようとするアプローチです。
レイチェル

11

ビジネスについてもっと話し、アプリケーションについてはあまり話さないようにします。本当の問題が何であるかを調べてください:月末の報告には時間がかかりすぎ、データ入力エラーが発生し、現在のアプリケーションを超えてしまい、企業の成長は手に負えなくなっています。

これらの会議は、購入を行う人々とのものであり、実際にアプリケーションに関連する作業を行う人々とは関係ないと思います。これらの人々の中から選ばれた数人と会えるかどうか尋ねてください。彼らは物事が実際に行われている方法を示すことができます。時間とコストを予算に入れたクライアントに対処していることを確認してください。

現在使用中または使用したいレポートがあるかどうかを確認します。データを適切に収集しないと、明らかにレポートを作成できません。これはまだ開始されていない事業​​分野でない限り、彼らは何かをしなければなりません。

多くはあなたがプログラマーであるというこれらの一般的な概念を持っているので、あなたはすべてのプログラムを構築する方法を知っています。eコマースサイトはすべて同じですよね?

小さく始めます。残念ながら、それらの前に何かを取得するまで、プロセスは登録されません。何もすることがないのなら、それを偽造してください。


ジェフは正しい。修正する必要のある実際のビジネス上の問題について話します。その後、迅速かつ安価にできることを考え出します。それを実現すれば、空腹になることはありません。
クリストファーマハン

+1「ビジネスについてもっと話し、アプリケーションについてはあまり話さない」それが黄金律です。
DPD

8

これの多くは、一般的な対人スキルと、そもそもクライアントとのコミュニケーション方法に関係しています。そのことについて私が言えることはあまりありません-プロセスをインタラクティブなものとして説明し、クライアント側のフィードバックと努力も期待するようにしてください。

具体的には、あなたが説明したシナリオについて、さらにいくつかのアドバイスがあります。まず、何が有用かを説明し、技術的な専門知識やノウハウを必要としない用語で情報を説明する手段を提供します。

  • ユーザーストーリー/ユースケースユーザーが何を期待しているのか、それを行うためにどのような情報が必要なのか、ユーザーが自分で入力する必要があるもの、期待できるものの詳細な説明を求めます。この情報を入手したら、それらを一緒に調べて、すべてがストーリーで覆われていることを確認します-ユーザーが何をするかをカバーするストーリーがないアプリケーションには何も入ってはなりません。

  • 説得力のあるデモ顧客を獲得するために、より重要なことは何ですか?プログラムまたは機能のどの部分を目立たせる必要があり、完全に洗練する必要がありますか?ポストイットノート、段ボール箱、その他のスタンドインを使用して、モックアップデモを提供してもらえますか?

  • 市場/競争力のある情報ユーザーストーリーごとに、競合他社に似た何をしているのでしょうか?違う?競合他社はどのようなストーリーを語っており、コピー/エミュレート/改善/革新/意図的に異なることを試みていますか?

  • 解決の質問要件とデザインのうち、あなたが確信している情報は何ですか、また実験とは何ですか?どちらが機能するかを確認するために、どこで代替手段を試しますか?複数の選択肢を検討していて、そのうちの1つしか教えていない場合、検討している他の選択肢は何ですか?

次に、いくつかの境界を引き出します。

  • 私に技術的な制限をかけないでください。ビジネスマンは、「Linuxよりも優れているため、Windowsを使用してください」と言ってはいけません。ただし、「ターゲット市場はすべてウィンドウを使用しているため、アプリケーションを成功させるにはウィンドウ上で実行する必要があります」というラインに沿って指示を提供できます。

  • 設計について心配する必要はありません。特に、営業やマーケティングを重視する人々を扱っている場合、設計の問題に悩まされる傾向があります。繰り返しになりますが、情報の範囲を彼らが専門とするものに絞り込みます-「青はここでより美しい」はおそらく適切ではありません。「私たちの競争相手は青色のテーマを使用しており、80年代からずっと、革新していないプログラムの部分については、新しいものではないことを伝えるために青色のスキームを使用する必要があります」、おそらく適切です。「名前は画面の上部にあるべきです」はおそらく適切ではありませんが、「このページで最も重要な情報はユーザーの名前と銀行口座の残高です」です。デザイナーがこれらの要件をUIに変換することに関与していることを確認してください。

  • 決定を書き留めてくださいできれば、これらを契約または他のコミットメントに組み込んでください。ただし、顧客が理解していない決定は、書かれた論文の価値がないことを忘れないでください。「アプリケーションはポート1521で実行されます」でサインオフする顧客は、「アプリケーションがカスタムの構成可能なポートで実行されるため、配備時にファイアウォールとセキュリティの特別な構成が必要になる場合があります」

あなたの観点から、プロセスが継続することを奨励するために:

  • 同じレベルの抽象化でフィードバックを提供します。これは、たとえばユニット全体に適用されます。顧客がユーザーの月間ボリュームを話している場合、ギガビットの帯域幅で応答しないでください。または、ユースケースの場合-モジュール、バグ修正、または機能ではなく、機能するユースケースの観点から機能を説明します。

  • 意味のあるコミュニケーションを提供するあなたに提供された情報に関して、あなたが持っている質問と、あなたが発見したか探している追加情報をフレーズします。「私たちはLinuxに取り組んでいます」というのはおそらく不十分なフィードバックですが、「Linuxマシンでホストし、Windows上のIEでアクセスすると、アプリケーションがよりスムーズに実行されることがテストで示されます」

  • すばやく反復クライアントを引き付けるために、意味のある迅速な更新と反復を提供します。プロセスの開始時に入手できなかった、または簡単に入手できなかった仕様や情報は、顧客から多大な労力を必要とする可能性があります。クライアントがプロセスに関与して投資できるようにすることは、仕事が最終的に時間と労力を費やさなければならないものになる場合に役立ちます。


5

クライアントであるビジネスマンは、何らかの問題を抱えており、何らかの技術的解決策を望んでいますが、解決策がどのように機能するかについてはほとんど理解していないため、潜在的な解決策を特定する方法についてはほとんど把握していません。もしそうなら、欠けている役割は、顧客、彼らの問題、彼らのワークフローなどを研究できるビジネスソリューションアナリストの役割であり、可能なソリューションが企業の手順、文化などにどのように適合するか、また特定のソリューションは、予算内など、時間内に実装できる可能性があります。これは、非常に学際的な役割であり、ビジネスプラクティス(法律、会計、ロジスティクスなど)、ユーザー心理、ソフトウェアテクノロジーの両方の知識が必要です。

顧客を自分のビジネスソリューションアナリストにしたいようです。これは、合理的な仕様を確保するのに十分な専門知識を持っている役割ではない可能性があります。そして、あなたもこの役割を引き受けたくないようです。あなたもあなたの顧客もこの役割を果たす専門知識を持っていない場合、プロジェクトを成功させるために必要なすべての人がいないかもしれません。

時には、顧客が試用できる一連のラピッドプロトタイプが、顧客の(有声および無声)ニーズに対して何らかの有用なソリューションを実験的に発見して収束する唯一の方法かもしれません。これは、あらゆる種類の非オープンエンド契約に適している場合とそうでない場合があります。

追加:必要な専門知識を持っていない顧客から要件ドキュメントを強制しようとすると、これは潜在的な災害を示す大きな赤い旗である可能性があります。


3

UIやデータの要件を求めないで、機能の要件を求めてください。

彼らがアプリケーションに何をして欲しいかについて尋ねます。アプリケーションをどのように使用したいかを説明してもらいます。UI、データなどの詳細は最初から残しておきます。

多くの場合、ユーザーはUIやデータの面で何が欲しいのかわからないが、機能に関しては何が欲しいのかを知っていることに気付きました。たとえば、「ログインしてすべての顧客情報を表示したい」と言われます。画面がどのように見えるのか、どのようなデータが必要なのかを取得するのではなく、機能を取得します。

それができたら、簡単なモックアップを行います(私はBalsamiqが好きです)。UI /データが何であるかを仮定し、それにあまり時間をかけないでください。次に、そのモックアップをお客様に戻します。そこから、「これらのフィールドは必要ありません」、「実際には電話番号のリストが必要です。1つだけではありません」、「これはリストボックスではなくドロップダウンにする必要があります」。

出発点が決まれば、データとUIを具体化するのがはるかに簡単になり、機能性が最良の出発点であると判断できます。


2

何よりもまずビジネスプロセスに焦点を合わせることをお勧めします。文書またはディスカッションのいずれかで、ソフトウェアによって処理されるタスクを現在どのように行うかを定義してもらいます。次に、プロセスのどの部分を変更したいか(ソフトウェアを必要とする理由)に注目します。ソフトウェアを使用することで、プロセスの他の部分が改善される可能性があるか、完全に削除される可能性があるかを議論するための出発点としてそれを使用します。

クライアントがソフトウェア要件の提供に慣れていない場合、チームはそれらの要件を作成する必要があります。複数のリビジョンを通過することを期待しますが、少なくとも、探しているものを伝えるのに役立つ初期ドキュメントを提供する必要があります。

ソフトウェアを組み込む予定の最終結果プロセスの機能要件を十分に理解したら、インターフェイスのモックアップのドラフトを開始できます。最初に彼らに突き刺してもらいたい場合は、できますが、通常は最初のアイデアを提供し、それらを微調整する方が良いでしょう。これには機能的なコードは必要ありません。開発中のUIのスクリーンショット、静的フィラーテキストを使用したレイアウトのHTML表現、または図面(スタッフにまともなアーティストがいる場合)を最初のUIディスカッションに使用できます。

いくつかの改訂を経て、提示された内容に全員が同意したら、書面で顧客の承認を得てください! 彼らがいくら抵抗しても、このステップは重要です。要件を承認しても、プロジェクトにそれ以上入力できないことを意味しないことをクライアントに安心させる必要がある場合があります(クライアントとの関係の性質によって異なります)。その場合、要件の改訂方法を概説する必要があります。処理されます(例:レビューと承認、後続バージョンへのプッシュ、拡張として個別に価格設定など)。


1

機能ごとにプログラムを開発することを伝えます。次の会議まで、1〜2週間でX個の機能を使用するとします。これは、1、2、3、またはそれ以上です。

最も重要な機能を最初に開発することから始めます。コア機能から始める必要があります。あなたが(議論のために)テラーマシンを作っているとしましょう。最も重要な機能のリストの最初(または次)に、大規模な撤回を行う際にユーザーの生年月日を確認することを要求します(プロジェクトの主要な機能の1つではないことがわかっている機能に置き換えてください)次に実装されます)。

この素朴な主張は、クライアントからの反応を引き出すはずです。それが彼らに次に何をするか尋ねるとき?プロジェクトでまだ実行されておらず、あなたが言及したものよりも優れている最も重要な機能は何ですか。

前の例を再利用すると、クライアントは、ユーザーのカードの検証やデポジットなどを通知する場合があります。その後、クライアントに定義を依頼してください。たくさんの質問をすることを恐れないでください。必要に応じて、素朴な質問もしてください。

クライアントとこれについて話し合った後、この1つの機能についていくつかの要件があります。複数の機能を定義できますが、その数は非常に少なくします。

1〜2週間で、クライアントと再度会い、あなたがしたことを彼らに提示し、それについての意見を聞きます。それをクライアントに提示し、変更または追加が必要な場合は入力を取得します。

次に、次の一連の機能について、前の演習を繰り返します。プロジェクトの残りの部分について、このプロセスを繰り返し実行します。クライアントと連絡を取り合い、定期的に会議を開いて作業を示し、次に何をするかを計画します(常に小さなチャンクを使用します)。


1

あなたはエンジニアリングの話をしているのですが、私の経験では、彼らはそれについて気にしません。また、彼らは何もすることをコミットしたくありません(特に書面で)、彼らは本当に仕事をしたくありませんが、それはビジネスタイプに特有ではありません-誰も彼らのドメインでたくさんの仕事をしたくありません知りませんし、知っていても構いません。それがあなたの仕事です(彼らの頭の中では)。

私がしているのはこれです:彼らが望むものについて、彼らのドメイン言語で話します。彼らはあなたが望む方法(ユースケース、契約による設計など)を正確に行うことはできませんし、喜んでもありませんが、彼らの種類の曖昧で簡単なdesiderataのリストを実際の設計に翻訳することは正確です、結果として、設計文書。彼らが正式にこれを行う時間をあなたに割り当てれば、それははるかに良いです。そうでない場合は、反復可能な即興の非公式なものを作成します。

これは非常に幸せな答えではありませんが、クライアント(または実際に誰か)が自分の宇宙に足を踏み入れて言語を話そうとするのをやめたとき、人生が楽になることがわかりました。ドメインと要件(多くの場合、クライアントによって漠然としか理解されていないことが多い)については、何度も同じ質問を繰り返しますが、直感に反することは、議論がイライラしないことです。実際、クライアントとの関係はより強くなる傾向があります。人々は彼らが知っていることについて話したいので、より厳密な設計アプローチに任せた場合よりもPO​​Vをより正確に理解することになります。


1

プログラミングについて何かを知っているマネージャーがいなければ、これで少し成功したことはありません。むしろ、私が見つけた唯一のアプローチは、実際に何が起こっているかを観察することです。


1

プログラマーは、プログラムが構築される前にどのように見えるかを想像するより良い能力を持っていると思います。紙のプロトタイピングは、これを克服するための効果的な手法かもしれません。紙のプロトタイプは、構築するのが比較的「安い」です。簡単な紙のプロトタイプをクライアントに説明することで、「真の要件を収集するために必要な集中的な方法で」考える必要性を示します。そして、集中するための特定の方法を提供します。実際にあなたの頭の中にあるアプリケーションを使用しようとしています!

また、クライアントが本当に必要としているが、伝えるのが難しいアプリケーションに対して、クライアントが何を望んでいるのかという最良の推測から非常に迅速に繰り返すことができます。プロトタイプを見て、頭の中で理想的なアプリケーションと一致しない理由を判断する方が、そのアプリケーションのすべての要件をリストするよりも簡単です。


私は他のパートナーがよりビジネス志向のウェブサイトで働きました。私はさまざまな方法で特定の要件を求め続けました。彼らの反応は基本的に「あなたはコンピューターの男だ。このことを理解してくれると期待している。私たちはビジネスをすることを好む」。最初のバージョンがリリースされるまで、 彼らは特定の詳細に関心がありませんでした彼らはリリース後の要件にもっと熱心で、最初に尋ねたときに多くの時間を前もって節約してくれたあらゆる種類のフィードバックを提供しました

そこで、反復が重要だと判断しました。最小限の実行可能なバージョンを構築し、フィードバックに基づいて改善します。要件があまりにも曖昧で一般的である場合は、「最も簡単で最速の実装は何か」に基づいて決定を下します。(基本的なシステム設計/アーキテクチャを除く)。あなたが「正しい」と思うものに基づいた仮定に重きを置かないでください。思考プロセスがクライアントとは異なる可能性が高いため、時間を無駄にするだけです。

例:クライアントが画像アップロード機能を要求します。より具体的な要件については詳しく説明しません。可能な限り単純にビルドします。クライアントが望むものだと思っていても、自動トリミング、サイズ変更、サムネイル機能を追加しないでください。クライアントに最小限の実行可能なバージョン(非単純なバージョンよりもはるかに高速に開発できる)を表示すると、「現在のバージョンの何が問題なのか」という要件が流れ始めます。これらの新しい要件のそれぞれを「バグ」として記録します。最も簡単/最も有益なものに優先順位を付けることができます。

私に実際に起こったのは、特別な招待コードを含む登録フォームのリクエストです。そのアイデアは、新しいユーザーごとにいくつかの招待状を受け取るバイラル登録プロセスを作成することでした。コードが一意であり、一度しか使用できないことを確認するのに多くの時間を費やしました。また、姓と名のフィールドをオプションにすることで、プロセスをできるだけ摩擦のないものにすることに多大な努力を払いました。最後に、パートナーはこれらの変更を要求しました。姓と名が必須で、フィールドに何かが入力された場合に有効なサインアップ「コード」...ため息〜

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.