Teddy 當年還在唸書的時候,雖然主要的研究題目從 e-learning pattern languages (不要問這是什麼....)--> design by contract --> exception handling ,但是在這個過程中,Teddy 不小心接觸到到 Eclipse 與 continuous integration 這兩個領域,又不小心和好幾屆的學弟妹們,在 Eclipse 上面開發了好幾個 plug-ins 以及一個原本叫做 JCIS (Java Continuous Integration System)的持續整合工具(最近改名叫做 ezIntegrate)。
剛開始有些學生會覺的,念研究所『只是』開發工具而不是做什麼『艱深的研究』,好像有點遜掉了。此時 Teddy 博學的指導教授講了一個激勵人心的故事:
在遠古部落時代,人類社會中有三種重要的角色:
- 巫師(shaman or wizard):在科學還不發達的時代,巫師的身份絕對是在部落中排名第一的『大當家』(酋長除外)。巫師可以卜卦,算命,治病,功能無可取代。
- 護火者(Firekeeper): 人類懂得用火之後,生活型態因此改變,例如吃熟食,夜晚可以行動。此外,火還可以用來取暖與防止野獸接近,也可以作為攻擊武器,用途多多。因此,在部落中 firekeeper 的重要性使其成為『二當家』。
- 工具製造者(Toolmaker):人類開始製造工具之後,漸漸拉大了人類與野獸間的差距。赤手空拳打不贏老虎(PS:又不是每一個人都是武松),沒關係,找 toolmaker 做一把箭遠遠地射死你。要喝水,住在河邊又不安全,怎麼辦?沒關係,
爸爸買給你找 toolmaker 做一個陶罐拿來裝水。Toolmaker 的重要性使其成為『三當家』。
***
關於上面這個故事 Teddy 不知道學弟妹們聽進去了多少,不過 Teddy 倒是獲益不少。為了在 Eclipse 上開發 plug-ins,Teddy 學了許多 Eclipse plug-ins architecture 與 patterns(請參考 Contributing to eclipse: Principles, Patterns, and Plug-Ins),有沒有用?非常有用,了解了 Eclipse 的設計之後,嘿..嘿..嘿...興之所至,要當『海盜』也好,要當『山寨』也罷,誰也攔不了你 (Teddy 內心獨白:別人的設計,就是最好的設計)。
另外,為了開發這個 JCIS,Teddy 從原本完全不知道什麼是『持續整合』,慢慢也變成了半個持續整合專家了(雖然 Teddy 還是沒寫過什麼偉大的 ant scripts... XD)。有沒有用?非常有用。
對於做軟體的人來講,有機會『開發支援軟體開發的工具』(有點繞口),是一個了解『軟體開發領域(software development domain)』的好機會。你可能在修『軟體工程』課程的時候學到很多軟體開發領域的知識,但是課程時間有限,為了涵蓋廣度難免就犧牲了深度,而且學生通常『忘性比記性好』,上完課之後很快就忘記了。如果是需要開發支援軟體開發的工具那就不同喔,就和一般的軟體專案一樣,非得從『需求分析』開始做起。等軟體開發出來了,就應該要成為那個領域的 domain expert。念個碩士班如果能夠成為某個領域的專家也算是 C/P 值很高的投資了。
***
友藏內心獨白:講是這樣講,不過自己人開發出來的工具送給你用你敢用嗎...XD
沒有留言:
張貼留言