"不要重新發明輪子"是從國外IT界流傳進來的一句話, 目的是告誡我們盡量使用現有的技術群組件, 不要随意重新發明這些技術群組件.
但是任何事物都要一分為二的看待,都有它的好處和壞處,這裡從企業和個人的兩個角度來分析他們的優缺點。
現在的開源産品大行其道,已經為很多公司的技術發展起了非常重要的作用,尤其是中小型公司,但是我們也了解到某些大的公司似乎對重新發明輪子非常的 感興趣,覺得開源産品沒什麼了不起,不可采用,風險太大,我一直沒有了解他們所說的風險太大指的是什麼風險,可能大家都對開源産品不了解而産生的心理風險 太大了吧。
從企業的角度來看,不重新發明輪子是可取的,并且是明智的。對于一些技術方面,開源産品已經有了非常标準或者精湛的實作,比如 ORMapping,hibernate經過幾年的發展,已經做得相當好了。自己如果重新去做ORMapping工具,得到的結果往往是品質屬性差的太 遠,性能很低下或者支援的模式也不多,造成了下遊鍊中業務設計人員,業務開發人員的極大痛苦。并且經過幾個産品的發展之後,可能已經被修改的面目全非,有 沒有人出來進行重構,造成的結構就是這個糟糕的實作變成了産品的一個負擔,曆史包袱。架構師在設計的時候,總是避開他的弱點來考慮,往往造成一些架構師的 一些想法無法付諸實踐。如果技術平台中的很多子產品,比如ORMapping,Report,BI, Workflow等都自己重新發明輪子,那麼這就是一個糟糕的技術平台,對産品的發展非常的不利。曆史包袱會越來越大,沒有人敢于跳出來說完全摒棄這些糟 糕的實作,因為要承擔很多的風險。是以企業應該積極的要求架構師和設計人員評估開源實作,并且進行應用。好的做法是:
完全引入開源實作,并且通過接口隔離,友善對同類開源實作的替換。
擴充開源實作,實作自己的特殊功能,這樣就享受不到某個實作的更新政策。
從個人的角度來說則與企業不同,要積極的發明輪子,這叫做創新,不重新發明輪子其實是抑制了創新思想,非常不利于個人的發展。
經常在面試的時候就會看到,你們項目采用的架構是什麼,Spring+hibernate+JSF/Tapestry等等。當你問他對這些開源産品有什麼 體會和具體的評價的時候,通常答非所問。當你問到對于他們的核心源碼了解多少時,支支吾吾不知道說什麼。當你問到你們都擴充了他們那些功能時,通常是一臉 茫然,當然這裡說的是大部分的情況,包括以前的我,一些人除外。是以我們必須擺正心态,積極的吃透這些産品的精髓,再加以創新,這個創新的過程既是重新發 明輪子。是以我們不要做純粹的模仿者,要做積極的模仿者,積極的探索,積極的發現問題,積極的創新解決。
是以對于是否重新發明輪子,可能決定的因素還很多,這裡隻是從企業和個人的角度來分析,也是對之前的自己做一次反思。