洗濯機が教えてくれたソフトウェア見積もりの新しい考え方
引用元:https://news.ycombinator.com/item?id=43085876
ソフトウェアの見積もりはお粗末だね。下回った場合の罰則がないから。映画製作の見積もりと比べてみると、完成ボンドを売る会社があって、映画がリリースされなければ金返せ、みたいな保証をするんだ。完了登録の仕組みについて解説した記事があってさ。完成ボンドは製作費の約2%かかるし、インディペンデント映画で使われるんだよ。最近の映画制作では、過去のデータを元に見積もりするらしい。
>ソフトウェアの見積もりはお粗末だね。実際、これは一部の会社に当てはまるけど、大抵の場合、見積もりの問題は明確さが不足していることだと思う。商業ソフトウェアって、何故か他の業界と比較されがちだけど、いつも失敗するんだよね。
>明確さが不足しているから見積もりの問題が起こる。僕が見てきた限りでは、前もっての設計が設計時間の大部分を占めてるよ。この前の設計作業を見積もりに入れない人が多くて、仕様が決まらずに遅れているって言うんだ。
ソフトウェアの構築方法に起因しているんだ。イベントモデリングを使えば、機能のコストの見積もりは簡単。ただし、新しいアルゴリズムのイノベーションでは歴史的な前例を参考にできないこともある。ただ、業界では普通の仕事は過去のテーマの変種だね。
ごめん、その特定のプロセスがその問題を解決するとは思えない。DDDは結構不必要な複雑さを加えることがあるし、みんなが使い方を理解しているとは限らない。会社によっては、決断が難しいこともあるし、市場が変わることも多い。だから、実際に何を設計するか考えなきゃいけない。過剰設計しないようにしながら、スケーラブルで使いやすいものが求められる。
>シンプルな映画製作にソフトウェアを比較するのはフェアじゃない。映画はほとんどの場合、手間がかからない方法でできちゃうからね。だって、フルクルーを雇うのも簡単だし。特定の問題に対してソフトウェア開発者を雇うのは難しいから、例外的なんだ。
ジェームズ・キャメロンのようにイノベーションをする場合もあるから、ソフトウェア開発者もビジネス問題解決の過程で新しい領域を切り開くことがあるよね。
ソフトウェアの見積もりは、顧客がプロトタイプを見ない限り何を求めているかわからなくなるから問題なんだ。その結果、曖昧な要求が無限に届くことになる。
これ面白いね。このサービスを聞いたのは初めてだけど、納得できる。ソフトウェア開発マーケットで完成ボンドサービスを持つにはどうする?その場合、どんな要件が必要?たぶん、映画の時みたいに、詳細を決めて、歴史的なデータも必要だろうね。
おっ、歴史的データが成功の鍵だね。データを集めて中央値と標準偏差を計算して、中央値プラスセーフティマージンで見積もるんだ。
面白い例えだね。ただ、映画は自由度がほとんどないし、制作側は役割に関してあまり変化がないから、問題も少ない。一方、ソフトウェアプロジェクトは自由度が大きく、論理的依存関係が物理的なものよりも速く変わるから、問題が増える。役割も常に変わるし、役割の統合も進んでるね。オススメの方法は、固定的な役割があって長期的に続くコンサルタントには向いているかもしれないけど、売上は難しいかも。成功例の37signalsも、同じ言語を25年間使い続けてるけど、今提案することは難しいはず。
映画はソフトウェア開発よりリスクが高いよ。キャストや機材を運ぶのも大変だし、たくさんの問題が起きる可能性がある。ソフトウェア開発者はデスクに座っているだけだから。
アート作品と厳しい要件のソフトウェア製品を比べるのは良くない。映画は時間が足りなくなればシーンを削ればいいけど、ビジネスソフトの開発はそうは行かない。特にミッションクリティカルなものは削れないんだ。
『How Big Things Get Done』の著者Bentは、OPが述べているリファレンスクラス予測の支持者だ。みんなプロジェクトは特別だと考えて失敗しがちだけど、リファレンスクラス予測は色々な要因を平均化する。家作りの時間を見積もるときは、似たような面積の家を建てるのにかかった平均時間を参照すればいいんだ。リスクやコストオーバーランなども考慮されるし、詳細を考慮しなくて済む。
>どうやって完成保証会社は見積もってるの?歴史だよ。それが常に可能とは限らないし、現実は常に変わっているからね。記事の最後には未知の未知についての良い部分があるよ。
>ソフトウェア見積もりはジョークみたいなもので、見積もりが甘くても罰がないからだよ。実際、会社が開発者にプレッシャーをかけて、納期を甘く見積もらせるのも問題。半ばで開発者に負担がかかるだけなんだ。
同じ会社だけど、細部に注意しない理由で雇ったソフトウェアエンジニアを全員解雇しているよ。
良い記事だけど、ソフトウェア開発と洗濯機の比較で欠けている点がある。洗濯機を取り付ける人が実は移動させたい位置があること、そして音がうるさいので収納の扉はもっと音を吸収するものが欲しい?って感じ。顧客は実際には本当に知りたいことを理解できていなくて、実物を見ないとわからないんだ。事前に相談しても全ては出てこないし、後から文句を言っても関係が悪化するだけだから。請求は時間単位にして、プロジェクト単位では絶対に請求しないのがベスト。
これがカスタムソフトウェア開発が絶対にソフトウェアそのものに関するものではない理由で、そう考えるのが一番誤解されている部分。実際には、クライアントが自分のプロセスやビジネスモデルを正確に理解する手助けをすることが重要で、それをコンピュータにコーディファイするのはその次の話なんだ。
>これがカスタムソフトウェア開発が絶対にソフトウェアに関するものではない理由だよ。言い換えると、カスタムソフトウェア開発は絶対にコードについてではないってこと。ソフトウェアはコードと同義だと考えるのが問題なんだ。でも、あなたの言ってることはほとんど正しいよ。
>ドアを開けたときに洗濯物を乾燥機に入れやすくするために、ユーティリティクロゼットの反対側に移動したいんだよね。ヒンジを入れ替えればドアが逆に開くし、メーカーに感謝すること間違いなし。柔軟性があってユーザーが設定できるのはいいことだよね。さあ、誰かユーザー設定が製品を複雑にしてコストを増やすカウンター例を教えて! 時間単位で請求しない方がいいよ。プロジェクトを固定費で請求して、元の要件から逸脱する変更に関しては時間単位に切り替える条項を入れ、最低2時間の料金を設けよう。時間単位で請求されるのはクライアントをトリビアルな変更をあまり要求させないようにするしね。 >時間単位で請求して、プロジェクト単位では絶対に請求しないべき。ただ、実際の作業範囲を詳細に定義してプロジェクトで請求するのも良い。これがあればコスト見積もりや新しい要求が出た時のカバーになる。顧客は見積もりが不明だから時間単位請求が嫌いだし、提供者も顧客に「あと数時間でできる」と思われるリスクを抱えちゃう。 時間単位で請求するのって、HNでの契約者の報酬アドバイスに反してない? 必ずしもそうではない。アドバイスは通常、専門家であったり、仕事がスコープで定義されている場合を想定しているから。時間単位で請求できるなら、顧客がその場で考えることができ、結果的により良いものになる。ただし、効率的な成果物の場合はプロジェクト単位で請求した方がいいよ。 プロジェクトの性質によると思う。よく定義された作業と成果物がある場合はプロジェクト単位、未知の領域で学びながら作業する場合は時間単位で請求していたね。例えば、古いデータベースからPostgresへのデータ移行みたいなやつ。 DIYプロジェクトっていつもそんな感じだよね。でも、もので必要ないって意見をよく見るけど、ねじやガスケット、電気接続具、予備部品が必要な場面も多いんだよ。最終的に自分が必要だと思ったパーツを揃えがちになる。友達の工具を借りるのも良いけどね。 ワークショップの道具や、自動車や庭の道具、キッチンの道具は、Marie Kondoの「6ヶ月使わなかったら捨てる」モデルに収まりきらないんだよね。道具を持っていることで、さまざまな作業ができる能力を持っていることになる。公共の場でこれらの道具を共有できる社会があればいいのに。 共通の道具を持つのは悲劇だよね。必要なときに見つからなかったり、壊れていたりする。でも、メンテナンスや管理、知識が欠けていることが多いんだ。 もし近くにツールライブラリーがあれば利用してみてね。リンクはここだよ : https://www.neptl.org 最近のメンテナンスコストは高いからね。安いショップは時給110ドル、評判良いとこは125~150ドル、ディーラーはさらに高い。季節ごとのタイヤ交換に100ドル払う人もいるし、良いジャッキやスタンドセットは180ドルくらいだよ。道具を一度買えば、タイヤ交換で毎年節約できるし、ブレーキやサスペンションも自分でできるようになる。自動車整備は始めやすいからね。 昔は違ったけど、今は工具が安いよ。洗濯機用のホースが7ポンドとか。ドリルやドリルビットも安くて、まとめて64ポンド、つまりアメリカドルで約80ドルだね。買いに行く時間と工具の値段を考えると、選択肢が違うよ。安い工具でも十分だよ。 時間の価値を比較するのは間違ってると思う。週末に洗濯機の取り付けをする時、俺の時間はゼロドルだって思う。暇な時の代替案は、読書とか散歩とか、どれも収入はゼロだよ。だから、趣味の満足感を大事に考える。 結局、自由時間はどう使うかだよね。洗濯機の修理とフリーランスの仕事、どっちが大事かで経済的判断することもあるけど、ただのゲームやテレビだったら自分でやる方がいいよ。 それは自由時間の価値や、洗濯機の修理の楽しさに依るよ。週末が高価なもので、趣味の時間を大事にしたいから、コスト次第で修理にお金払う方がいいね。 それは労働時間の価値と関係ないと思う。コメント主の主張は、テクノロジー業界にいない人は自由時間があまり価値がないという示唆になってる。多くの人は自由時間をお金では測らないと思う。 支払い意欲は残ったお金によく関係すると思うよ。時給でないから、これを無視するのは役に立たないかも。 楽しい挑戦なら時間はゼロドルだよ。でもやりたくないなら、時間を時給の倍で価値を付ける。必要なら人を雇うよ。 家のメンテナンスは趣味というより面倒だと思う。時間を仕事と同じ価値で考えるのは注意が必要だね。過去の自分の働き方を振り返ると、普通のことで良いバランスを求めてる。 家の修理を自分ですることが少ないと、簡単に見えるけど、実際は高いし質も悪いと感じることもあるよ。記事の話を経験するとわかることも多い。 >その道具に£64、約US$80は高いかな。テクノロジー業界なら、店に行く時間の価値は道具の値段以上かも。時給で働いてるなら別だけど、道具を見たり考えたりしている時間が現金を生むんだ。安い道具が質が低いと思うなら、まあ品質は大丈夫だよ。安物は手間がかかるし、使うと経験が悪くなることもあるから、結局は「安物買いの銭失い」にならない? 自分はDIYが好きなメカニック。Harbor Freightの道具を一回買ってみて、使えたら使い続けるって感じだね。安い道具でもちゃんと使えることが多い。プロならSnap-Onに投資するのも理解できる。ナットを丸めちゃうのは品質より技術の問題だよ。安物なら壊れることはあるけど、そうじゃないことが多い。 自分もDIYメカニック。Harbor Freightの道具をまず試して、合わなければ次に高いものを買う。安い道具で次の作業が困ることもあるけど、無理して高いもの買う必要はない。道具の品質はともかく、自分に合ったものを選ぶのが大事。でも、ナットを丸めるのは技術の問題だと思う。 道具にバッテリーがある場合は、信頼できるブランドがいいね。技術が変わることもあるけど、そっちの方が流れを止めずに使えるから便利。 安物の道具は、使ってるうちに信頼性が疑わしくなることがある。技術に依存するのは良いけど、安物購入が裏目に出ることもあるから注意が必要。 安物の道具でいいなら、シンプルな作業には安いドリルで十分。高い道具は必要な時にだけ使えばいいと思う。 高価な18vのドリルがあるけど、そんなに特別じゃない。情報があったら教えてほしい。 若い時や初めての家を買った時は、安い道具をまず揃えて使っていって、必要なら少しずつ良い道具に替えていくのがいいと思う。ただ、良い道具は再販価値もあるから、大きく使えるものだけ投資すればいい。 DIYをすると、高い道具を買うのは必ずしもいい選択じゃないかも。専門家が持ってる道具やこれまでの経験があれば、修理もスムーズだし、問題を解決するのも早い。自分でやるなら、楽しむかお金を節約するために、時間の使い方を考えないと。 実体験から言うと、時にはDIYでお金を節約するだけじゃなく、問題をきちんと解決するためにやることもある。自分の研究と材料で、音の問題を解決できた。それが自分の暮らしを快適にしてくれたから、DIYはそういった面でも大事だね。 残念ながら、私も同じ経験をしたことがある。昨年、1930年代の古い2階建ての家を買ったけど、ほとんど全部解体が必要だった。配管工以外の職人たちは手を抜こうとして、質の悪い仕事をした。有名な人たちもそうだった。自分たちで解体作業を多くやったが、これが簡単で危険じゃなかったからだ。うちの壁は全部レンガで、完全に真っ直ぐじゃない。プラスター屋は曲がった壁を作ってしまったし、ライセンス持ってる人だった。私たちが壁をサンディングし直したが、彼はその分のお金を請求しようとしてきた。電気工事士は仕事を始めたけど、今は全然来ない。未だに彼の道具が残ってるけど、SMSや電話にも応じない。幸いなことに、家族に電気工事士がいるけど近くに住んでない。お金を払って全て計画してもらったが、私たちが設置して、彼はチェックとメイン接続をするだけだった。ドライウォーラーは壁にいらないドライウォールを取り付けた。計画も詳しく提供したのに、彼らは間違いを認めたけど請求してきた。結局、ほとんどの作業を自分たちですることになった。やりたくてやったわけじゃないけど、職人たちとの連絡や整理、最終的には言い争いが大変だった。結局、自分が品質チェックにかけた時間を計算したら、最初から自分でやってればもっと早くて安上がりだった。 全体の契約業者を雇ったの?それとも各個別の業者を雇ったの? >これらはまとめて安くはなく、厳しい割引なしには売れにくいのが現実。本当に賢いのは、中古を買うことだ。 賢いかもしれないけど、安い理由があるんだ。プロジェクトを進めるためには今すぐ必要だから、著者も中古を安く手に入れることができたかもしれないが、動く洗濯機がほしくて、数週間待ってるわけにはいかなかったと思う。現地のハードウェア店は高いけど、ここでは価値がある。計画を立てれば避けられるけど、必要な道具を事前に把握するのは難しい。結局、家に作業場ができてしまって、そこに投資するにはスペースも必要だし、掘り出し物を見つけるのは一手間かかる。父が安く手に入れた質の良い道具がいっぱい残っていて、感謝しているけど、使わなかったものも多い。後で役立つかも。 中古の道具はすぐに使えなくなることが多い。いい掘り出し物もあるけど、ツールの修復にこだわる趣味がないと損。趣味は物を作ることであって、道具の修復ではない。時には数千ドルの道具を買って、さっさとプロジェクトを進めてもいいと思う。 ゴミ箱漁りはやめて、質のいい道具を安く売っている質屋に行く方がいい。私のメカニックの友達は高級住宅街の遺品整理やガレージセールによく行っていて、SnapOnや良いDeWaltの電動工具を安く手に入れてる。ある友達は15年もののMilwaukeeのリプロサウが20ドルで手に入れて、よく分からないけど未使用みたいだった。逆に言えば、道具を修復する趣味と掘り出し物探しの趣味を交換してるってことかも。 遺品整理にはかなりの時間がかかる。珍しいものも見つかるが、ほとんどはただのゴミだ。この間見つけた良い道具は、地元の機械工場が倒産する時だった。店主が引退して、会社を引き継いでくれる人が見つからなかったせいで、店の全てを売っていた。良い物がたくさんあった。 >良いドリルを買っただろうけど、値は張るけど一番よく使う道具だ。確かに、良いドリルはホームオーナーにとって必需品。私もプロシューマーグレードの電動ドリルを買ってからよく使っていて、10年近く持ちこたえている。チャックを替えたり、プラスチックの外装をエポキシで修復したけど、まだ使える。良いドリルと言えるほどではないが、十分良い。 著者と似たような経験があるので、プロジェクトに向けて「過剰に準備する」ようになった。必要ない部品は返品できるから、必要なら旅行を節約できる。ソフトウェア開発にもアナロジーがあるかどうかわからない。 必要なパーツが要らなかったら、返品できるのは便利じゃん。でも返品するのにも手間がかかるよね。 彼のドリルはいいんだけど、全体に使うには力が足りなかった。もっとパワーのあるドリルが必要なのに、いつも軽い方を使っちゃうんだよね。 ドリルは二つ必要だよね。ひとつは軽いバッテリードリル、もうひとつは強力なコード式ドリル。 大賛成!24VのDeWaltコードレスドリルは最高の道具だけど、難しい素材にはBoschのコード式が必要。でも、チャックがひどいってのが残念だね。安いドリルでパワーが足りないっていうのは、特に気をつけた方がいい。 それに、ロタリーハンマーが必要になるかもしれない。普通のドリルで石やコンクリを掘るのは超大変だよ。 金属を掘ることが多いなら、エアドリルも欲しいよね。それで質のいいエアコンプレッサーを買う口実ができて、他の空気工具も買えるし。 「現実には意外なほどの詳細がある」ってことを思い出す。知らないことは、近づかないと分からないままだよ。 ”賢いけど間違っている人と話す時は、その人にとって重要な詳細を見極めて、なぜそれが重要なのか考えてみて。”これは大事な洞察だね、使ってみる。 シェアしてくれてありがとう! 自閉症の私は、普通の人よりも多くの詳細に引っかかっちゃうんだよね。 建設業者が水道ホース用の穴を切ったとき、10秒で粗い長方形をギコギコ切り出して煙草を吸いに行ったエピソードはすごく共感できる。著者が電源ケーブル用にきれいな穴を開けてプラスチックの挿入物をはめたのとは大違いだ。写真にはすごく驚かされないよ。 高いところに登らなければ、DIYでほとんどのことをやっとる。全体的には時間がかかるけど、始めると意外とサクサク進む。YouTubeで調べたり、うちの家電の問題を解決する動画を見つけたりしながらね。自分でキャビネットを作ったりガレージの床をエポキシ処理したりすると、業者より質が高いことも多い。今週末には娘のバスルームのコンクリートカウンタートップを作る予定。 >僕はこの作業にお金を払ってもいいけど、結果に信頼が持てない。業者を頼むと絶対に自分が片付けなきゃいけないことになるし、スタンダードに達していないことが多い。業者にやってもらった仕事がひどすぎて、自分でやったほうが楽だったみたいな経験が何度もある。 僕が洗濯機を修理した話を知りたい人のために、過去に修理業者が間違った端子を使ったせいで修理したときのサガを共有するよ。 業者は小さな簡単なDIY仕事なんかやりたがらない。彼らが来なくても、千ドル以下の仕事はやってくれないよ。質の高い仕事なんて期待できなくて、本当に残念だ。 >運が良ければ業者は来るし、運が良ければコード通りに作業して、運が良ければサッと仕事を終えて帰る。 ハハ、業者が来るのを追いかける必要があるし、現地に来ても時間通りに来た試しがない。全くもっておかしな話だ。 そうそう、何度も業者とトラブルがあったから、もう自分で失敗することにしたよ。工具や本、今はYouTubeの動画も買って、各プロジェクト前に練習する。おかげで呼吸を合わせるのは安く済むし、かなり学んだ。 >業者を頼んでも、質が高いとは限らない。前の家主がバスルームのタイルをきれいに仕上げてたのに、トイレの後ろのタイルはちゃんと配置せずに仕上げてあった。全体的には完璧なのに、そこだけ見たくない。 その雑なカットにはすごく共感した。電話線接続に来たBTエンジニアとも同じ気持ちで、たいてい自分でやったほうがプロよりも良い仕事ができるって。やる気の差なんだろうけど。 ストーリーはいいけど俺の経験はほぼ逆だわ。90%が迷ってて、10%が簡単って感じ。しかも同じコードを何度も書く人や、プロジェクトごとに同じ問題を解決している人がどれだけいるんだ?それに、今までの技術スタックやフレームワークを使ってるなら、まだしも、初めてのことですって答えると、見積もりがめっちゃ難しい。もっとコメントを表示(1)
もっとコメントを表示(2)
もっとコメントを表示(3)