未來的Java開發者
這是較早前發表于java.net上的一篇博文,它討論了軟件開發者們,特別是Java開發者們,具有哪些優勢,現在應該為未來作哪些準備工作,希望對所有軟件開發者們能有所提示。(2011.03.13最后更新)Fabiane Nardon,Duke Award獲得者與Java Champion,Sven Reimers,Duke Award獲得者與NetBeans夢之隊成員,和我一起討論了未來的Java開發者,我已經發表了這些談話。最近的談話是在JavaOne Brasil和 軟件開發者一直都有一個獨一無二的機會,這就是Malcolm Gladwell在他的書Outliers中所說的有意義的工作:工作是自我管理的。工作是復雜的,它會占據你的思想。另外,工作是努力與回報之間的聯系--付出了,自然有回報。
Gladwell所說的關于"有意義的工作"的一個要點就是花時間使某人成為大師。他表述道,根據對不同領域--音樂,計算機,法律,農業--的研究,要在特定領域取得成功,差不多要花10000個小時在做有意義的工作上。Gladwell表示道,那些成功投入大量時間的人,以及那些成功的人,肯定都會投入大量的時間。Gladwell也討論到并沒有所謂的"天生"牛人,簡言之,傳統諺語"1%的靈感和99%的努力"不僅是真理,而且也是必然的。
為未來做準備意味著,現在投入足夠多的時間會使你在未來成為更優秀和更重要的人。基于這種思維,軟件開發給予我們一些有趣的好處,由于缺少更好的詞匯,我將其稱之為自由。一些是舊有的自由,在軟件剛開始開發時就存在了,另一些則是新近才出現的,幸運地是,我們恰逢其時,正好能從中受益。
想像之自由

隨處運行之自由
Java并不是第一個提出了"隨處運行"的思想,卻是第一個普及了該思想的技術。這并不是一個僅有利于Java的技術:自從在二十世紀九十業界將開發者從禁錮中解放出來,開發者認識到他們能夠編寫運行在多個環境上的軟件。今天,所有的開發技術會以這樣或那樣的方式嘗試著向你提供這種自由。當然,也許不是全部...但不應該是我們"不知道"的:不要把你自己綁定在單個技術提供者或平臺上。挑選那些使你有充足機會在多個環境上進行實驗的技術,這是使你在現在就能自由地對在未來可能有價值的技術進行實驗的唯一方法。Java并不是第一個提出了"隨處運行"的思想,卻是第一個普及了該思想的技術。這并不是一個僅有利于Java的技術:自從在二十世紀九十業界將開發者從禁錮中解放出來,開發者認識到他們能夠編寫運行在多個環境上的軟件。今天,所有的開發技術會以這樣或那樣的方式嘗試著向你提供這種自由。當然,也許不是全部...但不應該是我們"不知道"的:不要把你自己綁定在單個技術提供者或平臺上。挑選那些使你有充足機會在多個環境上進行實驗的技術,這是使你在現在就能自由地對在未來可能有價值的技術進行實驗的唯一方法。
隨處運行還有另一個同樣重要的方面:一旦有許多程序能夠在不同的設備上運行,制造商就能更容易地創建新設備。我們在Android中看到了這種趨勢:通過放大開發者的才智和工具,并允許(至少是在一定程度上)開發者作用于不同的設備,Android創建了一個強大的且有眾多提供商參與的應用程序市場。使用大多數面向多平臺的開發技術,未來將會帶來更多的設備,機會將會為那些執著于隨處運行之自由的開發者敞開。
學習與構建之自由

對于公司,政府和用戶而言,開源還是許多其它的好處。但沒有人比開發者們受益更多。越快認識到這一點,你就能越快地知道自由地進行學習和創造的價值。
隨處(與任何人一塊兒)工作之自由

來自硬件的自由
最近有一些關于3D打印的議論,討論該項技術將怎樣把制造過程轉換到頭腦中。想像一下,當你要制造什么時,你無需操心建立一個工廠來制造這東西,你所需要的只是你的主意和設計能力。是不是很奇妙?肯定是了。但如果你是一名軟件開發員,這一想法現在就能成真。如果你有任何想法,你不必購買/訂購/安裝/構建一個數據中心:你已擁有所需要全部設備,5分鐘就能搞定。大量的云服務提供商在幕后做著這些工作,你所要的只是一個好主意和代碼。噢,還記得先前我們提到的多平臺技術嗎?是的,在云計算里它也是有效的:確保你不會上某人的當,所以要明智地選擇與它打交道的方法。當然,沒有這個問題也還有其它很多問題。測試,實現,發展甚至于拋棄你的想法的自由已經正在改變著軟件開發。如果你認為云計算與以前那種在某處使用一臺服務器進行同地協作的東西一樣的話,那你就應該馬上去使用它。把你的思想從硬件約束中解放出來,這需要花時間,所以現在就開始吧。
你自己的自由...
如你所見,現在這些可能都成為了現實。但就現實來看,對大多數開發者來說,這些可能性并不能在指日間就成真的。但它可以是你自己的。那么,未來是什么呢?未來使越來越多的開發者們從這些自由中受益,意味著更多的想法能夠見到天日,能夠學習和創建更多的開源軟件,有更多的設備和供應商運行開發出來的程序,更多來自于不同地方的人在一起工作。
是的,這也意味著更多的挑戰:我們需要更多的程序能并行地運行在一個平臺上。如前所示,我們會從多核設備中受益。我們的框架需要支持云計算環境。還有,這些新的語言將表現得比今天已有的語言更好,我們也將從中受益。而且,將會有新的框架和抽象能使我們在這樣的環境中提高生產率。這些已不是新聞了:這是發展中的世界。記住,軟件開發是復雜的,無論應用提供商們怎樣試圖去擺弄它,軟件開發都不可能變得更為簡單。
有大量來自于發展中國家,像BRIC(巴西,俄羅斯,印度,中國),的開發者,因為有開源軟件,他們會學到很多東西;因為有云計算,他們會有更多的機會;因為有遠程工作,他們會有更多的工作。軟件開發將會更有包容性,因為那些自由性會給予更多開發者以機會讓他們能在這方面花費更多的時間,并溶入其中。更多的開發者意味著更多的想法,更多的設備,更多的框架,更多的語言,更多的社區,以及更多的開源軟件。軟件開發是工程學與藝術的混合體,有更多的藝術家只會是好事兒!
所以,簡言之:為了能在未來生存下去:學著在云環境中部署應用,這會使你獨立于特定的供應商和平臺。學著與來自于不同文化的人們一塊兒工作,加入到開源創新中,這樣的話,你會成為更好地開發者,也會變得更受重視。從開源軟件中,學習如何基于其他人創建的軟件去創建你自己的軟件,然后再發布一個簡單的解決方案,以便其他人能基于你的軟件去創建新的軟件。考慮到服務問題,云計算將提供這一功能,并且新出現的設備也能接受它。Neal Ford提到" 終于要談到,如果你是一名Java程序員又當如何呢?那么,你就處于正確的道路上。你理解多平臺和標準的重要性。Java是開源軟件使用的最重要的語言之一,而且Java最重要的特性就是它本身是開源的,所以你會感輕松。Java也是云計算供應商們的主要關注點,另外像Hadoop這樣的Java軟件構成了許多云環境的主干。更不要說,所有重要的新潮語言都正談論著要運行在JavaVM上,還要與已有的Java類庫和知識相集成。
最后的問題就是你的激情:為未來作準備,選擇能讓你興奮的東西,考慮云計算,基于開源軟件去創建新的開源軟件,加入或吸引來自于不同地方的人們。保持你的獨立性。你就將干得很棒!