開発チームが会社のビジネス部門から仕様を取得するプロジェクトに取り組んでいます。ビジネス管理とIT管理の両方で、必要に応じて見積もりと期限の予測が必要です。
良いことは、見積もりは主に、必要な機能を実行する実際の開発者によって行われることです。悪い点は、仕様が通常は単純すぎる(多くの情報が欠落しているように見えるため、頭上に多くの疑問符が残されていることが判明する)か、または複雑すぎる(できる限り)ことです。アプリ内のすべてが「適合する」場所を視覚化することもありません)。多くの場合、仕様のビジネス部分は不完全であるか、何ができるか、何ができないかを認識していません(以前に実装されたビジネスロジックを前提とします)。
Devチームは、新しい仕様ごとに約1日見積もりを提供し、通常は仕様を作成した人と会って不確実性を解消しようとします。ほとんどの場合、仕様の作成者はすべてを十分に検討していないことがわかります。多くの仕様には穴があるように思われるので、通常、設計と開発を始めて初めて問題が発生します。
これにどう対処しますか?事前の見積もりに寛大ですか?
設計段階で問題が見つかった場合、本当に問題がありますか?
仕様を作成する人たちが、すべてを前もって行う必要があるように感じないようにしてください。彼らはすべてを考えることはできませんし、私たちも考えることはできません。彼らはまた、ある仕様書について徹夜するだけでプロジェクトを終わらせることができないことを知る必要があります。この習慣はまた、彼らがそれを「必要とするかもしれない」ので彼らが考え得るすべての小さなことを追加することにつながり、彼らが今尋ねない場合、彼らはそれを得るでしょう。要件を何度も確認、テスト、承認できるようにする必要があります。
アプリ全体を一度に設計または構築しようとしないでください。どのプロジェクト/アプリも、ある種のフェーズ、パーツ、モジュール、または呼び出したいものに分解できます。それがあなたの事柄でなければ、あなたは俊敏である必要はありません。ユーザーセキュリティの部分から始めて、そこから始めます。
これらの人々と一緒に座って、彼らが本当に望んでいるものを見つける時間を作りましょう。プロジェクト全体を一度に作成できる仕様を誰かに手渡してもらいたいのですが、来年半はどうしますか?
私は 不確かさの円錐 を使用します 大声でブームの声で言う
基本的には、あなたが持っている情報を提供できる最善の見積もりを行います。
しかし、仕様の曖昧さを考慮して、これらの推定値に高い不確実性があることも指摘します(サイトでのポイント管理により、原則を読み取ることができます)。
目標に向かって進み、仕様を厳しくすると、見積もりを更新して不確実性を厳しくすることができます。
はい、私は見積もりに寛大です。忘れないでください ホフスタッターの法則
ホフスタッターの法則:ホフスタッターの法則を考慮に入れても、常に予想よりも時間がかかります。ゲーデル、エッシャー、バッハから:永遠のゴールデンブレイド。
あなたが説明しているプロセスは実際にはかなり正常です。問題は、ビジネスタイプが「要件フェーズ」、次に「設計フェーズ」などの観点から物事を考える傾向があることです。チームが製品を作成しているとき、本当に反復的なアプローチが必要です。私が仕事を見つけたいくつかのアイデアは次のとおりです。
最初の見積もりは正確ではないことに注意してください。得られた要件の合理的な解釈に基づいて推定を行い、仮定/解釈を文書化します。あなたが発見した穴のために、より派生した要件があります。これは正常です。
見積もりに寛大であるといいかもしれませんが、どのような問題を解決できますか?仕様が改善されることはなく、計画が容易になることもありません。それは「それはYかもしれない」と言うのとは対照的に、「それはXよりもはるかに悪いことはあり得ない」と言っています。真実はあなたが知らないことです。あなたができることを見つけてください。
ビジネスアナリストが開発者をより早く関与させる必要がある場合は、そのことを伝えてください。書面による報告は、コミュニケーションの最良の方法ではありません。開発者に初期要件の収集を手伝ってもらったり、ビジネスアナリストが開発やテストを手伝ったりできれば、より良い結果が得られます。
不確実性のコーンを読んだところです。それは良いことですが、間違いを犯しがちです。経営陣は最初の写真を見て、次のように言うかもしれません:「わかりました、私たちはビジネス要件を持っているので、あなたの見積もりはあなたのコーンに従って50%正確でなければなりません。教えてください'。それは役に立ちません。
車のアナロジー:誰かがあなたに車の値段を尋ね、彼の要件を書いた紙をあなたに与えます。紙はそれが約1200kgの重さで、4つの車輪と少なくとも2つのドアを持っているべきだと述べていますが、おそらく4つは4人を座らせ、良いヘッドライトは本当に重要です。色は灰色でなければなりません(ただし、黒も可能ですか?)。
あなたは25Kドルと言うことができ、それが後で判明した場合、彼はブランドの新しいレンジローバーを望んでいます。それはそれをそれ以上正確にしたり、それが10万ドルの費用がかかると言うのにもっと役に立ったりしません。中古(すみません、中古)のプリウスが必要なだけかもしれません。あなたがどちらかを見つける時間が得られないなら、あなたは決して知ることはないでしょう。
ほとんどの場合、仕様の作成者はすべてを十分に検討していないことがわかります。多くの仕様には穴があるように思われるので、通常、設計と開発を始めて初めて問題が発生します。
mostの使用は正しくありません。
スペック作成者がすべてを考えることはできません。限目。彼らがeverything throughを考えた場合、彼らは何行のコードを書くべきか、そしてどのコード行が正しいのかを知っているでしょう。
仕様は正しくないはずなので、それについてできることはあまりありません。
トラブルになるが問題です。
ビジネス管理とIT管理の両方で、必要に応じて見積もりと期限の予測が必要です。
おそらくそうではありません。全体的な見積もりと期限は、最も役立つものではありません。
したがって、アジャイル手法の開発。
ポイントはこれです。仕様に基づくすべての見積もりには誤差があるはずです。彼らは運によってのみ正しいです。半分の時間で、見積もりはかなり下回っており、半分の時間で見積もりはかなり終わっています。これは、不完全な情報で未来を予測しようとする論理的な結果です。
それが起こる必要があるので、あなたが間違っているときにトラブルに陥ってはいけません。あなたは間違っている必要があります。そして、あなたは一貫してそしてランダムに間違っている必要があります。それ以外の場合は、数字をぼやけています。
あいまいな仕様では見積もりの信頼度が低いことを経営陣に説明する必要があります。つまり、推定値は30%、40%、50%など、さまざまです。つまり、2日と推定される場合、実際には2〜3日の範囲です。
次に、プロジェクトの問題記録を作成します(WikiまたはJiraなどにあります)。問題としてすべての質問を作成し、ビジネスにあなたの質問に答えさせます。問題が未解決のままである限り、推定は不確実なままです。可能であれば、ビジネスアナリストを導いて、これを促進し、より良い要件を作成します。仕様に対してテストケースを作成する必要があるので、テストチームに仕様を確認してもらいます。多くの場合、彼らの関与はより良い仕様を書くことにつながる可能性があります。毎日/毎週、未解決の問題の数を管理者に報告してください。より多くのことが解決されるほど、あなたの見積もりはより良くなります。数値が客観的に考えさせ、強い土台を築くように、常に指標を経営陣に提示します。
また、プロジェクトのサイズにもよりますが、主要な問題(要件と技術の両方)を打ち砕くソリューション設計フェーズに1〜4週間かかります。ビジネスSMEとのワークショップを数多く開催し、それらを理解して、結論に至るための見方を説明してください。主要なユースケースが理解され、見積もりが約80%の信頼度に達した後にのみ、構築段階に進むことができます。
コミュニケーションは通常、少なくとも健康な組織では役立ちます。
これは特効薬ではありませんが、私がやろうとした(そして私たちの会社でうまくいった)ことは、すぐに解決策を提案するのではなく、ビジネスの人々に問題を説明するように説得することです。したがって、機能のリクエストは、問題の説明または彼らが達成したい目標から始まります。
次に、ドメインに関するある程度の知識を持つ開発者が、ビジネスの面で誰かと相談しながら、解決策を具体化しようとします。通常、このプロセスにより、推定値を備えたいくつかの代替ソリューションが生成されます。
コストとソリューションの完成度に基づいてどちらを選択するかは、現時点ではビジネス次第です。これは、この方法を彼らに販売できる方法でもあります。ここには、数日だけでなく、それを取るか、そのままにするかという選択肢があるということです。もちろん、それはまた彼らの側でより多くのリソースを必要としますが、見積もりや仕様に問題がある場合、それは価値のある投資です。
不完全であるか、矛盾する要件が含まれている、または実行不可能な要件仕様を受け入れるのはなぜですか?承認して見積もりを出す前に、仕様を評価して修正のために送り返す方法をプロセスに含めることをお勧めします。
納得より良い仕様に投資する価値がある管理/顧客。してみてくださいドメインの知識を持つ人々をより関与させる。最終的に誰もがそれから利益を得るでしょう。
仕様を削除します。
プロジェクトにアジャイル(または少なくともアジャイルのようなプロセス)を試すようにビジネスを説得します。
代わりに仕様を書き出す
表示中完成した機能。早い段階で頻繁にリリースします。透明性と応答性を高めます。これは無意味な締め切りの排除につながることがわかりました。
アーキテクチャ用に編集
誰がリーダーであるかは、アーキテクチャがどうあるべきかを開発者に伝えるためのキックオフミーティングを持つ必要があります。リードはまた、すべてのニーズが満たされていることを確認するために十分な注意を払うべき人でもあります。
プロセスにステップを追加するよりも追加のステップが必要な場合。チームが作業を遂行できるようにするためのプロセスがあります。何かがうまくいかない場合は変更してください。追加、削除、変更してyourのニーズに対応します。セキュリティについて特に心配する必要がある場合は、そのための手順を追加します。
新しい機能を追加したり質問を解決したりするために仕様が変更されるたびに、見積もりを再検討するときが来たことを思い出してください。言われたことを考えると、元の推定値が悪いのはそれほど多くありませんが、プッシュバックせず、詳細が利用可能になったときにこれは必要ないと言っています。私が家を建てる請負業者であり、ラミアンテのカウンタートップを使用してコストを見積もり、1か月後にクライアントが花崗岩を望んでいる場合、彼と一緒にコストの見積もりを再検討することは間違いないでしょう。私たちはクライアントに粗末な要件を回避させ、当初想定されていたよりも多くのことを行う必要があることが判明した場合はプッシュバックしません。