談?wù)勎覍?duì)開(kāi)源的看法 |
發(fā)布時(shí)間: 2012/8/24 17:46:26 |
有這么一種觀點(diǎn):程序員要想提高技術(shù)水平,多讀開(kāi)源代碼、多參與社區(qū)討論與開(kāi)發(fā)就好了。我以前很贊同,現(xiàn)在發(fā)現(xiàn)不是這樣。 panpan和xuhui對(duì)我的批評(píng)是,多看看技術(shù)以外的東西。我的理解是這樣,很多東西它之所以這么做,不是因?yàn)榧夹g(shù)上是最優(yōu)的,而是因?yàn)楣て凇㈩I(lǐng)導(dǎo)的旨意、需求變更留下的歷史問(wèn)題等等。這些原因是無(wú)法通過(guò)閱讀代碼而得知的,我只能看到實(shí)現(xiàn)細(xì)節(jié),卻不能知道作者的設(shè)計(jì)意圖。像Qt、leveldb這樣的項(xiàng)目,名為開(kāi)源,但是它并沒(méi)有采用開(kāi)放式的開(kāi)發(fā)。只是這個(gè)公司將其技術(shù)成果共享出來(lái)了而已,中間的過(guò)程完全不可得知。舉個(gè)例子,Nokia和Intel說(shuō)要合伙做一個(gè)叫Meego的操作系統(tǒng)。Intel說(shuō)好啊,我對(duì)Linux熟,我來(lái)優(yōu)化底層系統(tǒng),Nokia你來(lái)搞QT及上層軟件。結(jié)果Intel很郁悶的發(fā)現(xiàn),Nokia的Meego項(xiàng)目組有兩套BUG管理系統(tǒng),一套是對(duì)內(nèi)的,只有Nokia自己的員工可以訪問(wèn)(intel的不行),一套是對(duì)外的,放在社區(qū)里讓任何人都可以去提BUG。然后Intel就怒了,你這讓我們?cè)趺春献鳎縉okia也很委屈,因?yàn)閷?duì)任何一個(gè)手機(jī)廠商來(lái)說(shuō),未上市的手機(jī)的硬件細(xì)節(jié)是很重要的商業(yè)機(jī)密,這些東西很容易通過(guò)BUG管理系統(tǒng)中的日志文件和coredump流露出來(lái)。所以,大多數(shù)軟件廠商最終選擇的都是Nokia這樣的做法。 很多時(shí)候要想清楚自己的目的,是讓項(xiàng)目盡快完工,還是追求純技術(shù)?如果是后者,不如老老實(shí)實(shí)在學(xué);蛘哐芯克糁W鲰(xiàng)目最重要的不是解決一個(gè)多么大的技術(shù)問(wèn)題,而是盡可能的把所有技術(shù)困難都繞開(kāi),然后再解決那些不得不解決的。這時(shí)便會(huì)引申出一個(gè)重要原則:Simple is the best。 讀代碼跟讀小說(shuō)不一樣。寫小說(shuō)的人心里一定是有讀者在的。所以每拿起一本古典小說(shuō)的時(shí)候,就仿佛穿越了時(shí)空在跟一個(gè)已經(jīng)死去的人對(duì)話。而代碼不一樣,代碼主要還是給機(jī)器讀的,以及給自己讀。舉個(gè)例子,如果你對(duì)C++的模板推導(dǎo)很擅長(zhǎng),你會(huì)因?yàn)檫@門技術(shù)太晦澀,有人有可能看不懂,而不用嗎?所以如果想通過(guò)代碼猜透作者的設(shè)計(jì)企圖,不管能不能做到,總之為其花費(fèi)的代價(jià)實(shí)在是太高。那么有別的方法嗎? 有! 跳到這個(gè)公司去,中午跟作者一起吃個(gè)飯,隨便套兩句,就出來(lái)了。 對(duì)我自己來(lái)說(shuō),很有幸能在一流的互聯(lián)網(wǎng)公司工作。如果我想去百度、騰迅、阿里中的任何一家,應(yīng)該都是有機(jī)會(huì)的。所以,總有比我資深的老員工,如果有幸遇到一個(gè)比較開(kāi)明的,跟著這樣的人做項(xiàng)目,會(huì)學(xué)到很多從開(kāi)源項(xiàng)目、從書本學(xué)不到的東西。 這些,大概就是我跟1年前之比的轉(zhuǎn)變吧。 本文出自:億恩科技【mszdt.com】 服務(wù)器租用/服務(wù)器托管中國(guó)五強(qiáng)!虛擬主機(jī)域名注冊(cè)頂級(jí)提供商!15年品質(zhì)保障!--億恩科技[ENKJ.COM] |