SlideShare a Scribd company logo
1 of 22
正しい見積り
できるけど間違う
2020年2月22日
桶作 昌貴
正しい見積りとは
• たぶん1 機能仕様書を書く、みんなで考える
• たぶん2 真摯に対応する
• たぶん3 生産性を上げる、楽しむ
機能仕様を詳細にしないと
誤差が大きい、間違える
"詳細な仕様書がないと、スケジュールが立てられないということ
だ。" - Joel on Software, ジョエル・スポルスキ
• 誰が(Who)、何を得たいか:効能(What)、それはなぜか(Why)
- ユーザストーリとして最低限の情報を揃える
• どのようなデータを得て、どう加工するか(How)
• 関連する機能、データ、モジュールはどのぐらいあるか
機能仕様書を書き、プログラムをデザインする。
→それって機能仕様書に書くべきではない?基本設計?詳細設計?
機能仕様どこまで細かく書くか
• 機能仕様書にも具体的・詳細なデータは必要。
→ 要求を満たしているかテスト可能にするため。
• アーキテクチャを end to end で貫くシナリオが必要。
アプリケーションの中核を成すフローが必要。
→ コードへのトレーサビリティを確保する。
• 関心事を絞り、詳細(Why/How)に立ち入りすぎないのは重要。
だがテクニカルノートやマーケティング情報なども記載する。
• 要求、仕様変更で変化しやすい処理と
変化しにくい処理を整理するのが基本設計・詳細設計
=開発の初期段階で決めつけすぎない。それ以外はなんでも書いていい。
※といっても私自身、完璧にうまくいった経験はない……。
時間を書けた割には読み返されない、
重要な情報がコードにしか残っていないドキュメントばかり……。
理解しづらい、誤解しやすい、何度も議題になるところに注力
30KLOC以上 or
変化の少ない領域で有効な投資
最低限
必要な投資
要求・機能・実装
どれも完璧にはならない
実装 How要求 Why
機能・要件 What
品質特性=非機能要件
コミットコメント
ユーザーストーリー
UML(usecase/activity)
UML
(class/
sequence)
チケット
要求仕様書(USDM/トレーサビリティマトリクス)
ソースコード(必須かつ最新)
スペックアウト、抽象化、汎化
コードと設計の損益分岐点
https://www.slideshare.net/kawasima/yagni
• アーキテクチャとリスク軽減に投資すると、やり直し工数が減る。
• やればやるほど減るわけではないのでスイートスポットがある。
10Kloc - 100Kloc で 5-20%
100Kloc - 10000K で 20% -40%
• すべてのスケジュールに追加される時間の割合
• 初期アーキテクチャとリスク解決に専念する
• 予定スケジュールの割合
• 手直しのために追加されたスケジュールを追加
• スケジュールに追加された合計%
機能仕様が書けたら
• チームで読み合わせをしてみよう
複数人で読むほうが読みやすくなる、誤解が減る。
※一人が書くほうが一貫性が取れる面はある。
• チームで見積ろう
他の人の意見も取り入れながら相対的に見積れる。
担当者が見積るほうが正確な場合もあるが、客観的
な補正が入る。
タスクを詳細にする
あらゆる作業を洗い出す
Just In Timeで作業する
• タスクの粒度を細かくする。
1/3/5人日ぐらい?もっと細かく4/8/16人時間?
タスクを具体的にして始めやすくする。
プロジェクトのゴールを抽象的に捉えて継続する。
• スケジュールに統合のための時間、デバッグの時間、
リファクタリング、ドキュメント整備時間を入れる。
統合までの期間が空くとデバッグに必要な時間は増える。
意思決定の背景や、有益なノウハウは期間をあけずに蓄積する。
• 休暇や祝日、問い合わせ、割り込み作業の見積もり依頼など、
その他のバッファを入れる。
複数のタスクを抱えていると、コンテキストスイッチに時間がか
かる。
正しい見積りとは
• たぶん1 機能仕様書を書く、みんなで考える
• たぶん2 真摯に対応する
• たぶん3 生産性を上げる、楽しむ
真摯に対応する
• 深夜残業
• 休日出勤
• 247++?
時間をかければ、人がたくさんいれば、
資金がたくさんあれば、才能があれば、
経験を積んでいれば、……、どうにでもなる。
どれも限りがあるのが人生。
やり遂げられなきゃ真摯じゃない?
そうじゃない!!
約束を果たすために!
"残業でうまくいくこともある。時には残業も必要だろう。だが、それは非常に危険
だ。“
"週末に対応するというのは簡単だが、高い品質を維持するエネルギーをかき集める
のは難しい。" "問題が解決するまで家には帰れないのだろうか?もちろん、帰って
もいい。むしろ帰るべきだ!創造性や知性は、はかない。疲れたらどこかへ消えて
しまう。 “
"ステークホルダーに連絡すれば、中止・行動の見直し・意思決定(優先順位の変更
など)について考える時間が生まれる。それによって、約束が果たされることにな
る。あるいは、別の約束ができるようになる。""最悪なのは、ずっと間に合うといい
続け、最後になってみんなの期待を裏切ることだ。"
- Clean Coder プロフェッショナルプログラマへの道, ロバート・マーチン
弱音をはきたくない。夜中も休日もバリバリやりたい。使えないやつと思われたく
ない。
でも現実は厳しい。どうにもならない。ちゃんと説明する、周知する。助けを求め
計画と実績を比較して見直す
実力をごまかさない
• 計画と実際の進捗率と比較する。
• チームの実力を知る。補正する。
相対的な見積りで誤差は減らせる。
絶対的な見積りの誤差はなくならない。間違える。
最早終了日・通常の終了日・最遅終了日で見積もる。
見積りに願望を含めてはいけない!毎日更新する。
反論もあるかとは思いますが……。
• 「社員に危機感がない」と嘆く経営者ほど会社を悪循環に陥らせる
https://diamond.jp/articles/-/217997
危機感を煽って人の時間をカツアゲしようとしてません?
他にも共有すべきことがあるんじゃないですか?
• 営業はなぜ「お任せください」と約束してしまうのか
https://www.atmarkit.co.jp/ait/articles/1910/28/news013_3.html
“プロジェクトの実情を話したところで、自分たちにメリットはない。
顧客は何もしてくれないばかりか、不安な顔で文句を言うか怒鳴るばか
り。
説明したり、それ用の資料を作ったりする工数だって惜しい。
残業でも何でもして頑張って、顧客には気付かれないうちに何とか収め
たい。“
めんどくさいのいやですよね。でもそうしてるうちにどうしようもなら
ないような大事になったりしません?
相談したほうが信頼されるってこともありますよ。
• とりあえずそのまま頑張る 本当に大丈夫?
• 人を追加する 人の追加は生産性を下げることがある。
• 納期を延長する それでも足りず、さらにずるずる行くこともある。
• 技術的負債の融資を受けることで、できることもある。
負債が大きくなると多くの利息を払い続けることになる。
動作する、きれいなコードは動作すること優先。
だがきれいなコード・アーキテクチャをおろそかにしない。
自分のため、顧客のために技術的負債を減らす。新しいツールに投資する。
• 機能をあきらめる。優先度を変える
パーレートの法則:要件の80%は必要条件でもなければ必須のものでもない。
やれることをやらない。YAGNI
価値が大きく 早くできるものから完了させる。
アイゼンハワーマトリクス(重要だが緊急ではないもの)
• 使われない機能、読む価値のないドキュメント、動いて当然のテストに時間をか
けない
→不良在庫になる
対策:たぶん機能削減が一番有効
機能を削る。詰め込みすぎない
"やるべき事はいつだって、与えられた時間と資金よりも多い。"
"顧客には、やらなきゃいけない楽しくない仕事が一つある。(中略)
何を作らないかを決めるのは顧客の仕事だ。“
アジャイルサムライ−達人開発者への道, ジョナサン・ラスマセン
64%の機能がほとんど、あるいは全く使われていないことをご存知だろうか。
• 全く使われない 45%
• ほとんど使われない 19%
• たまに使う 16%
• よく使う 13%
• いつも使う 7%
• Standish group study report in 2000 chaos report
https://www.slideshare.net/hiranabe/how-scrum-boosts-your-innovation-in-japan 9ページ
期待するのは簡単
でも本当にやりたいこと、やるべきこ
とはなにか。後悔しないためには?
その機能はどこ?
そのスキルは?
いつほしい?
いつできる?
見積日=締切?
どの円にも入らない?
やるべきことをやらなかったより
やりたいことをやらなかった後悔が多くなりがち。
Will
したい
好き
対価を得る
儲かる
Must、必要
使ってもらえる
期待される
Can
実装できる
正しい見積りとは
• たぶん1 機能仕様書を書く、みんなで考える
• たぶん2 真摯に対応する
• たぶん3 生産性を上げる、楽しむ
背伸び目標が生産性を上げる
上げすぎには注意だけど、
あらがわないと成長しない
• 目標設定理論の科学的研究は1960年代に心理学者のエド
ウィン・ロックが体系化するなど歴史は古く、高い目標
を掲げると、個人や組織のパフォーマンスが高くなるこ
とが知られています。
• ただ、高ければ高いほど良いというものではなく、一定
レベルを超える「高すぎる目標」を設定した途端に、結
果が悪くなることもいろいろな実験で再現されています
。
• OKR運用失敗の3つの理由―、なぜ高すぎる目標が逆効
果になるのか
https://coralcap.co/2019/11/three-reasons-okrs-backfire/
楽しむ、情熱を取り戻す
“週に60時間働く計画を立てよう。40時間は雇用主のため、残りの20時間は
自分のためだ。その20時間を読書・練習・学習などに使い自分のキャリアを
強化するのだ。20時間でその情熱を取り戻すんだ。20時間を楽しむんだ!一
週間は168時間だ。睡眠に56時間を使うとして残りの52時間は自由に使え
る。”
- Clean Coder プロフェッショナルプログラマへの道, ロバート・マーチン
実際にやってみるとちょっときつい。
食事・入浴・歯磨き身支度などで3時間x7日=21時間かかると31時間の余
暇。休日2日x8時間、平日5日x3時間の余暇で掃除、洗濯、買物、通勤……。
でもできると、わかると、役に立つと楽しい。
お金は 消費70%:浪費5%:投資25%
時間はどう配分すべき?
• Google 20%ルールは目標がないときの遺物
https://wired.jp/2013/08/20/googles-20-percent-time-is-as-good-as-dead-because-it-doesnt-need-it-
anymore/
株主が採算度外視の投資を見逃すわけがない。
業務時間に20%も自由に使っていいというのは幻想?
したたかに、自分のために使う?
• プライベートな時間はどう使う?
• 消費、投資が浪費に終わっていないか。
ちなみに5% 25%って何時間?
10 0 % 8 7 % 2 0 % 13 % 10 % 5 %
1日 7 .5 0 0 6 .5 0 0 1.5 0 0 1.0 0 0 0 .7 5 0 0 .3 7 5 ←2 2 .5 分
1週間(5 営業日) 3 7 .5 0 0 3 2 .5 0 0 7 .5 0 0 5 .0 0 0 3 .7 5 0 1.8 7 5 ←1時間5 2 .5 分
1ヶ月(2 0 営業日) 15 0 .0 0 0 13 0 .0 0 0 3 0 .0 0 0 2 0 .0 0 0 15 .0 0 0 7 .5 0 0
↑約17 .3 日 ↑4 営業日 ↑2 営業日 ↑1営業日
※1日休むと1ヶ月あたり5 % の生産が失われる。
※7 .5 時間の残業で5 % 生産が向上する。
• 7.5時間勤務なら0.375/1.875時間
• 一週間5営業日中1.875時間/1営業日+1.875時間
• 20営業日なら1営業日/5営業日
1、2日分ぐらいは残業したり体調悪くて休んだりするから
10%ぐらいはなんとかなるんじゃない?
歴史、哲学、科学、工学、アート
面白かったらそれだけで十分
(もしかしたら世の中のためになる日が来るかも)
• “僕はよく「仕事に役立つ本を5冊紹介してください」などと聞かれるの
ですが、いつも「それは人生をナメていることですよ。本を5冊読んだ
くらいで仕事ができるようになるんやったら、人生チョロいでしょう」”
- 出口治明APU(立命館アジア太平洋大学)学長
https://honz.jp/articles/-/45406?page=2
• どんな技術/知識も栄枯盛衰。
• 歴史の専門家といえども、全世界、全時代の歴史を事細かに語れるわけ
ではない。自分の家族の歴史なら自分のほうが詳しいはず。
• 学ぶことは無限にある。 締切まで楽しもう。

More Related Content

Similar to 正しい見積り

第11回SIA例会プレゼン資料
第11回SIA例会プレゼン資料第11回SIA例会プレゼン資料
第11回SIA例会プレゼン資料
Tae Yoshida
 
テキストマイニングのイメージと実際
テキストマイニングのイメージと実際テキストマイニングのイメージと実際
テキストマイニングのイメージと実際
antibayesian 俺がS式だ
 
Xpfp 070626
Xpfp 070626Xpfp 070626
Xpfp 070626
takepu
 
Intalio japan special cloud workshop
Intalio japan special cloud workshopIntalio japan special cloud workshop
Intalio japan special cloud workshop
Daisuke Sugai
 
プログラマが欲しい仕様書とは
プログラマが欲しい仕様書とはプログラマが欲しい仕様書とは
プログラマが欲しい仕様書とは
Katsutoshi Makino
 
はじパタ2章
はじパタ2章はじパタ2章
はじパタ2章
tetsuro ito
 

Similar to 正しい見積り (20)

【アイディア止まり】Ozobotでデータサイエンス~天気予報ロボットを作ろう~
【アイディア止まり】Ozobotでデータサイエンス~天気予報ロボットを作ろう~【アイディア止まり】Ozobotでデータサイエンス~天気予報ロボットを作ろう~
【アイディア止まり】Ozobotでデータサイエンス~天気予報ロボットを作ろう~
 
第11回SIA例会プレゼン資料
第11回SIA例会プレゼン資料第11回SIA例会プレゼン資料
第11回SIA例会プレゼン資料
 
テキストマイニングのイメージと実際
テキストマイニングのイメージと実際テキストマイニングのイメージと実際
テキストマイニングのイメージと実際
 
既存分析ソフトへ
データを投入する前に
簡便な分析するためのソフトの作り方の提案
既存分析ソフトへ
データを投入する前に
簡便な分析するためのソフトの作り方の提案既存分析ソフトへ
データを投入する前に
簡便な分析するためのソフトの作り方の提案
既存分析ソフトへ
データを投入する前に
簡便な分析するためのソフトの作り方の提案
 
楽天エンジニアライフ
楽天エンジニアライフ楽天エンジニアライフ
楽天エンジニアライフ
 
詳細設計とアプリケーション開発工程
詳細設計とアプリケーション開発工程詳細設計とアプリケーション開発工程
詳細設計とアプリケーション開発工程
 
Xpfp 070626
Xpfp 070626Xpfp 070626
Xpfp 070626
 
Intalio japan special cloud workshop
Intalio japan special cloud workshopIntalio japan special cloud workshop
Intalio japan special cloud workshop
 
プログラマが欲しい仕様書とは
プログラマが欲しい仕様書とはプログラマが欲しい仕様書とは
プログラマが欲しい仕様書とは
 
カスタマーサクセスのためのデータ整備人の活動記録
カスタマーサクセスのためのデータ整備人の活動記録カスタマーサクセスのためのデータ整備人の活動記録
カスタマーサクセスのためのデータ整備人の活動記録
 
Power BI チュートリアル 導入・初級編
Power BI チュートリアル 導入・初級編Power BI チュートリアル 導入・初級編
Power BI チュートリアル 導入・初級編
 
About Beat Communication
About Beat CommunicationAbout Beat Communication
About Beat Communication
 
広告ログの解析システム
広告ログの解析システム広告ログの解析システム
広告ログの解析システム
 
[Okta x Jamf合同新年会] Okta Workflowsによるノーコード業務改善 〜Jamf APIを使ってMac端末情報を自動収集してみよう〜
[Okta x Jamf合同新年会] Okta Workflowsによるノーコード業務改善 〜Jamf APIを使ってMac端末情報を自動収集してみよう〜[Okta x Jamf合同新年会] Okta Workflowsによるノーコード業務改善 〜Jamf APIを使ってMac端末情報を自動収集してみよう〜
[Okta x Jamf合同新年会] Okta Workflowsによるノーコード業務改善 〜Jamf APIを使ってMac端末情報を自動収集してみよう〜
 
【de:code 2020】 ハンズオンで学ぶ AI ~ Bot Framework Composer + QnA Maker / Custom Visi...
【de:code 2020】 ハンズオンで学ぶ AI ~ Bot Framework Composer + QnA Maker / Custom Visi...【de:code 2020】 ハンズオンで学ぶ AI ~ Bot Framework Composer + QnA Maker / Custom Visi...
【de:code 2020】 ハンズオンで学ぶ AI ~ Bot Framework Composer + QnA Maker / Custom Visi...
 
実演・開発の進め方
実演・開発の進め方実演・開発の進め方
実演・開発の進め方
 
はじパタ2章
はじパタ2章はじパタ2章
はじパタ2章
 
Glue DataBrewでデータをクリーニング、加工してみよう
Glue DataBrewでデータをクリーニング、加工してみようGlue DataBrewでデータをクリーニング、加工してみよう
Glue DataBrewでデータをクリーニング、加工してみよう
 
私とインクス
私とインクス私とインクス
私とインクス
 
ソフトウェア開発の現場風景
ソフトウェア開発の現場風景ソフトウェア開発の現場風景
ソフトウェア開発の現場風景
 

正しい見積り