それを実装する理由を主に考えますか、それとも実装しない理由を考えますか? それぞれの利点は何ですか?
9 に答える
このすばらしい Joel Spolsky の投稿は、基本的に次のように述べています。
- 可能な機能のリストを作成します。
- 最悪の機能を除外するために投票してください。
- 各機能にコストを割り当てます。
- 各参加者に限られた機能予算を割り当てます。
- 予算を割り当てるときに、どの機能が人気があるかを調べます。
ステークホルダー(クライアント)のことを第一に考えます。その機能は彼
を助けますか? 本当に価値をもたらすのは機能的な機能ですか?
次に、実装コストとその機能がないこととのトレードオフを評価するために、技術的な影響とその結果生じる複雑さについて考えます。
反射の最初の 2 つの要素に基づいて、それを実装する必要があるかどうかを知ることができます。
実装する理由としない理由の間に明確な境界線はないと思います。
私は通常、費用便益分析を行います。これを実装するのにどれくらいの費用がかかりますか (お金または時間)、そしてそのメリットはどれくらいの価値がありますか (お金または時間)。
メリットがコストを十分に上回る場合、それは完了です。
尺度は通常、有給の仕事に対するお金、個人的なことのための時間ですが、クロスオーバーすることもあります. どんなにお金がかかっても、子供たちとの質の高い時間を犠牲にしすぎることはありません.
多くの場合、特定の機能を追加するよう求められます。私の仕事の一部は、常に何を含めるかを知っていると考えているユーザーのコンテキストでこれを解釈できるようにすることです. 確かに、彼らは自分が何を望んでいるのかを知っていますが、他の誰かが少し違うものを望んでいることは間違いありません. 私の世界では、一歩先を考え、より多くのものを提供できることが重要です。私たちは、ビジネスがどのように機能するかを考え、それらを提供することで報酬を得ています。
したがって、もう少し強力なものを追加し、ユーザーが望むものも提供するという戦略を考え出しました。したがって、他の誰かが何かを求めたとき、それはすでにそこにあります。これにより、コストのかかる配送サイクルを大幅に節約できます。
残念ながら、これは常に利用可能または実用的ではありませんが、可能であれば実行したいと考えています。私は、コーディングは受動的ではなく能動的であるべきだというモットーで実行するのが好きです。
メリットとデメリットの両方を考えて、最終的に費用対効果を分析することが重要だと思います。
その分析の状況は、新機能が提案されている製品の種類に応じて大きく変化する可能性があります。私の仕事の多くは、時間の経過とともに進化し、顧客のビジネスの中核となる複雑で大規模なアプリケーションに関するものです。
その結果、新機能の多くの分析は、機能を実装しない理由に焦点を当てています。私は主にリスクに集中します。
- 新しい機能が導入される領域は、どの程度適切に設計されていますか?
- すでに実装されている単体テストのレベルは?
- 新機能はアプリケーションの中心に実装されていますか?
- 何かを見逃してバグが発生した場合、システムがダウンする可能性があります (文字通り、またはシステムをその目的に実質的に適合させないことによって)。
結局のところ、新機能を開発するかどうかはお客様の判断になります。プロのソフトウェア開発者として、費用と時間だけではわからない可能性のあるコストを知らせるのは、私たちの責任です。
幸いなことに、私たちには、彼らが考えもしなかった新しい機能を提案する責任もあります。
ファンタジーの意思決定の質問:特に適していることを実行する能力がfeature
向上product
しますか?はいの場合は実装しfeature
、そうでない場合は実装しないでください。
現実の意思決定の質問:実装を正当化するのに十分なお金がありますfeature
か?いいえ?くだらない。
そこに必要な機能を推進するのは、クライアント/顧客/利害関係者/消費者でなければなりません。クライアントは、実世界のユーザー (製品を提供している単一の企業または個人) である場合もあれば、そうでない場合 (製品を製造している市場) である場合もあります。いずれにせよ、それはエンドユーザーからのものでなければなりません。
私たちはすべての新機能を「ユーザーストーリー」と呼んでいます。
確かに必要なことは、ユーザーがなぜその機能を望んでいるのかを理解することです。つまり、ユーザーが解決しようとしている問題や、ユーザーが得たいと考えている利点は何なのかを理解することです。「方法」に進む前に、ユーザーから「理由」の部分を取得する必要があります。
顧客は機能を決定することができます。何か思いついたらお客様に任せます。お客様の最も重要な機能をできるだけ早く実装する方法を一緒に考えます。
ユーザーが特定の作業をより迅速に完了したり、より多くの知識を持って完了したりするのに役立つ場合は、機能を実装します。ユーザーに役立つ場合は実装します。アプリの見栄えを良くするが、アプリケーションの周りのユーザーに実際には役立たない (見栄えが良いだけ) 場合は、実装しないでください。