前進的勇氣

雖然我的工作平臺是基於.NET的,但我常去的一個社區JavaEye,卻是一個關注Java和企業應用的網站。兼聽則明,偏聽則暗,我一直相信,聽到不同的聲音,聽到刺耳的聲音,是有好處的。

JavaEye論壇之前是PHP做的,而整個社區是Atlassian基於Java的著名商業軟件Confluence(在敏捷開發領域裏很有名的ThoughtWorks官方社區就是用的這個軟件)。而從06年中期開始,JavaEye站長Robbin帶領團隊用Ruby On Rails重寫了整個站點,當時,RoR浪潮在國內纔剛剛興起不久,而JavaEye團隊在RoR上均是新手,敢於全盤重構JavaEye站點,需要極大的勇氣。

事實上,JavaEye的這次重寫很成功。整個站點全部整合在一起,用戶友好性也大大增強(AJAX),而且JavaEye團隊都是一羣在軟件工業領域浸染頗深的人,對社區站點的深刻理解也在設計開發中體現。方方面面的優勢,造就了JavaEye站點的耳目一新,說JavaEye是當前國內技術理念最領先的社區,這話不算誇張。

然而,就在JavaEye新版剛上市半年,站長Robbin又在考慮再次重構整個站點了。Robbin認爲:

軟件開發中最大的難點在於如何在一個軟件產品的完整生命週期中始終保持其代碼質量和結構合理性。我們已經見過太多的軟件在其設計和規劃階段殫精竭慮,精心設計其結構,採用最新的技術,來確保軟件儘可能長的生命週期,在開發階段編寫完備的單元測試,來確保軟件質量始終保持很好的水平。

但是所有的這些努力其實從某種程度來上來說,都不解決根本問題:隨着技術的進步,隨着軟件不斷打補丁,功能升級改進,改來改去,代碼會不可阻擋的逐漸腐爛,越到後來越難以維護,越到後來性能越糟糕,越到後來越難以理解,這就是軟件熵的現象。

我特別高興看到JavaEye團隊有這樣大的勇氣去破舊立新。因爲我一直以來特別喜歡跟別人討論的一個話題就是:保護投資的利弊。

在我看來,所謂保護投資,其最大的弊病就是不敢舍,於是歷史包袱越背越重,從而失去前進的勇氣。可是不敢舍,哪有得?

JavaEye半年便進行一次大版本的重構,這不可避免的涉及到了保護投資的問題:是不是半年前所作的工作基本上都是白做了?在Robbin看來,事情的真相卻是:

1) 當我們用RoR開發JavaEye2.0的時候,我們還都是RoR新手,現在回過頭去看代碼,發現很多地方已經有了更好的實現方式,很多代碼寫的並不好,甚至很糟糕。

2) 通過這半年時間網站的運營,我們已經對RoR性能的方方面面,長處缺點有了比較清楚的認識,所以對當前網站代碼存在的各種問題也有了清楚的認識,完善了代碼優化的思路。

3) 在未來我們還有很多創新性的功能要開發和推出,這些新的功能當初並不在我們的構思之內,而是隨着網站的發展逐步想到的。因此目前的代碼架構並不能很好的支持新功能的靈活擴展。

4) 在我們開發JavaEye2.0的時候,基本上是基於rails1.0的功能開發的,現在rails1.2已經推出了,我們使用的很多技術已經落伍了。

做我們這一行,最需要做的就是與時俱進,擁抱變化了。要前進,就要敢於否定過去,永遠不要期待有能夠以不變應萬變的解決方案出現。

勇於舍,是爲了未來更好的得,曾經的得以及現在的舍並不是沒有價值的。舍也並非全盤否定,而是萃取菁華。否定一切輕易拋棄並無意義,但死抱住現有資本把前進風險擴大化也是得不償失。

李敖曾經舉了個例子:

美國一個詩人叫羅伯特.s費羅斯特,他講了一個事很有趣,他年輕時不敢做一個激進派,(因爲)怕年老時變成一個保守派。

但其實更可怕的事情是,年輕的時候剛有了一點成績,就已經變成了保守派了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章