l

2015年1月8日 星期四

打問號

Jan. 07 11:27~12:30

螢幕截圖 2015-01-07 12.36.39

 

很多人都喜歡玩「打地鼠」的遊戲,拿著槌子把冒出頭的地鼠打回地洞裡面,有一種莫名的成就感。前陣子和朋友聊起敏捷開發,Teddy告訴朋友…

Teddy:軟體開發是否掛上敏捷這兩個字並不是重點,我覺得軟體開發是一連串「打消腦中問號」的學習過程,只不過敏捷開發這把槌子目前用的人比較多、比較流行,但你可以選用任何你認為合適的槌子來打破問號。一個團隊的軟體開發能力和團隊成員腦中問號的總和(的平方?)成反比,腦中問號越少開發能力越強。

朋友:這什麼亂七八糟的歪理挑眉質疑

***

以前年輕的時候不知道軟體開發這頭大象長成什麼樣子,於是到處「求神拜佛」找解藥。後來接觸了design patterns、RUP(Rational Unified Process)、OOAD、software testing、software architecture、Design by Contract、pattern languages以及XP的許多實務做法(XP practices,包含pair programming、unit testing、refactoring、continuous integration、shared code等),覺得心中的問號消除了不少。但知識的追求就和打地鼠一樣,這邊才剛打完一隻立刻又從其他地洞冒出更多地鼠出來。傳統軟體工程的知識,到了敏捷開發的世界,又變了個樣子,腦中的問號好像一種無性生殖的生物,不斷繁衍。才剛把XP娶進家們,又冒出一個Scrum。好不容易和Scrum「深入交往」,又跑出Kanban這個「小四」,更不用說一堆Lean開頭的東西(Lean Startups、Lean Software Development、Lean Mindset、Lean Production)以及DevOps,都不知道要排到什麼順位了。

除了不同的敏捷開發方法以外,開發的實質內容也發生改變,從傳統的OOAD方法,演變成DDD、BDD、TDD(請參考〈敏捷開發與OOAD(上)〉與〈敏捷開發與OOAD(下)〉)。這些改變又繁衍出許多有待一一擊破的問號。

這樣就沒了嗎?當然不是,還有這幾年因為functional programming流行所引發的另一種程式撰寫模式,以及將傳統程序/物件導向程式改寫成functional programming的重構(refactoring)方法。

往軟體開發的「上游」走過去,會發現design thinking、Agile UX、Lean UX、UX for Lean Startups、agile software requirements這一堆傳統上軟體開發人員比較少接觸的科目。

要打消的問號太多族繁不及備載,最後提一個很重要但是經常被忽略的議題,就是例外處理設計這個軟體開發的黑暗面。雖然這個領域是Teddy的法定專長,但是因為程式語言與計算模式不斷地翻新,例外處理設計的方法也要隨之演進。

***

專業人士與嘴砲的差別,就是前者會打破問號,後者會用泡泡把問號包起來,或是用易容術把問號變成句號。要選擇哪一種方式,就交由鄉民們自行判斷。

***

友藏內心獨白:每個人的心中,都有一座問號山。

沒有留言:

張貼留言