らんどなテックブログ

エンジニアのいろいろ

作業見積もりのやり方

仕事における作業見積もりについて、自分がしていることをまとめてみる。

 

やっていることは大きく3点。

  • 自分がしたすべての作業を時間とともに記録する
  • 自分がするすべての作業を見積り時間と共に記録する
  • 自分が活動できるすべての作業時間を書き出す

 

背景

見積もりとは、「必要な時間」-「使える時間」> 0 であることを確認するためのものである。どうしてもこれが満たせない場合は、助っ人を頼むなり期日をずらすなり別途対応が必要になる。

早期にこれができるのなら、別段大した問題はない(と思う)。一番やっかいなのはギリギリになってこういう話をしなければならない場合だ。それを回避するために見積もり、すなわち「必要な時間」と「使える時間」をできる限り正確に算出する必要がある。

 

作業時間の記録について

自分はすべての作業時間を記録している。これの目的は、①使える時間を最大化すること、②必要な時間算出の精度を上げること、の二点である。

作業時間の記録 - Google スプレッドシート

具体的には上記のようなまとめ方をしている。これを始めたきっかけは、自分が使えるすべての時間を可視化すれば、そこから見積もり精度を上げる何かが見つかると考えたからである。

実際の気付きとして以下のものがあった。

  • 作業の区切りを意識しやすい
  • ドハマリに気づきやすい
  • 作業分割が的確だったか振り返りやすい

毎回作業に名前をつけることになるので、何をどこまでやるかということを考えながら作業する習慣がつく。また、定期的に時間を確認するため、自分の想像以上に作業に時間がかかっている際にも気付きやすく、効率的に時間を使える。

また作業見積もりの際にも、今までの作業にどれだけ時間がかかったかが記録されているため、当てずっぽうではない見積もりができるようになる。

 

必要作業と作業可能時間の書き出しについて

この2点は一つの資料にしているため、まとめて記載する。

特に大型機能開発の際には、設計よりも前にすべての機能を書き出すようにしている。また、その時点で見えている MTG などの予定もここで一元化してしまう。

これを始めたきっかけは、「必要な時間」とはすべての機能開発にかかる時間の総和であり、「使える時間」とは期日までに自分が実際に作業できる時間であると考え、ならばそれらをすべて可視化すれば算出ができると考えたからである。

タスクリスト - Google スプレッドシート

具体的には上記のようなまとめ方をしている。

実際の気付きとして以下のものがあった。

  • このリストが片付けば完了であるという安心感がある
  • この通りに進めば期日通りに完了できるという安心感がある
  • 作業完了日がひと目で分かる
  • なんの見積もりがずれているかひと目で分かる

このリストには全タスクと作業できる時間がまとまっているため、作業完了日が明確に見える。また、見積もりと実際の作業時間を並べているため、振り返りをする際に必要な情報もまとまっている。

予想外の成果だったのは、安心感を持って作業できることによるメリットである。

間に合うのかどうかヤキモキすることが減り、不安だから見積もりをもう一度考えよう、といった開発以外の作業を抑えることにつながった。

この資料を運用する際には、以下の点に留意している。

  • 増えたタスクはすぐに追記する
  • 変更のあったスケジュールもすぐに反映する
  • 見積もりの指針を揃える(ゆるいかキツいか)

ここに一元化されているという点が安心感につながるため、他のメモやカレンダーにタスクが分散しているのは望ましくない。また、差し込みスケジュールもある程度は避けられないため、それも随時反映していくことで、資料と実際の状態を等しくすることができる。 

最後は振り返りの際に重要な点で、見積もりの指針がぶれていると正しく見直すことができない。キツめに見積もって遅れたなら誤差だが、ゆるめに見積もってなお遅れたなら、それは作業の重さや自分のスキルに誤認識があるかもしれない。

 

やってみたが合わなかったこと

下記のやり方も試したが、自分には合わなかった。

  • 1.5倍の見積もり
  • 2点見積もり

 1時間と見積もったものを1.5倍として考え、が実際に1.5時間で完了した場合、確かに遅れは発生しない。ただし、なぜ1時間と考えたのにズレが起きたのかを発見しにくくなる。そのため、この方法は基本的に用いていない。

2点見積もりとはキツめの最小見積もりと余裕を持った最大見積もりの2点を予め置くことで、大きなズレを回避することができる手法のことを指す。悪い方法ではないが、自分の場合は初期の見積もりを1番精度高く行い、中盤以降は微調整をしながら進めていく。そのため、見積もりを2重でやるような形になってしまい、自分には合わなかった。

 

まとめ

自分のやり方を整理したものをまとめてみた。

やっていることは大きく3点。

  • 自分がしたすべての作業を時間とともに記録する
  • 自分がするすべての作業を見積り時間と共に記録する
  • 自分が活動できるすべての作業時間を書き出す

やってみた上での気付きとしては以下の点がある。

  • やること、所要時間、作業できる時間などすべての因子を可視化することで、大規模開発であっても一つ一つ分割して考えられる
  • 情報が一元化されていることで作業途中の様々なストレスを軽減し、開発に集中することができる