Slide 1

Slide 1 text

The Clean Coder 預估與壓力 (書摘) 2013/12/12 SJ http://www.amazon.com/The-Clean-Coder-Professional-Programmers/dp/0137081073 Email: [email protected] Blog: http://blog.toright.com

Slide 2

Slide 2 text

預估 (Estimate) 的定義 什麼是「預估」? ● 業務:是承諾! ● 開發者:是猜測! ● SJ:撈錢的籌碼,或是一場鬧劇的開幕典禮

Slide 3

Slide 3 text

該死的承諾與預估 承諾 ● 承諾不能兌現也是一種欺騙 ● 避免對「不確定」的事情進行承諾 預估 ● 沒有承諾色彩 ● 因為不知道要花多少時間,所以叫「預估」

Slide 4

Slide 4 text

該怎麼「預估」? 話說在前頭 ● 墨菲定律 - 凡是可能出錯的事就必定會出錯 ● 除非你已經做過這件事,否則皆無法有效預估時程 預估方法 ● PERT (計畫評審技術) ● Delphi (德爾菲法)

Slide 5

Slide 5 text

PERT (Program Evaluation and Review Technique) 三元分析法 O: 樂觀預估 (Optimistic Estimate) N: 常規預估 (Nominal Estimate) P: 悲觀預估 (Pessimistic Estimate) 期望值 μ = ( O + 4N + P) / 6 機率分佈標準差 σ = ( P - O ) / 6

Slide 6

Slide 6 text

數學時間 這三件任務的預估值:14 天, 17 天 (σ), 20 天 (2σ) 任務 樂觀預估 O 常規預估 N 悲觀預估 P 期望值 μ 標準差 σ Alpha 1 3 12 4.2 1.8 Beta 1 1.5 14 3.5 2.2 Gamma 3 6.25 11 6.5 1.3

Slide 7

Slide 7 text

德爾菲法 ● 先定好規則(乘以二 / 平方) ● 亮手指大家一起參與預估 ● 討論偏離值發生的原因(取得共識) ● 好處是避免別人的預估影響到自己的判斷

Slide 8

Slide 8 text

討論與結論 PERT 法 ● 科學量化,但有工具輔助會更好 德爾菲法 ● 耗時,不容易聚集一群專業人士 大數定理 (切分工作) ● 問題:經驗不夠的我們,如何掌握開發範圍? 關於預估 ● 預估這項工作需要時間與經驗,有效的預估比隨便估好的多

Slide 9

Slide 9 text

殘酷的事實 官:請幫我看一下做這個要多久? Me:大約兩個月可以完成部分比較確定的功能 (回答的相當保守) 官:我們只有兩週,可否用簡單的方法搞定? Me:...(OS:那你幹嘛還問我) Me:好吧,那我們挑些重要的功能來做! 官:這些、這些、還有那些、順便做這個 Me:...(OS:這不就全部了嗎) Me:太多了,我還要進行測試與整合,兩週內絕對無法完成! 官:那麼只做這些、這些、還有那些,這以前做過,直接拿來改應該很快! Me:... Me:... 官:如何? 官:不管品質,先求有再求好! Me:我好像也不能說不好...

Slide 10

Slide 10 text

這故事的結果是...一場災難 ● 開發期間,功能一再增加,品質持續下滑 ● 兩週後,想「求有」的功能,一項也沒出來 ● 兩個月後,一個充滿 Bug 且奇怪的系統誕生了 ● 兩年後,新的工程師加班罵髒話改 Code

Slide 11

Slide 11 text

避免壓力 ● 最有效的方法就是「規避壓力」 ● 別輕易承諾 ○ 避免對沒有把握的事情進行承諾 ○ 主動幫助業務找到方法兌現承諾,但絕不能接受承諾 ● 保持整潔 ○ 「快速但髒亂」是矛盾的說法 ● 危機中的紀律 ○ 足夠的「信念」讓我們遵循紀律

Slide 12

Slide 12 text

應對壓力(逃不了,就面對它!) ● 不要驚慌失措 ● 溝通 ● 依靠你的紀律原則 ● 尋求幫助

Slide 13

Slide 13 text

The End Thanks Email: [email protected] Blog: http://blog.toright.com