程序員,你為什么要逃離.NET?
我們,作為軟件開(kāi)發(fā)人員,都自我處在各種不同的狀態(tài)中。
我曾經(jīng)工作過(guò)的一家公司,在多年的運(yùn)營(yíng)中,一直認(rèn)為軟件幾個(gè)月集成一次或部署一次沒(méi)有什么問(wèn)題;他們從來(lái)不知道什么是持續(xù)集成。他們認(rèn)為每?jī)赡臧衍浖念^再開(kāi)發(fā)一次再正常不過(guò)了;他們從未聽(tīng)說(shuō)過(guò)測(cè)試驅(qū)動(dòng)開(kāi)發(fā)(TTD)或迭代開(kāi)發(fā)。盡管這些技術(shù)已經(jīng)被證明能十分顯著的提高軟件的質(zhì)量,降低開(kāi)發(fā)成本、維護(hù)成本和提高團(tuán)隊(duì)士氣。事實(shí)證明,就在今時(shí)今日,你仍然能找到從未聽(tīng)說(shuō)過(guò)這些術(shù)語(yǔ)的軟件從業(yè)者。
我還看到了很多時(shí)候,一些軟件開(kāi)發(fā)人員,用一些極其恐怖的方式,自己開(kāi)發(fā)類庫(kù)和框架來(lái)解決世人已熟知的問(wèn)題。這一遍又一遍的重新開(kāi)發(fā)數(shù)據(jù)映射工具(data mappers),日志工具,對(duì)象轉(zhuǎn)換機(jī)制,消息傳輸系統(tǒng)和web框架,浪費(fèi)了大量的時(shí)間、精力和耐心。我并不是在談?wù)摴矃f(xié)作活動(dòng),我說(shuō)的是團(tuán)體內(nèi)部的“非我勿用”通病。當(dāng)一個(gè)社區(qū)跟外界隔離時(shí)就會(huì)發(fā)生這種情況。這樣的社區(qū)里人們不相互往來(lái),不相互合作。.NET社區(qū)就是這樣的一個(gè)社區(qū)。
去年微軟發(fā)布了一個(gè)新的Web框架,叫做MVC。對(duì)于Web標(biāo)準(zhǔn)來(lái)說(shuō)這不是新框架,甚至對(duì)于已經(jīng)擁有Monorail項(xiàng)目多年的.NET標(biāo)準(zhǔn)來(lái)說(shuō)也不算新。然而人們?nèi)匀辉诘却牡絹?lái)。人們?cè)诘戎④洶阉峁┙o他們。雖然開(kāi)源的MVC Web框架也有,而且這么多的.NET開(kāi)發(fā)人員有能力把它們開(kāi)發(fā)的很好,可什么都沒(méi)有發(fā)生。只有在微軟的一小撮開(kāi)發(fā)人員在做著他們自己的框架,于是MVC 今天還是一種新穎的框架。
這種情形一定是什么地方出了嚴(yán)重的錯(cuò)誤。
這個(gè)新的Web框架比之前的那個(gè)要好并迅速的被人們接受。微軟公布了源碼。有人在github網(wǎng)站上為它搭建了開(kāi)發(fā)代碼庫(kù)。這個(gè)代碼庫(kù)目前只有30個(gè)人關(guān)注、5次提交。5次提交!為什么這個(gè)數(shù)會(huì)這樣出奇的少?因?yàn)槲④洸痪S護(hù)它。他們發(fā)布了一個(gè)沒(méi)有任何人參與奉獻(xiàn)的新版本的MVC。更糟糕的是,人們只用這些新的版本,每次github代碼庫(kù)都會(huì)從新搭建一次。
Paul Cowan和他的horn項(xiàng)目也遇到了同樣的問(wèn)題。他們?cè)噲D解決.NET中的依賴管理問(wèn)題。這真是個(gè)很難的問(wèn)題,但也許最大的困難是來(lái)自于目前情況下的現(xiàn)實(shí)社會(huì)的合作問(wèn)題。他們?cè)谶@個(gè)項(xiàng)目上沒(méi)有得到什么幫助。如果我要是不離開(kāi),我會(huì)把我的所有精力放在上面。
.NET社區(qū)是在一個(gè)沒(méi)有合作的真空中運(yùn)營(yíng)。
這是一個(gè)病態(tài)的,被那些提供非開(kāi)源軟件“解決方案”的軟件廠商毒化了的社區(qū),是被微軟那種軟件的進(jìn)化速度剛好能滿足解決自己?jiǎn)栴}的需要的聰明做法束縛了的社區(qū)。
第三方廠商的支持論壇里到處充斥著“我把GridView放在了我們CallBack控制器里,可是報(bào)了一個(gè)ViewState錯(cuò)誤”之類的問(wèn)題。對(duì)這個(gè)問(wèn)題的真正的解答不是提供“下一版將會(huì)修復(fù)這個(gè)問(wèn)題”。真正的答案基本上是“不要使用這么多有問(wèn)題的抽象做法,從你的同事那里問(wèn)問(wèn)如何使#@$#@%正常工作!”。
同樣微軟的codeplex項(xiàng)目平臺(tái)網(wǎng)站也不能用,它不是真正開(kāi)源的!真正的開(kāi)源是不需要在提交了一個(gè)補(bǔ)丁程序后還需要等待/期望有朝一日能被主分支版本接受和合并。
抱怨的夠多了,反正我走了!我投入了時(shí)間,盡了最大努力,但今天是最后一天,如果你真的對(duì)開(kāi)發(fā)軟件感興趣,你應(yīng)該讓自己處在一群志同道合的人之中。
明天我要用Ruby開(kāi)發(fā)一個(gè)新項(xiàng)目。我將會(huì)遇到很多、各種各樣的有才能的、熱情的人們,他們由衷的希望相互合作,為大家把軟件改進(jìn)的更好。我工作空間的每一部分,包括操作系統(tǒng),數(shù)據(jù)庫(kù),框架,Web服務(wù)器,甚至語(yǔ)言本身都是開(kāi)源的,這是一大群共同努力的人們的見(jiàn)證。
對(duì)于.NET社區(qū)里這些年給我鼓勵(lì)的人們:OrenEini, Jeremy Miller, Hamilton Verissimo, Rob Conery, Scott Bellware,Scott Hanselman,以及所有試圖建立一個(gè)真正社區(qū)的人們,我想對(duì)他們的努力表示我最大的謝意,我希望你們成功!
對(duì)于那些想成為一個(gè)由熱情的具有創(chuàng)新和奉獻(xiàn)精神的開(kāi)發(fā)人員組成的充滿活力的社區(qū)里的一員的人們,行動(dòng)起來(lái)吧,不要局限于某一種框架和語(yǔ)言。找到你自己的群體。全部找出來(lái)。在github建立自己的帳號(hào),干起來(lái)吧。
原文鏈接:http://news.cnblogs.com/n/76477/
【編輯推薦】





















