這次 Java 2006研討會請來兩位來自Google總部的Java大師Josh Bloch與Neal Gafter 來台灣參加,我和我找來幫我壯膽(從新加坡過來的,英文很好)的同事都獲益良多。在聯絡感情、練英文、以及陪他們在台北吃喝玩樂四天之中,我們聊了不少關 於技術方面的話題。不過我們聊的內容不是在於技術本身怎麼去使用,而是聊一些我們對於這些技術的看法,從他們的見解中,有些跟我心中的想法是一致的,只是 現在有大師背書,更加確認我的想法。這算是英雄所見略同嗎?
其中,我們聊到AOP(Aspect Oriented Programming)。AOP這個概念打從它出生,就有許多人關注和推廣。不可否認的,它確實對於物件導向程式設計(以下簡稱OOP)帶來了許多好處 和影響,可是在實際的程式/系統開發上,使用的人並不多。其實這樣情況是很自然的,OOP的概念也不是從Java之後才有,早在1970年代的 Smalltalk就是一套物件導向的程式語言,只是OOP演化了這麼久,藉著Java才大紅大紫。何故?Java是個好的程式語言,但它並沒有讓OOP 變得多簡單,主要是人們心態和邏輯上的「進化」,當傳統的結構化程式設計(Structured Programming)無法滿足對邏輯的需求時,OOP剛好彌補了SP的不足。雖然OOP的學習曲線頗高,但整個環境大勢已讓大家漸漸地朝這個方向走 了。
Josh和Neal也一致的認為,AOP是不錯,但要發光發熱還需要時間。目前底層的程式設計師,對於OOP都還不能全然的掌握,要他們再去學個AOP,寫出來的程式只會更爛,不會更好。
我們還聊到另一個更新的概念 – DBC (Design By Contract)。事實上原本Java就有DBC裡的interface概念,所以不靠外力的話,Java也可以利用現有的語法來達到DBC的實作。不 過就像之前Java語言本身沒有泛型(Generic)之前,有許多外掛的套件或其它變通的方式來讓Java達成泛型的功能,而iContract就是 DBC for Java的一種實作,有興趣的讀者可以上網搜尋,資料還不少,只是理論方面居多。DBC在學術裡是很受歡迎的,但要走出這個象牙塔,一樣得等待人們進化才 行。
我們這四天也不是全都在聊這種嚴肅的話題。我也基於個人的好奇,而問了他們一些有關程式開發人員最在乎的生涯規劃的問題。
Don't Copy & Paste
很多初學者問我是怎麼學習Java(或是程式設計)的?該怎麼走才能到達我今 天這樣的程度(成就?好像沒什麼特別的成就)?遇到這兩位大師,當然不能免俗的也問了他們類似的問題。網路上最常出現的問題就是:我已經考上SCJP或我 已經會Java基本的語法了,接下來我該怎麼走?
當然我不是問這麼白爛的問題(其實也沒有好到哪去),我問他們該如何提昇自己的實力?「Don't Copy & Paste」, 兩位大師語氣很重地說了這句話。他們說你在Copy & Paste的過程中,因為你不了解你copy的東西,它往往90%都是不必要的,而且以他們的經驗來說,幾乎都會出錯!有重覆性或可reuse的功能,就 把它們設計成library或framework。就算你非copy不可,也要確切知道每一行程式碼在幹什麼,這樣將來出錯時,才知道怎麼找出bug來修 改。相信很多senior再帶junior時,一定都遇到只會copy,而不懂到底copy了什麼的junior;而最後當然是由senior邊收邊唸地 收爛攤子。
此外,至於如何更上一層樓,兩人的回答很一致:「Join Open Source Community」。 Join的方式從單純的review code,到真正的貢獻你所寫的code都算,要join到什麼程式,就看個人的功力囉。就像學習書法或畫畫,剛開始也都是臨摹別人/前人的作品,有了基 礎之後,進而發展出自己的風格。學習程式設計也適用這樣的方式,review code就是這個用意!人家的code不一定寫的好,初學時你可能無法看出不好的地方,或是還沒有能力修改地更好。
Joshua Bloch: Google首席Java架構師(Chief Java Architect)
Neal Gafter:Google專任工程師兼Java講師
兩人在到Google之前都是Sun的資深 工程師,對於Java核心及Class Library的開發與設計著有貢獻,合著《Java Puzzlers》一書。 Bloch並著有暢銷書籍《Effictive Java》。
Community除了code之外,另一個很重要的是mail list或是forum。經由大家腦力激盪,你可以在整個討論的過程式學到很多。除了寫程式功力上的幫助之外,你還可以學會team work、process、version control,而且志同道合的學習伙伴會讓你在學習的過程中更愉快、更有信心。不過大家要join這些open source community第一個要克服的問題,可能是英文,讀好還,因為你可以邊讀邊查字典;寫的話就只能多練習囉。
兩位大師的程式設計生涯已經超過25年,是什麼讓他們能這樣一路堅持下去?他們的回答是:「Passion」,依自己的興趣做自己想做的事,這樣才會持 久。但要怎樣才能讓這股熱情一直持續呢?這就要看你所做的事情,是否能讓你獲得正面的回饋,Josh說,他覺得他能夠寫一本好書,讓大家從這本書中得到很 多的幫助,他認為這樣的成功對他的意義很大,進而更有動力繼續寫出更好的書。(明天待續)
沒有留言:
發佈留言