クライアントの要件がまったく変わらないときにアジャイルを使用するのは間違っていますか?


12

最近、アジャイルが使用される主な理由の1つは、クライアントが要件を頻繁に変更するためだと言っている多くの投稿を見てきました。

ただし、クライアントが要件を頻繁に変更しないとしましょう。実際、クライアントには多少あいまいな要件もありますが(不当にあいまいなものはありません)、要件はしっかりしていますが、とにかくアジャイルを使用しています。

私がアジャイルを採用する理由は、ソフトウェアが非常に複雑であるため、実際にそれらに直面するまで認識できない問題や詳細が存在するためです。ウォーターフォールのような本格的な重度の計画アプローチを行うこともできますが、その後、すべての高レベル設計と低レベルコーディングシグネチャを完成させるのに数か月かかります。ただし、システムには非常に具体的な固定アーキテクチャ設計があります。

私の質問は、これは悪い、カウボーイコーディング、アンチパターンなどと見なされますか?アジャイルでの「やろう」という考え方ではなく、要件が安定しているときにコーディングを開始する前に、ウォーターフォールを使用し、可能な限り詳細に計画する必要がありますか?

編集:ここでの主要なポイントは、次のとおりです。要件の変更についてクライアントを責めることはできません。クライアントが私たちに非常に具体的な問題を指摘し、非常に合理的な詳細でウィッシュリストを提供し、私たちをそのままにしておくと仮定します最小のプロトタイプが完成したら終了します)。このシナリオでアジャイルを使用するのは間違っていますか?


2
@randomA:実際、私見では、1週間以上の努力が必要な実用的な製品を作成する場合にのみ、純粋なウォーターフォールを試してはいけません
Doc Brown 14

10
クライアントを教えてください
razethestray 14

7
@razethestray
Euphoric

2
クライアントが「毎日悩まされる」ことを望まない場合、クライアントと効果的にコミュニケーションをとる方法を学びます。たとえば、不明な点について(おそらく間違った)仮定をする代わりに、リストで質問を収集し、定期的にクライアントにリストを送信します。さらに良い:ポイントを議論するための会議を手配します。要件が非常に明確で、リストが空のままである場合:会議はありません(ただし、そうはならないでしょう)。間違った仮定をソフトウェアに実装し始めると、後でそれを変更するための多くの努力が必要になります。
Doc Brown 14

3
@randomA:何も質問しないことでクライアントをしばらく幸せに保つことができます。そして、最終的なものを提供するとき、あなたはプログラムを捨てて開始できるほど要件を逃したことがわかるので、彼を非常に不幸にします最初から(クライアントは喜んで支払いません)。または、正しいプログラムを構築するために間に十分な質問をすることで、彼を少しでも不幸にしますが、プログラムが実際に彼が望むことをし、彼が支払ったものを手に入れるとき、とても幸せです。あなたの選択を選んでください。
Doc Brown 14

回答:


16

これは悪い、カウボーイコーディング、アンチパターンと見なされますか。

短い答え:いいえ。「アジャイル」を正しく行うことは「計画なし」を意味するのではなく、物事を過度に分析しないことを意味します。

アジャイルが使用される主な理由の1つは、クライアントが要件を変更することが多いためです。

それは単純化しすぎの声明です。「要件の変更」とは、要件に対するチームの理解がどのように変化するかに関することでもあります。そして、ソフトウェアのいくつかのリリースを実際に見たときに、要件に関する顧客の優先順位がどのように変化するかについてです。

実際、「アジャイル」はあなたが説明する状況で最も正確に私見的に機能します -クライアントは彼の全体的な要件について十分な知識があり、そこから一般的な計画を書き、バックログをたくさんの「ユーザーストーリー」で満たし、適切なシステムアーキテクチャを選択するのに十分な情報。アジャイル開発戦略の短いイテレーションは、「曖昧な要件」をより正確にするのに役立ちます。まだ正しい方向に進んでいる場合、多くのフィードバックがあります。また、実際の労力とコストに関する早期のフィードバックを提供します(要件の詳細をすべて把握していても、ウォーターフォールアプローチでは失敗する可能性があります)。


3
「滝」を正しく行うことは「すべてを計画する」ことを意味せず、物事を分析しないことを意味しません。
ジョルジオ14

1
@Giorgio:「ウォーターフォール」を正しく行うということは、要件が「やや曖昧」で、「ソフトウェアが複雑で、実際に直面するまで気付かないような詳細や問題がある」場合に適用しないことを意味します。元の質問)。
Doc Brown 14

6

この状況でアジャイルを使用することは依然として非常に良い考えです。アジャイルには多くの利点がありますが、そのうちの1つだけが、顧客からの定期的なフィードバックと、ご指摘のように変化する要件に対応できることです。

ウォーターフォールプロジェクトが失敗することで有名な主な理由の1つは、「ほぼ完了した」問題です。テストでは最後に大量のバグが発生し、リリースできない製品が残り、未解決のバグを修正するのにさらに2日または2年必要かどうかはわかりません。アジャイルはこのリスクを完全に取り除きます。アジャイルプロジェクトが過剰に実行されている場合でも、次の機能バージョンを提供できます。

A)デモを通して実際にそこにいる顧客に証明し(「これらのストーリーはすべて完了し、必要に応じて最後のいくつかを行うことができます)」、さらに多くの時間が彼らが望むものを正確に得るでしょう。

B)彼らがとにかく幸せで解放するのに十分な可能性がある。

私にとって、この完全な失敗のリスクを取り除くことは、ビジネスがアジャイル開発プロセスに移行するための十分な理由だけであり、当初の計画よりも優れたソフトウェアを構築する能力が重要です。他の回答で述べたように、それらの「具体的な」要件は、依然として驚くほど柔軟です。


回答の冒頭で述べた問題をA)がどのように解決するかわかりません。最後の数話に数日または2年かかるかどうかをどのように知りますか?あなたは本当にあなたが実際にそれらをするときだけ本当に知っていますよね?
ジョルジオ14

1
あなたは正しいですが、違いは、リリースできない90%のバグのあるソフトウェアではなく、現在の状態でリリース可能な製品があることです。また、リリース可能な機能を提供するのにかかった時間の経験的証拠、および実際に機能していることの証拠がないという確信が得られる残りの作業の推定値もあります。
SpoonerNZ 14

計画されているすべての機能が不可欠である場合、90%の機能を備えた製品は使用不可/リリース不可です。既存の機能のデモを提供するためにのみ使用できます。私の経験では、すべての状況でアジャイルは好ましくありません:アジャイルがより適しているプロジェクト(要件の変更、小さな自己完結型の独立した機能)とそうでないプロジェクトがあります(安定した要件、複雑なおよび/またはミッションクリティカル特徴)。
ジョルジオ14

私は同意します-配信不足はどちらの場合も良くありませんが、利害関係者として、すべての機能はあるがいくつかの機能が欠けている場所で遊ぶためにあなたのソフトウェアの完全に機能するバージョンを作り出すチーム、またはあなたに与えるチームを信頼しますか理論的にはすべての機能を備えていますが、多くのクラッシュが発生し、多くの予期しない動作をしているソースコードのバグだらけの山ですか?私はどちらを信頼するかを知っています。
SpoonerNZ 14

もちろん、最初のチームを信頼しますが、アジャイルでない方法を使用すると、「理論的にはすべての機能を備えているがクラッシュし、予期せぬ動作をするソースコードのバグが山積みになっている」ことに常に同意しません。少なくとも、これは今までの私の経験ではありませんでした。
ジョルジオ14

3

クライアントとの頻繁なフィードバックループが必要な場合は、アジャイルが理想的です。これは、要件が頻繁に変更されるためですが、他の理由も考えられます。

一方、要件が完全に安定しており、クライアントが単一のビッグバン配信のみを期待している場合、アジャイルは同じようにうまく機能しますが、事業。これは、製品所有者の役割あなた自身の組織内で満たされなければならず、その人は決定を下すために顧客からの十分な権限を持たなければならないことを意味します。


1
あまり関与したくないクライアントが実際のビジネスニーズを持っているのではないかとよく疑問に思います。私は、既存のアプリケーションが新しいテクノロジーに「変換」されるプロジェクトで、これが頻繁に起こるのを見てきました。質問がある場合は、コードで確認できます。誰もリメイクを待っていません。
user99561 14

@ user99561:あなたは正しいですが、そのような状況では、要件はほとんど曖昧ではなく、非常に明確です-新しいプログラムが古いプログラムとまったく同じように動作する限り。このような状況では、「アジャイル」アプローチは実際には必要ありません。反復的なマイルストーンベースのアプローチ(顧客との対話をあまり必要としない)で十分です。
Doc Brown 14

クリスタルクリア?正確な動作が何であり、例外が何であるかを理解してください。ほとんどの場合、ビジネスの人々でさえ、アプリケーションで何が起こるか理解していません。私のアドバイス:これらのプロジェクトからできるだけ早く逃げましょう。プロジェクトの開始時期はわかっているが、アプリケーションの動作が異なるために最後のバグがいつ投稿されたかわからないためです。
user99561

0

いつでも大きなリリースを小さなリリース(スプリント)に分割し、クライアントにフィードバックを求めることができます。このようにして、あなたはあなたが正しいことをしていると確信し、クライアントはあなたの進歩を追跡することができます。

何か問題がある場合は、クライアントに早く修正する機会を提供できます。これは非常に良いことです。最後にでたらめを見せて、どこから始めてもわからないときに修正しようとするよりも、できるだけ早く間違いを修正する方が良いでしょう。


明確にするために編集を追加しました。クライアントは、十分な詳細と明確なウィッシュリストに問題があることを示しており、それ以上問題が発生しないようにしたいと考えています。したがって、実際のプロトタイプをデモできる終わり近くまで、クライアントからのフィードバックはないと想定してください。
情報14
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.