私はジュニア開発者ですが、大きなソフトウェアプロジェクトを完了するのにかかる時間を見積もるのは難しいと思います。アーキテクチャの一般的な構成方法は知っていますが、自分がしなければならない詳細や解決しなければならない問題を知るのは困難です。したがって、解決する必要のある問題とその解決にかかる時間を知らないため、より大きなプロジェクトを完了するのにかかる時間を見積もるのは困難です。
ソフトウェア開発者ではないである人にこれをどのように説明しますか?
無人の世界の一角にある遠く離れた場所にアクセスするのにかかる時間を見積もるように依頼することができます。極端な例として、ほとんど登っていないヒマラヤ山脈のあまり知られていないピークを選択してみましょう。旅を始める前に、彼女はひどく多くの準備と練習が必要です。さらに、許可証の束も必要です。許可証はそれぞれ、数か月から数年の旅行を遅らせる可能性があります...そして優れたサポートチーム...その後は丘の上斜面では、天気が良くなるのを待ってピークに向けて登るように祈る必要があります...など。これらのほとんどは、以前の経験があっても、見積もることは不可能ではありません。
そして要点は、各ソフトウェアプロジェクトは、新しい山に登るようなもので、誰も前に行ったことがないため、直接の経験はありません。熟練した開発者は、多かれ少なかれsimilarプロジェクトで経験を積んできた可能性がありますが、常に新しい要素と驚きがあります。それ以外の場合は、ソフトウェアの場合)プロジェクトはexactly以前のプロジェクトのように、それを実行してもまったく意味がありません。
それを人に説明しましたか?あなたはプロのソフトウェアエンジニアなので、ソフトウェアを構築する人は、ソフトウェアシステムの設計と実装に関する知識とフィードバックを検討する必要があります。
不確かさの円錐 は、おそらく良い出発点です。ソフトウェアプロジェクトは、詳細が判明するまで見積もることが困難です。詳細はプロジェクトの後半で発生します。さらに、要件を変更すると、見積もりも変更されます。プロジェクトの開始時の最初の見積もりには、大きな変動があります。
他の推定手法にも興味があるかもしれません。あなたはジュニア開発者だけだと言っていました。一般的に、経験豊富な開発者ほど、問題を見つけて解決し、(できれば)見積もりと実際の時間を追跡しているため、見積もりを行う能力が優れています。 wideband delphi または planning poker などの推定手法を使用して、これを利用できます。
ジュニア開発者として、今すぐ見積もりと実際の時間の追跡を開始します。 Software Engineering Instituteで開発されたパーソナルソフトウェアプロセスについて読むことに興味があるかもしれません。コアPSPブックは ソフトウェアエンジニアリングの分野 、 PSP:ソフトウェアエンジニアのための自己改善プロセス 、および パーソナルソフトウェアプロセスの概要 です。 。パーソナルソフトウェアプロセス入門では、あなたが最も役立つと思うトピックをカバーすると思います。ほとんどの開発者にとって一般的にはやり過ぎだと思いますが、個人の生産性を向上させ、キャリア全体で継続的に使用するさまざまなスキル(見積もりを含む)を磨くために、引き出して使用できるいくつかの優れたアイデアと優れた実践があります。
見積もりでさらに多くの作業を行う場合は、Steve McConnellの2冊の本を強くお勧めします: ソフトウェア見積もり:黒アートの謎解き (芸術および科学としての見積もりに焦点を当てています)および 迅速な開発:野生のソフトウェアスケジュールを使いこなす (一般的なソフトウェアエンジニアリングプロセスとプロジェクト管理のトピック)。
文献を参照してください。膨大な量の複雑でしばしば矛盾する材料があり、実践(実験)によって証明されているように、期待どおりに機能しません。少なくとも学者たちは本の山に揺さぶられている。
必読: http://en.wikipedia.org/wiki/The_Mythical_Man-Month
The Mythical Man-Month:Essays on Software EngineeringはFred Brooksによるソフトウェアエンジニアリングとプロジェクト管理に関する本です。後期のソフトウェアプロジェクトはそれを後回しにしています。」このアイデアはブルックスの法則として知られており、第2のシステム効果とプロトタイピングの擁護とともに提示されます。
Brooksの観察は、OS/360の開発を管理しているIBMでの経験に基づいています。彼は予定より遅れているプロジェクトにより多くのプログラマーを加えました、そして彼が後でプロジェクトをさらに遅らせたと彼が後で直観的に結論を下すという決定。彼はまた、1つのプロジェクト(ALGOLコンパイラーの作成)には、関係する労働者の数に関係なく(より長い時間が必要)、6か月かかると断言しました。マネージャーがプロジェクト開発でこのようなエラーを繰り返す傾向があるため、ブルックス氏は彼の本を「ソフトウェアエンジニアリングの聖書」と呼んでいると誤解しました。この本はソフトウェア工学の人間的要素に関する古典と広く見なされています...
ソフトウェアを見積もることができると主張する人々に会いましたが、ソフトウェアをどのように見積もるかはわかりません。また、どのようにしてそれを行うかを説明することもできませんでした。
コンサルタントとして、私のクライアントはしばしば私に固定入札ベースで作業することを要求します。したがって、現実的な入札を準備できるように見積もる必要があります。一度も成功したことはありません。私が入札するのと同じくらい頻繁に入札しすぎると思う人もいるかもしれませんが、そうではありません。その結果、私は契約で多くのお金を失うことが多く、正社員として会社で働いていた場合よりもはるかに少ない収入しか得られません。
私はソフトウェアを推定する方法を教えてくれる本を何年も探していましたが、まだ見つけていません。
コーダーでない人にこれを説明することに関して。業界の誰もが一貫して彼らの推定を満たすことができないことを指摘することができます。新しいソフトウェア製品が事前に発表されるのはいつでも起こり、最初に発表された日付から数か月または数年後に出荷されます。
マイクロソフトのような大企業が自社製品の製造にかかる時間を見積もる方法を理解できない場合、どうすればよいですか?
私が時間単位で支払われているか仕事で支払われているかにかかわらず、私のクライアントは常に私にこれらの見積もりを提供することを期待しています。そのような推定がどこにも教えられていない場合、彼らが私にそれらをどのように作成すると期待しているのかわかりません。
彼らがこの見積もりで何をするつもりなのかを調べてください。彼らの心の中で彼らはそれが数ヶ月または数年かかるかどうかを知りたがっていて、あなたは正確な時間を得ようとしている(典型的なエンジニア)。
プロジェクトの一部で作業できるかどうかを確認し、必要に応じてより適切な見積もりをまとめます。
彼らが押し続けている場合は、時間枠を適用することができる限り多くのタスクを項目化する必要があります。見積もりに影響を与える可能性のある何かを見つけて調整を加えたらすぐに通知することを伝えます。人々は通常、驚きを避けようとします。
プロジェクト全体の時間の見積もりは、通常、プログラマーではなくプロジェクトマネージャーが行います。
プロジェクトマネージャーが必要なタスクの完全なリストを持っているという事実に基づいて、議論を構築できます。このリストがないと、推定は「悪い」推測になります。
また、時間は、利用できる人数や要件の範囲など、持っているとは言わなかった多くの要因に依存します。建築だけでは十分ではありません。
もう1つのポイントは、ソフトウェアエンジニアリングが他のエンジニアリング分野と比較してまだ初期段階にあり、推定可能な開発手法が登場するほど成熟していないことです。
ソフトウェアエンジニアリングも絶え間なく変化しています。技術が成熟したと見なされるのに十分なくらいになっているときまでに、それはしばしばいくつかの新しい技術を支持して放棄されます。これにより、信頼できる見積もりを作成できるように、1つのテクノロジで十分な経験を得ることができなくなります。
これを構造推定と比較してください。これは非常によく理解されている問題であり、契約が入札に基づいて落札されただけでなく、人類が文明の黎明以来物事を構築してきたためです。