從去年到今年,開放這個詞也在互聯(lián)網(wǎng)上炒得火熱,自己一年多的工作也讓自己對開放這個詞有了自己的一些理解和認識。
開放的平臺
去年到今年自己的工作也隨著公司的戰(zhàn)略改變不斷的發(fā)生著變化。最早公司定位致力于為中小企業(yè)提供商務管理軟件,讓中小企業(yè)能夠通過使用在線軟件輕松搞定電子商務貿(mào)易管理。隨后公司又致力于提供開放的在線軟件運營平臺,為眾多ISV和中小企業(yè)建立一個軟件交易平臺,中小企業(yè)可以隨需定制管理軟件。到今年年初,提出了服務集成平臺,ISV的應用開發(fā)不再是封閉的開發(fā)模式,可以基于ISP提供的服務定制出更加豐富的應用。其實這種轉(zhuǎn)變也是對平臺的開放的思想不斷成熟的一個過程。
獨自實現(xiàn)在線管理軟件和傳統(tǒng)軟件其實沒有太大的差別,唯一的差別就是把應用由客戶的機器拉到了軟件提供商的服務器上,對于維護,更新和商業(yè)模式可能有部分的變化,但是根本上來說軟件的封閉性還是和傳統(tǒng)軟件一樣。互聯(lián)網(wǎng)軟件的最大特點就是個性化需求強烈以及需求變更周期短,要適應行業(yè)客戶的需求,僅僅靠一個公司的幾桿槍幾號人的創(chuàng)意遠遠不夠。Web2.0的熱潮其實能夠給開發(fā)人員最大的啟示就是參與才是力量的源泉,其實軟件開發(fā)也是一樣,如果能夠集合互聯(lián)網(wǎng)上眾多ISV的思想和創(chuàng)意,那么滿足用戶需求并不是一件難事,同時及時響應用戶需求也不再是火燒屁股的事情。同時,看看互聯(lián)網(wǎng)應用開發(fā)的今天,國外Open API前幾年就已經(jīng)興起,Amazon,Google,Yahoo,FaceBook,MySpace等等,將自己的數(shù)據(jù),存儲,計算通過API的方式提供給第三方,讓第三方開發(fā)者能夠通過使用這些服務有機會實踐自己的創(chuàng)新和創(chuàng)意,互聯(lián)網(wǎng)應用的開發(fā)也有了新的開放式開發(fā)模式。服務集成平臺其實就是為ISV提供了創(chuàng)建應用的一個資源平臺,ISV可以通過服務集成平臺獲取到各個ISP(例如淘寶)的API,在其基礎(chǔ)上開發(fā)出在線應用,然后直接掛接到應用運營平臺為終端用戶提供應用服務。這很類似于傳統(tǒng)行業(yè)的產(chǎn)業(yè)鏈,服務集成平臺就好比原料交易市場,應用運營平臺就好比商品交易市場。回過頭來看,阿里系的各個子公司,其實都是在以這種思路做事,從加入公司到現(xiàn)在,給我印象最深刻的一句話就是:“凡事不要先想著如何賺到別人的錢,讓別人先賺到錢,別人自然很樂意的和你分享”,這種雙贏的思想在開放中能夠得到最好的實踐。
開放的框架
一個公司技術(shù)是需要積累的,如果純粹讓每一個開發(fā)人員根據(jù)自己的能力去合作開發(fā)企業(yè)的產(chǎn)品和平臺,對于企業(yè),對于產(chǎn)品都是不利的。Java吸引人就在于它的開源世界,每一個開發(fā)人員可以去獲得自己想要的,或者去貢獻給他人自己創(chuàng)造的。現(xiàn)在很多公司應聘的過程就是一個開源知識問答,其實是否用過能說明什么問題呢,關(guān)鍵是沒用過如何去學習和了解并且快速上手,如果能力再強一點,那就知道如何定制和擴展,我想這樣的才可以叫做企業(yè)需要的人才。
從公司成立那時起,內(nèi)部就有一個應用開發(fā)框架,作用就是為了快速開發(fā)應用,盡最大可能降低開發(fā)者對于開發(fā)技術(shù)的學習,集中精力致力于業(yè)務開發(fā)。(當然看到這里估計98%的開發(fā)人員都會皺起眉頭)。我也為此貢獻了自己2個Q的工作時間,當時我主要負責后臺重構(gòu),需要建立起一個服務框架,開始參考了OSGI(因為它的模塊化和動態(tài)載入機制),發(fā)現(xiàn)并不是很合適,然后接觸了SCA框架(可擴展,模塊化,SOA的支持),最后決定在開源項目Tuscany0.91版本的基礎(chǔ)上再次開發(fā)和封裝,實現(xiàn)了內(nèi)部的ASF(應用服務框架),ASF作為我們開發(fā)框架的后臺基礎(chǔ)框架被廣泛使用在了我們的多條產(chǎn)品線以及基礎(chǔ)平臺上,但是ASF的質(zhì)疑就一直沒有停過,性能,學習成本,調(diào)試困難度等等。雖然自己竭力去寫了厚厚的一套文檔,一組單元測試工具,一系列的問題查找工具,作了多次的壓力測試,學習普及,但是還是得不到一些架構(gòu)師的支持。
其實,自己在后面也做過一些思考,其實對于ASF來說,它的可擴展性沒有什么好懷疑,他不像其他開源項目,我可以封裝Hessian組件,REST組件等等,隨需載入,開發(fā)者只需要配置一下標簽,即可使用,因此這樣的框架下,不會隨著技術(shù)的發(fā)展和自己的封閉而腐爛。但是,有一點就導致推廣產(chǎn)生了那么多問題,那就是參與。我記憶很深的就是我們的首席架構(gòu)師在今年招開會議評估ASF的問題時地郵件中說的:“ASF不是岑文初一個人的ASF,也不是平臺一部的ASF,而是大家的ASF”。其實那時候我已經(jīng)不再專職負責ASF,當今年因為一個項目進度由于開發(fā)受到影響時再次提出ASF的質(zhì)疑地時候,我自己真的覺得比較沮喪,很多架構(gòu)師和開發(fā)者從來就沒有看過文檔,沒有用過調(diào)試工具,沒有看過Q&A,一出問題就覺得無所適從,要找人解決框架問題,我曾經(jīng)說是否Spring用的時候出現(xiàn)問題,第一想法就是去找Spring的開發(fā)者,還是先會看看文檔,調(diào)試一下。我想這應該是兩方面的原因,但如果能夠讓每個人都參與進來,那么就不會是今天一人獨擋的局面。
因此未來自己的工作中,不論是內(nèi)部的基礎(chǔ)組件還是基礎(chǔ)平臺都會多邀請一些參與者,畢竟自己的肩膀有限,螞蟻就算在大力也需要有伙伴的支持。
開放的心態(tài)
這點其實是做人的基本要素,有一個寬闊的胸懷才會有更多的機會,才會成長的更快。但是自己這點的卻做得很不夠。開發(fā)人員都有一個相同的特點就是熱衷于技術(shù)鉆研,今天搞一個東西比你快一點,明天做一個東西比他功能多一點,總是在技術(shù)方面去尋找滿足。其實老大一直和我們也在說,現(xiàn)在公司內(nèi)部的架構(gòu)師并不是一個“全專”,也不一定是一個寫代碼高手,但是在某一個領(lǐng)域會有深入的研究,同時接觸其他領(lǐng)域也能夠勝任。沒有什么技術(shù)人員是絕對的高手,其實隨著工作重心的不斷變化,所接觸的領(lǐng)域也會不斷發(fā)生變化,因此不可能有所謂的“全才”。
有時候自己也會用技術(shù)的眼光去看待人或者事,其實這樣只會讓自己看不到自己的不足,也忽略了別人的優(yōu)點,更重要的就是失去了一次進步的機會。其實經(jīng)常給自己換換思路會對自己有很大的幫助,就好比最近忙于寫了一陣子代碼,那么就給自己一個機會去看看一些關(guān)于搜索領(lǐng)域的知識。開發(fā)了一個階段的服務集成平臺,去了解一下所有的國外網(wǎng)站Open API的風格,結(jié)構(gòu),流程。用慣了Java后,去學習學習Php,Ruby等等。這樣換換腦子對自己來說會有新的收獲。
開放的心態(tài)理解容易,但是要讓他不僅僅寫在MSN的title中,而寫在心里卻需要不斷地督促和付出。不過知道自己有問題好過覺得自己沒有問題。
寫了那么些,其實思路比較亂,我想從隨筆里面也看得出來,但是還是想記錄一下自己的一些思考,起碼以后回過頭來可以看到自己成長的過程。