65
32

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

俺の見積もりがこんなに安いわけがない: 第3話 No estimates

Last updated at Posted at 2021-07-11

「先輩さん」
『はい、後輩ちゃん』
「前話してた1,000万の見積もりの話なんですけど」
『うん』
「あれって結局なんで1,000万の見積なんですか? 結局作ったの100ページなんですよね? 私どう計算しても1,000万までいかないなって思ってしまって。」
『ほう』


『後輩ちゃんは、じゃあその100ページ作ったみたいなプロジェクトをどう見積もってみたわけ?』
「うーんそうですねー、例えば1ページ3万とかしたらですよ、100ページあったあら300万。そしてCMS組み込むのがそうですね…… じゃあ同じぐらい大変だとしたら300万。これで合計600万ですよ。」
『なるほど』
「あと400万ぐらい足りないんですけど、これはどういう風に考えればいいんですか? ページ単価が低いんですか? それともCMS組み込みが安すぎる……?🤔」

『まぁ見積もりの出し方ってのは、それはもう無限に方法があると思うんだけど、とりあえず後輩ちゃんの考え方で決定的に抜けてる事があって。それは実装以外の部分だね。』
「実装以外? コード書く以外ってことですか?」
『まぁそういことね。』
「でもコード書いて納品してますよね。そういうことではなく……?🤔」


『まずさー、後輩ちゃんはさ、僕の方で実装して欲しい内容をGitHubのissueにまとめてるわけで、その内容見て実装してるでしょう?普段。』
「そうですね、あ、ありがとございますいつも😙」
『いえ、こちらこそ。で、それが無いとさ、後輩ちゃんが実装にかかる時間は多分、もっともっと増える。2倍3倍とかに』
「おお、そんなもんですかね」
『それは、クライアントから渡された情報をそのまま実装に落とし込めないからなんだよね。不明点があったら確認したり、おかしい点があったら突っ込まないといけない』
「ふむふむ🤔」

『例えばそうだなー。んじゃヤフオク!の検索条件を例えば例に挙げるとします。Switchが欲しくてさっき見てたので。』
「おお、モンハンですか?」

ヤフオク!の検索条件の画面

『この画面、システム側の仕様はこれでーみたいなエクセルが渡されて、んじゃこの画面HTML+CSS+JSで作ってくださーいとか言われたとするじゃない。』
「はい」
『そこで、じゃーさっきのさ、ウチはページ単価3万なんで見積もり3万です!とかするのはさ、それはちょっとヤバいのよ。』
「ヤバいんですか!?」

『うん、そうね。例えばさ、このキーワードってやつあるじゃん』
「はい」

ヤフオク!の検索条件の画面 キーワード部分

『まーこれをさ、サーバー側のPHPなりなんなりにPOSTするか、こう、RESTのAPIみたいなのにPOSTして、返ってきた結果をどうにかするとかいう想定だったとして。』
「はいはい」
『すべてを含む/少なくとも1つを含む/含めない……ってあるけど、これはどうするんだろう。気にせずサーバー側にまるっとPOSTしちゃっていいのかな? UIとしてこれはどうなんだとかいう問題はひとまずここでは考えないとして、システム的にどうすりゃ良いのかよく分からなくない?』
「あーそう言われるとそうかも😕」

『もしかしたら、すべてを含むを入力したら、少なくとも1つを含むを非活性にするとか、その逆とかさ、しなくていいのかな?とか、そういうのが気になるよね。少なくとも実装しだしたら』
「そう言われると、そういうのはありそうですね〜🤔」

『あとその下にラジオボタンがあるけどさ、コレ』
「はい」

ヤフオク!の検索条件の画面 キーワード直下のラジオボタン

『ひとまずこのUIを見て自分が確認したいのは、あいまい検索って何?ってところかな。』
「ほうほう」
『これが何なのかよく知らないよ? 今この画面だけを見て話してるだけだから。だからまずこれが何なのか理解しないと作れないし、このラジオボタンを押したら、やはりキーワード欄も連動して何か非活性にしなくていいんだろうかっていうのも気になる』
「なるほど」
『あとはそれによってPOSTする内容も変えなくていいんだろうかとかね。』
「はいはい」

『そういうのをさ、ハイAPI仕様書とデザインカンプできてるんで、後輩ちゃんあとよろしくーって丸投げしたとするじゃない。僕から君に。』
「はい」
『これさ、今話してたみたいなことがあったら、逐一確認しないと作れないでしょう? ここはどうなのかな? あれ、こっちはどうなのかな?って。』
「そうかもしれないです」
『作りながら疑問や不明点が生まれてきて、その度に確認しながら進めていく感じになるよね』
「なりそうですね〜😩」
『まぁこの一つの画面見ても、そういう、確認しておきたいところっていうのは色々出てくるでしょ?』
「はーそうか……」

『それでさ、ページ単価3万みたいな風にこっちから見積もりだしてたとするとさ。全然内容が詰められてない状態で依頼が来れば来るほど、僕ら損だよね? 1ページ完成させるために色々確認したり、ちょいちょい突っ込んだりしないといけないじゃない。』
「たしかに……🤔」
『逆に、そういうのがクリアになっている状態で、その指示通りに実装すれば何事もなく終わるみたいなパターンだったとしたら。逆に僕らはページ3万でスムーズに終わったな……とかなるかもしれない。』
「そうかも……」
『要するにさ、その1つページを作るっていう中にはさ、色んな要素がふくまれてんだよね、ガリガリコードを書く以外にさ。』
「なるほど……😗」

『後輩ちゃんはまーその、漠然と1ページいくらって考えてたと思うんだけど、基本的には今ここで挙げたようなさ、要件を整理する工程ってのが、大なり小なり必要なのよね。ウチに落ちてくるような仕事の場合はほとんど。』
「そっか〜要件の整理かー。」

『それで最初の話に戻るけど、僕が後輩ちゃんと仕事する時は、実装すべき内容を明確にして、それをGitHubのissueにまとめてから、仕事として後輩ちゃんにお願いしてるわけよね。』
「あーそっか。そういうのが先輩さんのやってくれてることだったんですね、私よく分かってなかったです。なるほど〜😗」
『まぁそうだね、ここで発生するこの僕の働く分ってやつはさ、後輩ちゃんの見積もりだと勘定されてないと思うけどどう?』
「いやーそうですね……。全然考えてなかったです😇」
『そーだよね。だからまず、そこが後輩ちゃんの考える見積もりには足りてないです。』
「なるほどそうだったのか……😗」


「そっか〜。あーじゃあ、先輩さんの見積もりの1,000万ってのは、その実装する部分以外の内容が入ってるってことですかね?」
『まーそれは一つ要素としてあるね。それが無いと、テキトーな状態で飛んできた依頼であればあるほど、ウチの利益が薄まっていく結果になると思うよ。』
「そうか……」
『そういう仕事が増えたらボーナスも出ない』
「えっ😨」

『まーあとはそうね、挙げればきりないけど、そういう実装をしていく際にさ、全体的なスケジュールを立てたりとかさ、どういう技術選択をしたらいいか検討したりとか、請求処理だとか、そもそもそういうAPIとかUIの仕様をを考えたりすることもあるしさ、まー実装する以外にやることが色々あるわけよ。』
「なるほど、先輩さんはそういう仕事をしてたんですね……😗」
『そうそう、まぁウチの場合だとそういうのはまとめてディレクション費みたいにして出す事が多いけど、そういう稼働が少なくとも存在してるよね』
「なるほどなるほど🤔」


「うーんそうなんですね〜。でもそうなると余計によく分からないんですが……」
『お』
「だったらなおさら、どうやって見積もりだせばいいんですか? その先輩さんの稼働なんて、どのくらいかかるか全然分からなくないですか? 依頼される内容がちゃんとクリアになってたらそういう作業は少なくなるってことです……?🤔」
『うん、そうそう』
「100ページ作るだったらですよ、HTMLとCSS書くだけなら、まー大体このくらい時間かかるかなとか想像できる気がするんですが、先輩さんが動く分がどの位なのか、私にはよく分からないんですが……」
『そうそう、まったくもってその通り』
「じゃーやっぱり全然見積もれないじゃないですか!😠」

『そうだね、だからそういう比較的大きめな、長いプロジェクトでは、基本的には、最初の段階で最後まで見積もれませんって話をする。』
「え? そうなんですか?🤭」
『うん、でも大抵の場合見積書は出さないといけないので、概算として出すことにしてるのよ。』
「なんと🤔」
『そうねー。その場合は、まぁだいたいこのくらいの依頼内容でしたら、ディレクター3人月、エンジニア4人月ぐらいなんで概算で1,000万ぐらいですねみたいな感じかな。』
「えーそんなんでいいんですか?」
『そうねー。それで、だいたいこのくらいは最低かかると思いますけど依頼されます?っていう感じですすめる。』
「えっ、なんか適当……!?」


『そう、超適当だよ。根拠は経験しか無い。あ、でも一点注意だけど、これは概算ですって予め伝えることね。でも今のところ僕はこの方法が一番いいと思ってる。クライアント的にも僕ら的にも。』
「えー」
『うん。まず一つ言えるのは、予算感が合わずに進めるのをこの時点で断れるというところね。』
「断っちゃう……?🤔」

『前回話したじゃない。お互いの利潤が一致したら仕事になるとか、レストランではドレスコードで弾くとかさ。』
「はいはい、しましたね」
『予算感が合わないのに細かく見積もっても、何の利益にもならないよね、ウチとしては。』
「まぁそうですね。😗」
『それにね、そういう風に内容を細かく聞いて、見積もりを突っ込んで立てるということは、それ自体がもうすでにクリエイティブな作業。プロとしての技能を行使してる状態になってるわけよ。』
「ほう🤔」

『それって経験や技術が必要なことで、誰でも出来ることではないでしょう? ほら、その100ページ作るってやつだってさ、後輩ちゃんに100ページ作りたい、こういうプロジェクトがあるって相談されたらよ、それ細かく見ないとなんとも言えないし、そんなの見てたら2,3日かかるでしょ。』
「たぶんかかりますね……🤔」
『そしたらどうかな、その仕事が成立しなかったらタダ働きだよね。』
「たしかに」
『タダ働きっていうか、そのために費やした労力は、実質他のクライアントから頂いている稼ぎの中から消費されるだけなんだよこれ。だって何してたって社員に給料は払わないといけないわけだからさ。ウチの会社としては。』
「なるほど😗」
『クライアント側としてはそれは得だよね。それで相談してた内容がちょっとクリアになる割には1円も払ってないわけだからさ。見積もりありがとうございます。他のところに依頼することにしました……ってさ。』
「そう言われるとたしかに……🤔」
『ウチとしては別にボランティアでやってるわけじゃない。ウチの利益のためにやってること。タダで食事を出すつもりはありませんだよ。なので最初は超概算で足切り。これがウチのためであり、ウチに依頼してくれるクライアントにとっても最も良い方法なんじゃないかなーと、まー僕はそう思ってるかな。』
「そっかー😗」


『もう一つは、そんな最初の時点では、どうせ最後まで見積もることなんて不可能だってことかな。』
「不可能?見積もってくれって言われてるのに無理って話をするということです……?🤔」
『まぁ端的に言うとそうなる。正確には、頑張って細かく見積もったところで、プロジェクトが進んだら変わるのがフツーだよ? だからそんなのやめない? という感じ。特にプロジェクトが長ければ長いほどね。』
「うーんそんなもんなんですかね〜。でもWebサイトリニューアルしたいよとか、こういうシステムを作りたいよとかいう依頼なわけですよね。私達のところに相談にくるお客さんは😗」
『まぁそうだね。これは僕の経験からくるところだけど、そういう場合であっても、最初に考えてた通りにおさまることなんて稀だし、進めてたらあれもやりたいこれもやりたい、やっぱりこれはいらないなんていうことはごく普通なのよね。』
「ほうほう🤔」

『例えばそうね、コーポレートサイトみたいのを作っていたとしたら、サイト内検索を入れたいーとか、スタッフブログはやっぱりいらないとか、トップのメインビジュアルにはこだわりたいとかどうとかさ、進めてたら見えてくることがあるのはごく自然なことだと思うよ。』
「なるほど…… そう言われるとなんかありそう……😕」
『そういうのをまるっと細かくクリアにしてから依頼されることもあるけど、だとしてもある程度作るものは変化するという前提でいたほうがいいと思うね。どのくらいブレないかという差があるかというだけの違いで、それは実際に仕事を始めないとわからないものだと思う。特に付き合ったことすらないクライアントとはね。』
「ふむふむ」


『あとは、さっき実装以外の部分をディレクション費みたいにするって話をしたけどさ、その作業がどれくらい必要なのかは、ウチ以外の要素で決まるところが多すぎて、作業量の予測を立てるのが無理っていうのがあるかな。』
「ほう🤔」

『例えばさっきヤフオク!の検索条件をちょっと見たけどさ、ああいう風にシステムをどこか別の会社が作ってさ、ウチはHTML+CSS+JS書くとするよ。そうしたら、ウチの作業量って、そのシステムの出来栄えにすごい左右されるよね? その、APIの仕様がメチャクチャで使い物になりませんとか、組み込んだらバグだらけでバタバタしてめちゃくちゃ時間がかかっちゃうとかさ。例えば。』
「なるほど…… 怪談ですね……」
『ほか、クライアント側の担当者がどのくらい技術だったり、今やっている内容に精通してるとかいう要素によっても、ウチの作業量が変化するのよね。』
「しそう……」
『そういう風に、プロジェクトにどのくらいの予算が必要とされるかは、進めてみないと分かりませんっていうのがあるね。』
「なるほど😗」

『あと最後にもう一つ、これがたぶん一番重要なんだけど、そんな風に最初に細かく見積もって計画しても、それが直接的に成果物を良いモノにするわけではないというところがあるかな。』
「えーどういうことです……?🤔」
『要するにそういうデカい長いプロジェクトだとさ、やりたいことがいっぱいあるわけよね。例えばWebサイトなら、作る画面も何百とか何千とかさ。』
「はいはい」
『そういうのをさ、一つずつ細かく考えて、この画面は工数がこのくらい、あっちの画面は工数がこのくらい……とかやるとさ。さも仕事した感じになるけどさ。その作業自体は、画面一つも作ってないし、何も生み出してないんだよね。』
「まぁそう言われると確かにそうですが……」

『それでだよ? そういう風に一つずつ見て、スケジュールをね、デカーいエクセルに入力しきったとするよ。こういう流れでやればこういう時期で終わります。予算はこのくらいですねとかさ。』
「はいはい」
『この作業は、何も生み出してはいないけど、要件をクリアにしていることにはなる。でも、この時点ですべてクリアにするのは長いプロジェクトだと不可能だし、クリアにしたところでその後変化しうる可能性が高いものなんだよ。』
「ほ〜〜」

『それで、そういう風に最初に出した予定が、その通りにいったこと、僕は見たこと無いよ。なにか起こる度にスケジュールをチマチマ変えて…… それって要するに最初にそんな細かい予定や予測を立てること自体が無理なんだよね。』
「んーなるほど……」
『そういうやり方を否定するわけではないよ? でもそれには無駄が多いなって僕は思うわけ。別にクライアントだってきれいなスケジュール表が欲しいわけじゃないと思うしさ。』
「そうかー……。まー分かりますけど、でもスケジュールは必要じゃないですか? いつ公開したいとかあるわけですし。クライアントにはクライアントの事情があると思うんですが。」

『そーだね。だから、僕としては、そんな風にゴールが明確になっているプロジェクトなら、ざっくりとした予定を引いておくべきだと思うかな。初めに。ただ細かくはその時点では見ない。概ねこういう流れで進めましょう。そのためにメンバーは確保するよう予定しますという感じかな。』
「ほ〜〜〜😗」
『それで、見積もれない見積もれないってさっきから言ってるけど、ごく短い期間の内容であればかなりの精度で見積もることが出来るよ。具体的には1週間とか2週間とかの期間なんかでね。そのくらいの間なら、だいたいこのくらいのメンバーが動けば、このくらいは出来るなって分かるじゃない。』
「それは私でも想像できるかも」

『それの繰り返しをする感じの進め方で提案するかな。その短い期間で何か作業するなり進めるなりしたらさ、次にすることがクリアに分かるようになるんだよね。具体的にはさ、1ページ作るのにどのくらい時間がかかるみたいのもさ、ちょっと進めたら分かってくるよね。進むたびに速度も上がってきたりするしさ』
「進んで来ると早く作れるようになってくるってのはありそうですね」
『そうでしょ? そういうのはさ、進めてみないと分からないんだよね。どんな地雷が潜んでるかわかんないじゃない。』
「そうかー」
『だから、大局を見ながら今やるべきことを判断……この短期的な繰り返しを作るという感じかな? それがいいなって僕は思ってる。』
「なるほど……😗」


「でもですよ先輩さん」
『はい』
「なんか大分話が広がってる感じがするんですけど、でもそんなの、やってみないと分からんから、どのくらい予算必要なのかも分からんってさっきから言ってますよね」
『そうね』
「だったら見積もり1,000万とかやっぱり出せなくないですか? だってやってみたら1,500万になるかもってことですよね?」
『そうそう。じゃあまぁ次回はそのあたりを話すっていうことで』
「おお。今回はうどんの話とか無かったですね」

続く



参考

65
32
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
65
32

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?