それはoDeskでの私のフリーランサーの仕事でした。与えられた時間の早い段階でいくつかの仕事をしてきましたが、締め切りに間に合わなかったのはこれが初めてでした。それは非常に長い仕事だったので、私は最善を尽くしましたが、それでも締め切りに間に合いませんでした。今、私はとても怖いです。締め切りに間に合わなかったのは私のせいです。
私の質問は、次のとおりです。これは大きな懸念事項ですか、それともプログラミングジョブに共通する締め切りを逃しているので、あまり心配する必要はありませんか?
はい。期限の遅れは、ソフトウェア開発では一般的です。
多くのフリーランサーは、技術的な借金を負ったり、敷物の下に汚れを隠したりすることにより、期限を守っています。
言い換え Frederick Brooks 'The Mythical Man Month :
プロジェクトリーダーは土木工学のタスクと同じ方法でソフトウェアタスクを見積もり続けるため、期限が守られないことがよくあります。これは、ソフトウェアが明確な規範のない新しい手工芸品産業であるため、欠陥のあるアプローチです。これは真実であるため、プログラマーの「許可」を取り消して不正行為をコーディングすることはできません。また、タイトルのないプログラミングに対して誰かを訴えることもできません。
ソフトウェア開発は、他の分野にはない固有の複雑さを持っています。大きなプログラムは自動車よりも多くのコンポーネントを持つことができ、これらのコンポーネントはより多くの異なる方法で相互作用することができます。
ソフトウェアは視覚化が難しいため、プロジェクトのさまざまな側面を確認するためにさまざまな種類の図が使用されますが、これらの側面は直交していない場合があります。一方、土木工学には、配管、配線などをすべて同じチャート(またはレイヤー)で直交して見ることができる設計図があります。
橋または建物が半分建設された後、クライアントがプロジェクトの範囲を完全に変更することは一般的ではありません。これは、ソフトウェアプロジェクトによく見られます。
ソフトウェア開発における最新技術は、ソフトウェアプロジェクトが再現可能で、ほとんどリスクがない状態に達していません。マイクロソフトのような最大のソフトウェア会社でさえ、数ヶ月または数年で締め切りを逃す可能性があります。
ほとんどのvaporwareは、これらの種類の問題のためにカットされたソフトウェアプロジェクトにすぎません。
結論として:
ソフトウェア開発プロセスの手工芸の性質による複雑さの悪い見積もりと過小評価は、それが未成熟な規律のままであることを意味します。
仕事を続けたいのであれば、期限を逃すことは一般的な習慣にはなりません。
そうは言っても、通常、何かが発生した場合に備えて、見積もりに余分な「ゆらぎ」の余地を残しておきます(常にそうなります)。追加した時間を公開する必要はありません。不合理にしないでください。合計時間の5〜10%でしょうか。あなたが見つける唯一の方法は、それを数回行うことです。
見積もりを本当によくするためには、特定の種類のウィジェットのコーディングにかかる時間を知っている必要があります。たとえば、クライアントXの無限スクロールウィジェットを作成する必要があるとします。1週間かかる場合はバグなしで本番環境に展開するには、無限スクロールの見積もりのベースラインとして使用できます。
ソフトウェア開発では、期限の欠落は珍しくありません。ソフトウェアプロジェクトにかかる時間を正確に見積もることはほとんど不可能です。
プロフェッショナリズムは、それをどのように扱うかに示されています。期限を逃すことがわかっている場合は、可能な限り早期にクライアントに通知して、適切に計画できるようにします。
それはかなり一般的ですが、あなたはそれでより良くなることができます。 ストーリーポイント のような抽象的なものを使用して推定を検討し、実際の推定を計算するために 速度 を追跡することをお勧めします。これらの概念は最も一般的にスクラムに関連付けられていますが、スクラムを行わなくても使用できます。
ベロシティの驚くべき点は、開発者が見積もりで説明するのに苦労している、中断や予期しない複雑さなどのすべての無形のものが含まれていることです。すべての確率は、時間の経過とともに平均します。 10週間の平均では、速度の推定値は約5%以内で正確です。しかし、同じタスクを数時間で見積もると、まったく同じチームが常に30〜50%の過小評価をしています。
私の理論(証明されていません)は、人間は複雑な仕事を2、3対1で過小評価するように進化してきたというものです。議会がNASAに次のようなことを尋ねるときはいつでも:シャトルを構築したり、月への旅行に番号を付けて1週間以内に戻ってくるにはいくらかかりますか。彼らはすべての予想コストを使い果たした後、3倍のコストがかかることを発見しました。
1970年代に冗談がありました。プログラマーの見積もりを取り、数値を2倍にして、次の時間単位に移動します。したがって、プログラマが2週間でできると言った場合、4か月で完了します。
誰かがキッチンを改造した場合、彼らは一般的に「まあ、これは2週間で完了します」と思います。約6週間後に終了します。