25 ポイント 投稿者 GN⁺ 2025-02-19 | 1件のコメント | WhatsAppで共有

> 「それを作るのにどれくらいかかりそうですか?」

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

1件のコメント

 
GN⁺ 2025-02-19
Hacker Newsのコメント
  • ソフトウェア見積もりはジョークのようなもの。過小見積もりに対する罰がないから

    • 映画制作の見積もりと比較できる。映画制作には完成保証を販売する会社がある
    • 完成保証には制作費の約2%がかかる。通常、予算300万〜7000万ドルのインディー映画で使われる
    • 保証会社は一部の超過費用を負担するが、大きすぎる場合は監督を解任して制作を引き継ぐ。こうしたやり方が実効性を生む
    • 完成保証会社は過去データに基づいて見積もる。多くの映画の実際のコストを持っている
    • 各シーンの費用を詳細に記録している。たとえばカーチェイスのシーンなら、データベースで過去100件のカーチェイスの費用を参照する
    • 監督、プロデューサー、俳優に関する情報も持っており、彼らがシーン撮影にかけるコストを同業者と比較する
    • これはロケット科学ではなく、保険のアンダーライティングだ
  • すばらしい記事だが、ソフトウェア経験との大きな違いが抜けている

    • 顧客自身が本当に何を望んでいるのか分かっていないことがある。事前にどれだけ聞いても、この情報は得られない
    • 時間単位で請求し、プロジェクト単位で請求することは断固として拒否すべき
  • DIYプロジェクトはいつもこんな感じ

    • 所有物について多く語られるが、道具や部品はかなり場所を取る
    • 著者はすでに多くの道具を持っていたが、それでもいくつか足りなかった
    • 結局、ホームセンターに行く回数は減るが、作業場は物でいっぱいになる
  • 穴あけ後に25分間まっすぐを保つ方法と、ノイズキャンセリングイヤホンの驚きについて学んだ

    • ノイズキャンセリングヘッドホンは聴覚保護具ではない。聴覚保護具は騒音源と耳の間に物理的な障壁を作る
    • ノイズキャンセリングヘッドホンは周囲の音を聞いて逆位相の音波を生成する。完璧ではないため、耳を十分には守れない
  • 話は良い。でも私の経験はほぼ正反対だ

    • 90%が簡単な作業なのではなく、90%が右往左往することだ
    • 同じ製品を複数の会社で繰り返し作業していることが多い
  • 「現実は驚くべき細部を持っている」という言葉を思い出す

    • 知らないことは、新しいものに近づくまでそのまま残っている
  • 著者が電源ケーブル用の穴を開けたとき、きれいにプラスチックのインサートを合わせていた

    • 建築業者はホース用の穴を雑に切って、たばこを吸いに行く
    • これはこれまでの経験と一致する
  • ほとんどの同僚は、プロジェクト開始前の調査と棚卸しに多くの時間がかかると言うと驚く

    • ほとんどの同僚はプロジェクトを早く終わらせ、その後のフォローアップに多くの時間を費やす
    • 私はプロジェクトの初期に多くの時間を投じるので、事後対応は必要ない
  • 次に技術者の料金に驚いたときに考えるとよい興味深い点

    • 配管工が洗濯機の接続に数分で300ドル請求するのは、排水口にどうやって穴を開けるかを知っているからだ
  • ソフトウェアプロジェクトを始める前に、どんな質問をすべきか分からないときはどうすればいいのか?

    • 探索作業を要件収集の演習と見なすことに反対ではない
    • 一度ホームセンターに行って、大きな買い物リストと未解決の質問集を持てば、より効率的かつ簡単に作業できる