讀到每个程序员都该知道的五大定理(5 laws every developer should know),感覺這些可以應用在系統設計上的定律,應用在社會和人生上也没有違和感。
文中提到的五個定律分别是
- 墨菲定律 Murphy’s law
- 高德納定律 Knuth’s law
- 諾斯定律 North’s law
- 康威定律 Conway’s law
- 帕金森瑣事定律 Parkinson’s law of triviality
1. 【墨菲定律 Murphy’s law】
“只要有可能出錯,就一定會出錯。”
“Anything that can go wrong will go wrong.”
如果殺人祭天有用,就殺吧。但如果換另一個人還是有可能出錯,這時獵女巫是没有用的,系統性問題要用備源、防呆、容錯、再確認等等機制處理。
2. 【高德納定律 Knuth’s law】
“在時機未到時優化是萬惡之源。”
“Premature optimization is the root of all evil.”
浪費就是罪惡,根據 TOC 限制理論,任何時後都只會有一個瓶頸在限制組織或個人的成長,所以只要專注於找出目前的瓶頸,和改善瓶頸的産能就够了。不需要在非瓶頸的地方投入資源改善,因為對整體産出價值不但没有幫助,還浪費了投入的時間和心力。
舉例:8張圖帶你看高鐵三新站中,為何彰化站人潮比雲林和苗栗站少
3. 【諾斯定律 North’s law】
“每一個決定都是一次取捨。”
“Every decision is a trade off.”
天底下没有白吃的午餐,任何事情都有好有壞,想要獲得就要有所犠牲,不論是系統設計或人生,都是如此。
4. 【康威定律 Conway’s law】
“一個組織的系統設計,會反映出組織本身的溝通結構。”
“Organizations which design systems … are constrained to produce designs which are copies of the communication structures of these organizations.”
白話的說,從産品和服務呈現的狀態,可以推測出一個公司内部的溝通情况,甚至是組織架構。所以改變組織架構或增加溝通渠道,都可以改變産品或服務的走向。而從政府提供的服務只要是跨部門就會有斷層,也可以判斷出政府溝通是缺乏横向鏈結的,甚至在組織架構的設計思維就是刻意讓部門互相制衡。
5. 【帕金森瑣事定律 Parkinson’s law of triviality】
“組織成員會投入不成比例的心力在瑣事上。”
“Members of an organisation give disproportionate weight to trivial issues.”
做瑣事簡單又容易看到效果,還可以讓自己看起來很忙。反而重大的事情,要做好需投入很多時間心力醞釀研究和凖備,還要忍受過程中看不到立即成效的失落感。80/20 法則說明了,只要專注於百分之二十能帶來最大價值的工作,選擇戰場不做低價值的工作。