什麼推動軟件開發的進步?

有人說,軟件大牛們都是懶人,因爲懶而發明新的事物,以便讓大家懶得有利,懶得有成果。還有人說是熱情,激情什麼的?聽起來是不是太正面了!

其實,還有一種可能,也許更加令人信服的可能——關鍵在於人心的差異——不管是什麼東西,只要不是自己做的,就總是能夠挑出毛病,看到不喜歡——程序員總是希望創造新的,而不是維護舊的。

windows 革命簡史“一文(自己搜索)就是這樣的一篇文章。無論是DDEOLECOMAtlActiveX的任何一項技術,之所以會發生,其原因都在於“這個東西有一個致命的弱點:它(它們)​​​不是我們做的…”,相比那些堂而皇之的理由,“不是我們做的”似乎更加直指人性,讓人們​​更加容易相信。所謂的文過飾非,我想說的就是這一個意思吧。

這樣的說法也可以解釋很多現象。比如歷史悠久,兼容性非常好的C語言(至今還在語言兵器譜上前一二位徘徊),C的最大優點是歷史遺產豐厚,支持者衆多,很多語言,數據庫,工具都支持C語言 。而它的最大缺點則是:很基本的元素都沒有,比如string類型,boolean類型,更不要說豐富內置的數據結構了;模型太過簡單,當遇到稍微複雜的問題時,必須通過拼湊的技術來完成。以模塊技術爲例,include一個文件,爲了避免重複包含,需要通過#ifndef xxx #define xx i來處理。在比如編譯lib文件,需要用#pragma comment lib 之類的非常晦澀的宏——這些都應該是語言本身支持的啊。

60年代到90年代,語言數量達到了幾千種,大量的牛們爲了成爲某某語言之父而殫精竭慮,卻沒有考慮到如果大家的力量集中於C語言或者幾種語言上對整個it行業更加有利。比如go語言在2009年贏得了很多人的關注,可是goc並不兼容!zimbu也是。依我看,很多新語言的發明者儘管有冠冕堂皇的解決某個問題的理由,其實潛在的規則依然還是:它們(其他的語言)不是我做的。大量的語言的存在照成的問題比解決的問題更多——沒有那個行業如同軟件行業那樣,讓巴別塔大行其道,大量的相同業務的系統用不同的語言,利用不同的api重複的發明出來。

我還記得愛因斯坦和波爾爲了量子理論整整辯論了12年,愛因斯坦的頭腦,如果真正沉下心來研究量子理論,不會花費那麼長的時間,不得不讓人懷疑,他是不是也有同樣的潛臺詞。大賢大哲都是如此,我們又會如何呢。很多領域都是如此,我的一個朋友,也是前同事,曾經給我說到另外一個前同事對我的看法:“以前他非常不喜歡你,覺得你管的太多,而當他自己也在帶幾個人的時候,他覺得管人真的很麻煩,然後回顧到我們一起的時候,他說你真的很厲害,很有方法”。管理方面也同樣在不但的重演着這一切。

​​依我看,改變這一切是很難的,而利用這一點就會輕鬆很多。難道不正是人類的豐富多彩的差異讓社會得以進步嗎?一向以來,程序員之間的差異是缺乏溝通的,如果程序員看到不爽的代碼,往往並不好意思直接提給作者本人,但是在背後卻會發表意見:“什麼破玩意,如此難用,不如自己做一個”。通過正式的代碼評審,可以表現出這樣的差別,從而在溝通中得到雙贏的局面。從心理學角度來看,評審的好處是:

1. 看到差別,會自然的引起大家的思考,促進溝通

2. 能夠參與產品的設計,提出自己的看法和溝通,對不滿者也是一個心理的釋放

沒有爭論就沒有創造。太過和諧的環境,往往是缺乏創新的環境。語言這裏打的熱鬧,纔有程序員的舒服。sql這裏表面上有競爭,其實是Oraclesqlserver兩家獨大,形成了寡頭的局面。他們兩家假裝競爭,其實各自有自己的地盤。沒有衝突,這就是爲什麼這麼多年來sql語言進步甚少的原因。

 

貓兒的毛要順着摸,對人類的天然缺陷(或者說特質)也是如此。

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