May 09 22:50~23:59
▲養貓有很多隱藏成本
前一陣子有一位曾經上過「Design Patterns這樣學就會了–入門實作班」的學員問Teddy一個設計的問題,大體就是大客戶提出一個他們之前從來沒有考慮過的新需求,不但和現行的設計完全不相容,而且要求在很短的時間內完成。為了在期限內滿足客戶的要求,團隊討論出一個變通方案(work around),修改原本程式的好幾個地方,加上一些特殊判斷式與邏輯。聽起來雖然不是很好的設計,但時間緊迫,也只能先過了這關再說。
聽完學員對於他們的系統架構描述,細節雖然方面還是不太清楚,但Teddy提了另外一個可以符合「開放封閉原則(open-closed principle)」的設計建議。對方想了一下回應說:「好像也可以這樣做,但我們之前沒往這個方向思考,系統也已經動手改了,只能這次改完之後再看看有沒有機會重構的時候再套用你的建議。」
***
討論結束之後Teddy突然有種感觸,這種感觸以前工作的時候就有,現在又浮上心頭:
- 老闆、專案經理或主管,通常只關心「進度」,而不管實作(此為正常現象),然後隨便訂出一個「反攻大陸時程表」要求團隊使命必達。時程的合理性通常無法質疑,也許存在討價還價的空間,但彈性有限。
- 在進度緊迫之下,人的思考力很可能降低,最後採用看起來比較快,實際上卻沒有比較快,而且會損及系統可修改性與可維護性的方案。
- 最可怕的是,軟體驗收的標準通常只要「看起來可以動就好了」。所以團隊採用的「設計方案」到底是否「合適(fit)」,幾乎無法(無人)評斷。
既然技術上是否採用比較合適的解決方案「外人」看不出來,那除非團隊成員有自謔傾向,否則又何必持續在技術上精進呢?
***
前幾天Erica傳了這篇文章〈Airbnb 組織流程大改版!設計副總:不創造新的方法,就無法創造新的產品〉給Teddy,文內提到:
《The Timeless Way of Building》 的作者 Christopher Alexander 曾經說過,「當語言共享,其中個別的模式就會更精練。」
想必Airbnb的設計副總也讀過《The Timeless Way of Building》。為什麼設計副總要讀建築師所寫的書?為什麼很多軟體大師也讀《The Timeless Way of Building》?假定他們頭殼沒有壞掉,這本書一定有某種「神奇的藥效」以至於吸引眾多大師的目光。讀了之後不會讓你拳拳到肉,也無法讓你具備即戰力,但卻是一窺眾多大師思維共同點的一條途徑。
***
友藏內心獨白:無法變大師但可以讀大師讀的書。
err....文中沒有任何證據顯示Airbnb的設計副總有讀過The Timeless Way of Building這本書,而Teddy的結論是讀過=,Teddy有點太神話那本書了。另外不覺得Airbnb有多厲害,至少今年肯定不怎麼樣,哈
回覆刪除