開発スケジュールを評価するのがそれほど難しいのはなぜですか(さらに開発者のタスク)

画像
ええと、ピンクの領域を少し動かせますか?



日常生活では、私たちは常にすべてを評価しようとしています。仕事をするのにどれくらい時間が必要ですか? 1か月あたりどのくらいのお金を費やしますか? 今後の大規模なパーティーに十分な食料はありますか? など...



周りのすべてを常に評価することは私たちの生活の一部であるようです。 したがって、ソフトウェア開発で同じことを見つけても驚くことではありません。



私たちは皆、出力が何度も遅れるプロジェクトについて聞いたでしょう? これは、チームが必要な時間を正確に評価できなかったためかもしれません。



質問をさせてください。パリからロンドンまでどれくらいかかりますか? (正解は「どうなるか」です)。



1〜10時間以上の選択肢があるかもしれませんよね? 注意-私はそれがどれくらいかかるかを尋ねましたが、これがどのように正確に行われるべきかは言いませんでした。 これは、旅行するための多くの方法を選択できるため、重要です。 また、何も明示的に示されていないため、誰もが独自の方法を選択できます。 誰かが飛行機で、いくつかは電車で、おそらくは車で、あるいは自転車で旅行することを決めます。



すべての方法を議論したので、私たちは飛行機で飛ぶことが最速の方法であると決めました。 そして、2時間以内にロンドンにいるべきですよね? 次に、悪天候のためにフライトがキャンセルされた場所を推測します。 すべてがどうなるのか理解していますか?



開発時間の見積もりはさらに悪い...



ソフトウェアプロジェクトの場合、正確な評価を行うことははるかに困難です。 このために、「 スコープクリープ 」という特別な用語さえあります -プロジェクトフレームワークの制御されない成長。 これは、ピークを長く過ぎた古いモノリシックプロジェクトにのみ適用されるとは思わないでください。 最新のアプリケーションでも、ユーザーが製品を購入したくないため、最新のエラーを修正するのにかかる時間を知る必要があります。 時は金なりですよね?



どうすれば修正できますか? 今後の投稿でお話ししたいテクニックがいくつかあります。 しかし、小さな例から始めましょう。



評価が簡単であればあるほど、完了しようとしているタスクに関する情報が多くなります。 それは理想的なケースのように見えますが、私たちが知っているように、これは常にそうではありません。 十分な情報がない場合はどうしますか? 仮定しなければなりません! これによりスコアが改善されますか? 可能性は低いですが、欠落している情報が見つかるまで、少なくともある程度の根拠が得られます。



タスクの例でこれがどのように機能するかを見てみましょう...



挑戦する



顧客の質問を想像してください。新しい投資関連部分を実装するのにどれくらい時間がかかりますか?



コードを見てください:



interface Bank { boolean depositFunds(Funds funds); }
      
      





必要なのは、インターフェースを実装することだけです。 どれくらいの時間が必要ですか? ヒント:正しい答えも間違った答えもありません。おそらく、いくつかの仮定をする必要があります。




ZeroTurnAroundのオリジナルのRoberto Cortezによる記事の翻訳。



All Articles