開発者の助けを借りずにタスクを評価する方法は?

私たちの小さな会社では、誰も期限に注意を払っていないという事実にもかかわらず(これは顧客にとって重要ではありません)、私は時々、これまたはその機能またはタスクのセットを開発するのにどれくらいの時間がかかるかを評価する必要に直面しています。 多くの場合大きなエラーを引き起こす「目で」および「開発者の助けを借りて」メソッドを評価することに加えて、私は別の簡単なアプローチを取ります。 アプローチは、過去に1つのタスクを完了するのにかかった平均時間を測定することです。



データ収集



毎月末に、開発者ごとに簡単な操作を行います。1か月の作業時間(生産カレンダー)と1人が1か月に完了したタスクの数をExcelに保存します。



Excelファイルでは、従業員が1つのタスクを実行する平均労働時間数がすぐに計算されます。 平均は、観測期間全体と特定の月の両方で計算されるため、ダイナミクスを確認できます。



そこで、Excelでは、チーム全体(または複数のチーム、または会社全体)の1つのタスクの平均実行時間も計算されます。 たとえば、7人で構成される私のチームでは、1つの問題を解決するための平均時間は14時間です。



ちょっとした質問があります:1か月で行われるタスクとして何を考慮するか? 結局、過去(または最後の1年前)の月に従業員によって開始され、この月に完了したタスクがあります。 少し考えた後、従業員に割り当てられたすべてのタスクを考慮に入れることにしました。これらのタスクは、今月は終了ステータスに移行しました(タスクの管理に使用するRedmineでは、このような統計を収集できます)。 これは、実際に必要なすべての月の一般的な統計では、特定の完了月が重要ではないため、論理的です。



申込み



機能の開発に必要な時間を評価するには、タスクに分割する必要があります。 タスクはチームの規模に応じた典型的なものでなければなりません。 そして、すべてが簡単です:



T = N * A * k / D

ここで:

Tは時間単位のスコアです。

Nはタスクの数です。

Aは、チームが1つのタスクを時間単位で完了する平均時間です。

kは不確実性係数です。

D-チーム内の開発者の数。



なぜk-不確実性係数が必要なのですか? Aにはプロジェクトの典型的な軽度のリスク(病気、休日、健康不良による作業能力の低下など)が含まれているにもかかわらず、タスクリストの全体的な実行時間に影響するいくつかの要素は考慮されていません。 たとえば、問題の機能に関連しないタスク(古い機能のバグ修正、緊急のタスク)に注意をそらす。 または、たとえば、機能に新しいタスクを追加します:何かが考え出された、または突然、大きなタスクを少し小さく分解する必要がありました(私の測定によると、機能の作業中にプロジェクトに30%-50%の新しいタスクを追加します)。 最初は、k = 1 + 0.4(新しいタスク)+ 0.2(切り替え)= 1.6でした。 しかし、データが蓄積するにつれて、彼はそれを1.5に減らしました。



それは人生でどのように機能しますか? 最近、プロジェクトで新しい機能を作成する必要がありました。 私のチームは忙しかったので、監督は「数週間以内にあなたにすべてを書く」という言葉で次のチームを取ることを提案しました。 楽観的ではなかったので、少なくとも1か月はかかると思いました。 機能をタスクに分割した後、評価を行うことにしました。 私は新しいチームのパラメーターを持っていなかったので、私は自分のチームに使用したパラメーターを取り、2.5か月で完走させました。 これは、2週間または1か月ほどバラ色ではありません。 最終的に、すべてが3か月で準備が整いました。 ところで、開発者自身のタスク指向の評価に基づいて、彼らは約1.5ヶ月を必要とすることが判明しました。



まとめ



その結果、説明した方法の利点と制限を説明します。



利点:



制限事項:




All Articles