見積に「理解する時間」が入っていなかった

転職用のポートフォリオとして、個人でWebアプリ「Hubpin」を作っています。
制作の経緯は「Hubpin 開発記録」に時系列でまとめています。
設計と判断は自分で行い、実装も原則自分で書いています。AIには手順書・レビュー・調査を任せています。

制作中の自作アプリの工程管理の記録から。
Web 制作の実務では工程ごとに見積を出しているので、その感覚で立てた計画の話です。
前回の「速さを選ぶと説明できないコードが残る」と同じ数字を、今度は見積の側から見ます。

目次

4工程連続で見積を下回っていた

見積 実績
工程1〜4(準備・設計) 25h 12.1h 48%

順調でした。「自分の見積は保守的すぎるのかもしれない」と思っていました。

実装工程で逆転した

見積 実績
工程5(認証) 6h 10.8h 180%

見積の時間を使い切ったうえで、さらに8割増しです。

最初の仮説は外れていた

「準備・設計は速い/実装は遅い」だと思いました。でも中を見ると違いました。

手順3(初めて Server Action を書く): 4.8倍
手順4(proxy と matcher だけが新しい): 2.2倍

同じ「実装」なのに倍率が半分以下になっています。

効いていたのは既知か未知か

手順4で新しく踏んだのは proxy と matcher だけ。
'use server' / Server Action / <form action>
手順3で覚えたものを使い回せました。

仮説を書き換えました。「準備は速い/実装は遅い」ではなく「既知は速い/未知は遅い」。

見積が数えていなかったもの

手順書の「1.0h」はコードを書く時間の見積でした。
学習しながら実装する工程では、理解する時間が別の変数として乗ります。

実務の見積が当たっていたのは、そこが全部既知だったからだと思います。

仮説は数字で裏づけられた

工程5の残りの手順が終わりました。倍率はこうなりました。

手順 新しく踏むもの 目安 実績
3 Server Action・'use server'useActionState 1.0h 4.8h 4.8倍
4 proxy・matcher 1.0h 2.2h 2.2倍
5 なし(3と4の組み合わせ) 1.3h 2.0h 1.5倍
6 なし(確認とスクリーンショット) 0.6h 0.2h 0.33倍
7 なし(PR) 0.4h 0.1h 0.25倍

4.8 → 2.2 → 1.5 → 0.33 → 0.25。

さらに、手順5の 2.0h の中身を見ると、新しい概念でつまずいた時間は1分もありません。
時間を使ったのは3件とも「環境と手順」でした(環境変数のキー名違い/ログを探す場所を間違えた/
コードの貼り付け位置)。

工程としては 6h の見積に対して 10.8h で大幅に超えています。
でも中を分けると、超えた分はほぼ手順3と4に集まっていました。

落としどころ

「見積が甘かった」ではなく「見積が数えていない項目があった」。
既知の作業に対する見積は当たる。未知が混ざると、混ざった分だけ伸びる。

それなら、未知の量を先に数えるほうが精度が上がるのではないか、というところまでです。
次の工程からは、手順書に「新しく踏むもの」の列を先に書くことにしました。

目次