私の洗濯機が `ソフトウェア見積もり` に対する考え方を変えてくれた
(cosive.com)> 「それを作るのにどれくらいかかりそうですか?」
- ソフトウェア開発者が恐れ、嫌うこの質問について、私の洗濯機が気づきを与えてくれた
- 洗濯機が教えてくれたソフトウェア工数見積もり(Software Effort Estimation)の難しさ
- 新居に引っ越して洗濯機を設置する過程で、予想以上に多くの時間がかかった
- 普通なら10分で終わる作業だったが、今回は4時間かかった
- 事前には予想できなかった障害物(ブロッカー)が発生し、設置が遅れた
- この過程が、ソフトウェア開発で工数見積もりを難しくする理由と似ていることに気づいた
- 障害物と解決策
- 障害物 1: 電源接続用の穴がなく、洗濯機を電源につなげられない
- 解決策 1: ホームセンターで60mmのホールソーを購入して穴を開けた
- 障害物 2: 家庭用ドリルではホールソーを使えない
- 解決策 2: より強力なドリルを借りて使用した
- 障害物 3: 排水ホースと給水ホースが、新居では予想より短かった
- 解決策 3: 新しい延長ホースを買おうとしたが、既存のホースは延長できないと分かり、改めて新しいホースを購入した
- 障害物 4: 蛇口に固く固定された金属キャップが外れない
- 解決策 4: より大きなスパナを購入してキャップを外した
- 障害物 5: 排水口のスピゴット(Spigot)がPVCの壁で塞がれていた
- 解決策 5: ドリルでPVCの壁に穴を開け、排水ホースを接続した
- 合計5回のホームセンター通いと4時間の作業の末、洗濯機を正常に設置できた
- 障害物 1: 電源接続用の穴がなく、洗濯機を電源につなげられない
- ソフトウェア開発の工数見積もりが難しい理由
- 慣れた作業であっても、環境が違えば予想外の変数が発生する可能性が高い
- 過去の経験に基づく見積もりがしばしば外れる理由は、「未知の未知(Unknown Unknowns)」があるためだ
- いくつかの例:
- 使おうとしていたライブラリがすでにメンテナンスされておらず、自分で修正しなければならない状況
- 開発ツールがアップデートされ、これまでのやり方が通用しなくなる問題
- OSのバージョン変更によって、既存の依存関係が正常に動作しなくなるケース
- インフラに新しいコンポーネントが追加されたが、想定どおりに動かない状況
- 結論
- 新居での経験は、ソフトウェア開発における工数見積もりがいかに難しいかを示している
- 開発を始める前に要件をできるだけ徹底的に調査すべきだが、予期しないブロッカーの発生は避けられない
- ソフトウェアプロジェクトが慣れた作業のように見えても、新しい環境ではまったく異なる課題が現れることがある
- こうした変数を踏まえて、スケジュールとリソースを柔軟に調整することが必要だ
1件のコメント
Hacker Newsのコメント
ソフトウェア見積もりはジョークのようなもの。過小見積もりに対する罰がないから
すばらしい記事だが、ソフトウェア経験との大きな違いが抜けている
DIYプロジェクトはいつもこんな感じ
穴あけ後に25分間まっすぐを保つ方法と、ノイズキャンセリングイヤホンの驚きについて学んだ
話は良い。でも私の経験はほぼ正反対だ
「現実は驚くべき細部を持っている」という言葉を思い出す
著者が電源ケーブル用の穴を開けたとき、きれいにプラスチックのインサートを合わせていた
ほとんどの同僚は、プロジェクト開始前の調査と棚卸しに多くの時間がかかると言うと驚く
次に技術者の料金に驚いたときに考えるとよい興味深い点
ソフトウェアプロジェクトを始める前に、どんな質問をすべきか分からないときはどうすればいいのか?