2023/05/29

0-90法則 ninety-ninety rule

貝爾實驗室 Tom Cargill 提出 90-90 法則,後來因為 Jon Bentley 寫在 ACM 的 programming Pearls 專欄的 Rule of Credibility 文章中而流行。

The first 90 percent of the code accounts for the first 90 percent of the development time. The remaining 10 percent of the code accounts for the other 90 percent of the development time.

開發軟體時,前90%的代碼要花費90%的開發時間,剩餘的10%的代碼要再花費90%的開發時間。

90-90 法則跟侯世達定律 Hofstadter's Law 都是說明同一件事,一個專案,會花上比預期還要多的時間才能完成。

軟體業的本質,其實某個程度來說,不是高科技產業,而像是一種手工業,也就是軟體手工業,因為軟體是程式設計師,用一行一行的程式碼,將程式邏輯組合而成的一種工藝品。這種耗費智力的工藝品,不同於其他工業產品,生產效率跟品質很難被評估,也可以說軟體工程師像是一種智能的純手工工人,要把程式碼一行一行打出來,才能完成作品。

References

90-90法則_百度百科

90-90法則 - MBA智库百科

90-90法則:簡介,軟體項目管理,風險策劃,有關因素,_中文百科全書

2023/05/22

侯世達定律 Hofstadter's Law

Hofstadter 在「哥德爾、艾舍爾、巴赫書:集異璧之大成」這本書中,提到了一條 Hofstadter's Law:做事所花費的時間總是比你預期的要長,即使你的預期中考慮了侯世達定律。

在工作規劃時,總是需要做評估,在軟體工程中,評估卻是最困難的問題,永遠都會估算失準,即使開發過程中,沒有特殊的技術問題,或只是修改已經做過的事情,但還是有可能會有其他人為因素,改變了原本的時程。

這時候就變成另一種做法,在原本樂觀的估算結果後,乘上一定程度的風險值,這些增加出來的時間,就成為 buffer。但這也可能會發生另一種問題,時程只要經過一個人的加總與估算,就會多膨脹一點點,誤差也會變得更大。

如果單純只考慮開發的時程,或許還能接受,時程不準確的問題,但專案總是會有 stakeholders,也有預算成本的問題,牽涉到金錢跟最後交付的時程,還有專案誠品的成熟度,在管理階層、業務單位、客戶之間,這些問題就會不斷地放大,近一步影響到所有人。

即使大家都知道「花費的時間總是比你預期的要長」,身處不同的角色,就有不同的應對方式,也會用各種不同的手段想要達到預期的結果,但最終還是只能讓最底層的開發人員,花上足夠的時間,去完成該做的事情。

References

侯世達定律:做事所花費的時間總是比你預期的要長 - 頭條匯

每個人都應該了解的定律——侯世達定律 - 壹讀

侯世達定律 - 台部落

GitHub - nusr/hacker-laws-zh: 💻📖对开发人员有用的定律、理论、原则和模式。(Laws, Theories, Principles and Patterns that developers will find useful.)

2023/05/15

古德哈特定律 Goodhart's Law

Goodhart's Law 是以 Charles Goodhart 命名的,在 1975 年,由於英國貨幣政策,他提出了:當壓力施加於某個統計指標,進行控制時,將會失去任何觀測得到的統計恆性。

在一個獎懲系統中,為了得到最後的結果,將會作出獲得最多獎勵的行為。也就是在有已知量化標準的表現衡量體系中,員工會嘗試最初獲得最多獎勵的行為,但該行為不一定會實現利潤最大化。

Jón Danı́elsson 用另一句話描述:當用於決策之上,任何的統計關係都會分崩離析。當用於管制之上時,任何的風險模型都會分崩離析。

古德哈特定律:「當一項指標被設定為要達成的目標時,這項指標就無法成為一個好的指標。」"When a measure becomes a target, it ceases to be a good measure.)"

這個規則是在警告,一個量度的評估標準或指標,最後將會被濫用,而失去原本的功能。

如果單以「送貨量」衡量配送員的工作績效,會讓到貨時間縮短,但也可能會發生客戶滿意度下降,或是車禍,配送員代簽等等問題。

為提升治安情況,指標訂立是觀察每月、每年每一個分局的破案率,如分局的破案率不佳,則分局長就調離現職。各分局為追求破案率,就可能會發生吃案的情況。用各種方式引導減少報案數量,自然就能提升破案率。

為提升客服人員效率,薪資由固定制改為績效制,以接電話處理案件的數量作為發新標準。客服人員會為了績效,對客戶更不耐煩,或是快速地掛斷電話,雖然案件處理量增加,但服務品質卻下降了。

量化的量測指標是不可避免的,以科學的角度來看,事件需要客觀的量測指標,才能依照這個標準,得到真正的事件發生指數。像新冠肺炎,統一以 CT 值,來作為傳染力(確診)的標準,但在精確度要求不高的情況下,一般以快篩作為量測的標準。不同的量測方式,因為誤差出錯的比例也不同。

Goodhart's Law 在討論的就是量測指標,跟最後的誤差結果。每一種量測指標,會有不同的誤差,在牽涉的量測人類的行為標準上,誤差不同於科學量測的誤差不大會改變,會因為人類的行為改變,而讓原本的量測標準誤差改變而失準。

解決的方式,就是不要使用單一量測指標,要採用多重指標。在多重觀測指標的交互影響下,讓偏差值降到最低。

References

古德哈特定律 - MBA智库百科

單一指標對決策的影響-淺談 古德哈特定律 - Growing Thinker 警惕网络安全的“古德哈特定律” - 安全内参 | 决策者的网络安全知识库

古德哈特定律 - 維基百科,自由的百科全書