軟體工程的 GPS
在 Taiwan.CNet 上看到喲哪桑寫的《GPS與軟體流程》,我想到了軟體工程中確實存在著類似 GPS 的智能代理者 (Intelligent Agents) 。
我去年參加了 2006 IBM 開發者大會 (2006 IBM developerWorks live) ,其中一個很重要的議程與軟體開發工程有關,該議程中介紹了由 RUP 提出者之一的 Dr. Jacobson 所提出的新一代的軟體開發流程: Essential Unified Process (Ess-UP) 。我在《軟體工程三大陣營, RUP, CMMI, Agile Method》提到了一些內容。在介紹 Ess-UP 時,主講人提到 Agile method 中的 pair programming 概念在軟體開發流程中相當重要。他指出在 pair programming 過程中,資深者可隨時指引設計者實踐某些功能的最佳途徑;當設計者用錯方法、走錯路時,也可以適時修正。整個開發過程可以少走很多冤枉路。主講人進一步指出 Ess-UP 將此一概念納入後,提出智能代理者 (Intelligent Agents) 概念,也有相關的實作品,即 WayPointer 。 WayPointer 中建置了許多軟體設計過程中常見的 Design Patterns 、規則與重複性程序,可幫助設計者分析需求並提供可行的實踐途徑。
然而有了 WayPointer 之後,我們就不再需要 pair programming ,甚至不再需要資深 programmer 了嗎?我想不儘然,就像喲哪桑在使用汽車 GPS 時,有時還是要問問鄰居、計程車司機有沒有什麼路好走。有許多特殊案例、情境,仍然需要依靠經驗發明新的解法方法。智能代理者所能提供的只是經驗者所歸納整理出的通則,在通則的建置過程中,仍然有許多微妙的思考過程與實踐經驗無法表達出來。經驗沒有捷徑,有些事是替代不來的。附帶一提,我個人覺得使用智能代理者之後,對程序員最大的損失就是少了許多設計的樂趣 ,包括嘗試錯誤樂趣。我想軟體設計是種「技藝」,不僅是一門技術,也是一門藝術。在吃飽喝足以外的時間中,我們更需要可以表現自我的樂趣,否則人生未免乏味無趣。
樂多舊回應