一般的なテクニックはやや常識的であり、知っておくべき重要なことは、技術的な専門知識をあまり必要としないということです。
計画の出発点は、解決する必要がある正確な問題を特定し、明確で明確な要件を持つことです。それがない場合、見積もりは不正確になります。誰かがコードの記述を開始する前に、何らかの機能仕様でこれを文書化するということは、コーディングを開始する前に、尋ねる必要がある質問はすべて尋ねられることを意味します。これは驚くほど効果的な時間節約です。前に戻って要件を明確にすると、プログラマーとしての流れが崩れ、応答を待つと進行がブロックされる可能性があります。
要件を特定したら、その解決に関係する作業タスクを特定する必要があります。これは古典的な分割統治演習です。さらに分解できるタスクは、さらに分解する必要があります。
大規模なチームでは、推定ポーカーを使用して、関係者全員の経験に基づいて推定値を取得できます。小規模なチームではうまくいきませんが、開発者と開発者の両方から独立した見積もりを取得し、自分自身からの見積もりを含めることも有用です。ここでは、特定の専門知識の欠如が、タスクには彼らの観点から関係するので、開発チームはおそらく問題をよりよく把握するでしょう。
小規模なチームでは、各タスクのベスト/予想/最悪のケースの推定値を取得するのに役立ちます。これにより、さまざまな値が得られますが、オーバーランの推定値を多く取得している場合は、開発者まで最悪のケースに向かって傾斜させることができますより正確に推定することを学ぶ。
小さなショップでは、開発者はしばしばシステム管理者、サポートチーム、さらにはテスター(彼らができることはすべてですが、テストはあなたがすべてのコストで回避しようとするべきものです)を兼ね備えることになります。開発者が実際に新機能の開発に費やす時間を把握し、それを見積もりに反映します。タスクが2日と見積もられているが、開発者が60%の時間しか新しい開発に取り組むことができない場合、そのタスクを完了するには4日が必要になります。緊急の管理タスクまたはサポートタスクをアドホックベースで処理するのではなく、ある程度まとめてバッチ処理できるように、処理する必要がある他のタスクのパイプラインを制御することで、これを支援できる場合があります。多くのプログラマー(確かに私自身もこれに参加しています)は素晴らしい時間管理者ではありません。その点で手を貸すためにできることは何でも役立ちます。シングルタスクは、マルチタスクよりもプログラマにとって常に簡単です。日中の時間をブロックすることもこれに役立ちます。
記録を残す -計画セッションがあるたびに、推定値と実績値を記録します。次に、これをa)計画中に見積もりをどれだけ膨らませるかのガイドとして使用し、b)見積もりスキルを磨くのに役立ちます。各反復の終了時(または同等のもの)に、チーム全体が行った作業をレビューし、予想よりも長くかかった理由を把握して、将来の見積もりに組み込むことができるようにする必要があります。これは非難されない仕事である必要があります-あなたはここで正しい態度を持っているようですが、この答えはしばらくの間であるかもしれないので、私は観察をします。誰かが「ここで間違えた」と言うと、それを「もっとうまくできたはず」に変えることができます。
この種の問題に特効薬はないことは承知していますが、最大の要因はコミュニケーションです。これは実際には小規模なチームで簡単になり、フィードバックを使用して集合的なスキルを磨くことができます。