造輪子,爲何鄙視造輪子,我同意造輪子!

    軟件開發行業裏有一個名詞叫「造輪子」,彷佛造輪子已經成爲一種貶義詞。每當有人說起「你這是在造輪子!」或者會說「你這是在山賽xxxxx」。被說的一方總會感受到一絲涼意,甚至會有一種不被尊重的感受。當我第一次聽到有人跟我說「你這是在造輪子!」時,我變得異常敏感,即便是如今我也會感受到一些不適。 數據庫

    在開源世界裏這種狀況彷佛已是屢見不鮮了,無時無刻都會有人再說「你這是在造輪子!」。 微信

    做爲開發者不管從事的是低級的Ctrl+C,Ctrl+V 仍是已經小有所成。都應該時刻謹記你的成果或許會在將來的某一天被人稱之爲「輪子」。當你的做品有幸被稱之爲「巨大的輪子」的時候,也要記得這只是通向成功道路上的坎坷的一部分。 框架

什麼是輪子? 工具

    關於造輪子咱們你們心中都有一個比較統一的標準,那就是重複製造那些已經存在了的(軟件、功能、類庫、框架)的行爲。一旦你的(目標、功能)和某個產品或者項目一致,而且當你開始實現它們時,其實你就是在製造輪子。 spa

    這裏先說起一個概念就是「模仿」,「模仿」從出生到死亡咱們一輩子都在作的事情。「造輪子」、「山賽」等其本質就是在模仿。微軟在模仿、Google在模仿、三星在模仿、蘋果也模仿。雷達、紅外、人造衛星、人造心臟等等技術都是模仿的成果。 .net

    咱們說的輪子其實也是一種模仿,之因此被稱之輪子主要仍是評價人主觀判斷。由於這個世界上重複的事情太多了。 設計

誰在鄙視製造輪子? 開發

    若是你是公司的管理者,我敢保證你確定不會喜歡看到公司同時進行那些類似甚至如出一轍的產品研發。它們打從一開始就會面臨從內部到外部的各類競爭問題。沒有哪一個管理者會喜歡碰見這樣的事情。換作是我也不例外。我想馬化騰也必定在「QQ企鵝」和「微信」之間也作過無數次的思想鬥爭。 get

    但當你是公司的一名開發者,而你試圖開發一款ORM框架並爭取在公司內部推廣時。我敢保證大部分國內公司裏總會有人跟你說:「你這是在製造輪子,咱們已經有Hibernate、ibatis、Mybatis、Spring....,你爲何不用?」。固然你可使用充分的理由去說服你的同事,你也能夠保留本身的意見。不過把想法奉獻給開源世界也會是一個比較不錯的選擇,由於在那裏總有人會支持你的。 開源軟件

    固然還有人會說:「你製造的這個東西會很難維護,最後變成一坨Shit!」。有的時候遇到這樣的情景仍是坐下來,冷靜冷靜以後講述一下你的設計思路以及出發點,沒準會獲得對方的承認。固然前提是做爲設計者的你出發點應當是爲了解決問題爲前提條件,而不是隻是爲了製造輪子。

    也許你還會收到這樣的評論:「就憑你?人家用了多長時間,多少人才有的成果,你一我的根本沒法完成!」。沒錯07年我在北大青鳥接受培訓時候就有過這種想法,而我就遭遇了這樣的提問。如今回想一下Hibernate不也就是Gavin King一我的構建起來的麼?

    沒準你還會在一次很友好的技術討論中突然收到這樣一句評論「你這是在造輪子!」。而後談話或許會陷入尷尬或者你開始極力辯論它是否是輪子......

    ......

    不管如何,當你遇到上面這兩種人時候,我想仍是發揮沉默是金的優良傳統把。畢竟與其浪費口舌解釋爲何要造一個所謂的「輪子」還不如去實現它。由於紙上談兵永遠是屬於書呆子們的。要記住:「手永遠比嘴勤快」。當你作出來的時候收穫的不僅是這個所謂的輪子,你會看到跟深層的東西。與其爭論倒不如去享受這份收穫。說不定那個鄙視你的人尚未能力去創造這一切呢。

誰在製造輪子?

    我以爲這裏有一篇文章說的很到位都是誰在製造輪子!http://www.oschina.net/news/34155/we-are-doing-the-right-thing?p=3

    一樣的若是你在嘗試作一款Web框架,那麼請到OSChina項目分類中看一看,同類型的框架有多少。下面這張截圖就是正在寫本文時OSChina已經收錄的Web框架統計數據。我也能夠說有635我的和你在作一樣的事事情,大家都是在製造輪子!我也是!

    ......

我同意製造輪子!

    首先,若是打算在開源世界中貢獻一份力量,就要作好製造輪子的心理準備。某類開源軟件永遠不是隻有一種或幾種,這不符合哲學、也不符合大衆的指望。

    在生活中有不少人都將Don't Reinvent the Wheel」--不要重複發明輪子 這句話奉爲經典不可就範,而且以此爲教條對身邊的人進行教育。其實這類人被這句話束縛了。若是太較真它就會禁錮咱們的思想。試想一下若是全天下數據庫訪問都只能經過JDBC來作,還會出現Hibernate、ibatis、Mybatis這類優秀的工具麼?還會出現JTA,JPA,EJB3.0麼?

    也許你會說Hibernate與JDBC、EJB與Spring自己就是不一樣事物的東西。可是就數據庫訪問角度而言Hibernate和JDBC作的事情是同樣的,Hibernate就是JDBC的輪子。只不過這個輪子很是精美讓咱們以爲JDBC只是輪毅。

    試想一下,若是你寫過一款數據庫鏈接池。你就會不光了解到數據庫鏈接池的工做原理,並且還會知道它面臨的問題。這比僅僅知道怎麼用和知道原理的人強多了,這種收穫我想只有製造過輪子的人才能理解。

    各位讀者大家以爲呢?

相關文章
相關標籤/搜索