Nov. 05 20:47~09:53
▲捨去坐好坐滿,得到Eiffel
捨得、捨得,有捨才有得,這句話身為一位工程師應該有非常深刻的體驗。「捨、得」是一種設計的取捨(trade off)訓練,是一種平衡作用力(force)的過程。做得好,設計的產出物就比較能夠適應(fit)於應用情境(context);做得不好,小宇宙的原力就失去平衡,最終導致系統分崩離析。
導入敏捷開發失敗的原因很多,其中一個常見的原因就是「捨不得」:
- 專案經裡內心獨白:以前專案可以壓最後期限(deadline)那是多麼美好的一件事。不管這個deadline有多麼虛幻,至少給我一個很明確且不花腦筋的「壓榨」目標。敏捷開發搞什麼價值驅動(value-driven),這樣子最後期限到了之後可以完成多少功能數量都不固定,我怎麼向長官和客戶交差啊。
- Product Owner:產品品質雖然重要,但花這麼多時間去做自動化測試與持續整合,這樣子開發功能的時間都沒有了啊。我看還是先不管這些,把功能做出來再說。上線之後有時間我們再慢慢還技術債。
- 開發人員:組織跨職能團隊(cross-functional team)雖然立意良好,但這樣子我就沒有時間去偷偷玩自己喜歡的新技術,還要被迫去幫「別人」做我不熟悉的工作。這樣子我的技術能力不是越來越弱?
***
設計取捨的著眼點不是單一作用力(force)或限制因素,而是從系統面來思考(系統性思考),怎麼樣的解決方案可以平衡系統中各種作用力,讓系統達到完整的穩定狀態(全域最佳化)。無法取捨的人通常採取區域最佳化的心態,在自己的舒適圈裡面形成一種很忙、很準、不出錯、效率高的假像。
如下圖所示,溫伯格在《領導者該想什麼(Becoming a Technical Leader)》書中說明能力(成績)提升一個「檔次」之前會有一段平原期,接著如果你可以捨去原本的習慣並學習新的技能,短時間你的成績會下降。一旦熟悉新技能之後,你將會有突破性的成長,來到另一個高峰。這也就是Teddy常常說的「累積層次」的過程。
有些人因為「捨不得」,所以一直停留在平原期。雖然免去了攀登另一個高峰之前墜落谷底的低潮,但也失去了再次成長的機會。
***
友藏內心獨白:人生本來就是起起伏伏啊。
沒有留言:
張貼留言