沒(méi)人比程序員更討厭軟件
幾個(gè)月前,我們買(mǎi)了一臺(tái)新的數(shù)碼相機(jī),為的是更好地記錄我們家小寶貝的成長(zhǎng)過(guò)程。采購(gòu)的事情由我太太負(fù)責(zé)。她小心地打開(kāi)相機(jī)的包裝盒,給相機(jī)裝上電池,然后就開(kāi)始了***試拍。像很多電子產(chǎn)品一樣,隨相機(jī)附送的還有一張軟件光盤(pán)。于是,她不假思索地打開(kāi)DVD光驅(qū),然后把光盤(pán)放了進(jìn)去。
我眼角的余光碰巧注意到了這一切。說(shuō)時(shí)遲,那時(shí)快,我瘋了似的從房間的另一頭沖過(guò)去,同時(shí)大叫:“不……要……啊……”——我不顧一切地試圖阻止她從那張光盤(pán)上安裝軟件(為了更好地理解當(dāng)時(shí)的情景,你可以以夸張的慢動(dòng)作來(lái)想象一下整個(gè)過(guò)程)。還好,她停住了,但我也幾乎驚走了一只貓。
隨數(shù)碼相機(jī)附送的軟件其實(shí)沒(méi)啥問(wèn)題。但真是這樣嗎?
這個(gè)軟件可能是不必要的
任何現(xiàn)代的操作系統(tǒng)(甚至是Windows XP)都能瀏覽并且自動(dòng)下載一臺(tái)新數(shù)碼相機(jī)里的照片。不需要什么特別的軟件。但為了增加“價(jià)值”、與競(jìng)爭(zhēng)對(duì)手形成差異化,相機(jī)公司的某些高管草率地采取了捆綁軟件的策略——隨機(jī)附帶一款具有一堆古怪而獨(dú)特功能的軟件——這種做法是應(yīng)被質(zhì)疑的。
硬件公司通常不擅長(zhǎng)做軟件
數(shù)碼相機(jī)公司玩得好的是硬件制作,而軟件呢,充其量是事后才想起來(lái)要做的事,只是一件附屬品,在銷售人員眼里也不過(guò)是錦上添花的玩意兒。
不明來(lái)源的軟件很可能是由爛程序員開(kāi)發(fā)出來(lái)的
拋開(kāi)別的不說(shuō),你即將安裝的這款無(wú)名軟件,它有用而且用戶體驗(yàn)良好的概率是很低的。
不幸的是,選擇以軟件開(kāi)發(fā)作為自己的職業(yè)有很多副作用,其中之一便是,久而久之,你會(huì)變得厭惡軟件。我說(shuō)的是真正的厭惡!一種強(qiáng)烈的厭惡之情!想象一下你碰到過(guò)的最憤怒的用戶,把他的情緒乘以1000倍也抵不過(guò)我們程序員對(duì)軟件的感受。沒(méi)人比程序員更討厭軟件。甚至此時(shí)此刻,我在說(shuō)這個(gè)事的時(shí)候都感覺(jué)到自己的憤怒。
把開(kāi)發(fā)軟件作為職業(yè)的人會(huì)有這種態(tài)度,這難道不奇怪嗎?我們每天寫(xiě)著代碼,因此還得到報(bào)酬,怎么還能有怨恨呢?
David Parnas在一次采訪中這么解釋道:
問(wèn):在軟件工程中,最常被忽視的風(fēng)險(xiǎn)是什么?
答:無(wú)能的程序員。有人估計(jì),美國(guó)需要超過(guò)20萬(wàn)名程序員。這完全是誤導(dǎo)!這不是數(shù)量的問(wèn)題,而是質(zhì)量問(wèn)題。一個(gè)爛程序員在一年里可以輕易創(chuàng)造兩個(gè)新的就業(yè)機(jī)會(huì)。雇用更多的爛程序員,只會(huì)加大我們對(duì)他們的需要。而如果我們有更多優(yōu)秀的程序員,并且能夠讓他們脫穎而出,我們對(duì)于程序員的需求就會(huì)變少,而不是更多。
我怎么如此肯定這世界到處都是無(wú)能的程序員呢?因?yàn)槲揖褪瞧渲兄弧?/p>
我們都在香腸加工廠干過(guò)活,因此我們知道那玩意兒是怎么做出來(lái)的。這事不光彩!大多數(shù)軟件都是像我們這樣的爛程序員(有的比我們更爛)開(kāi)發(fā)出來(lái)的。這意味著,大多數(shù)軟件都是爛貨。ScottBerkun曾經(jīng)寫(xiě)過(guò)一篇文章,題為“Why Software Sucks”(為什么軟件叫人失望)。文中提到:
當(dāng)人們說(shuō)“這東西真爛”,他們的意思是下面的一條或幾條:
它非我所需;
我不知所措;
它沒(méi)必要這么復(fù)雜難用;
它故障頻出;
它丑陋得讓人作嘔;
它與我的世界觀不相符;
它把我的精力浪費(fèi)在工具上,而我更應(yīng)該專注于我的工作。
你覺(jué)得與那臺(tái)數(shù)碼相機(jī)捆綁的軟件符合上述幾條?我猜全部命中。這也是為什么說(shuō),***別用軟件。如若不然,你也要盡可能少用軟件,甚至于,只用那些有著良好聲譽(yù)的確實(shí)可靠的軟件。
我不喜歡安裝新軟件。恰恰相反,我對(duì)這事很恐懼!
我來(lái)講一個(gè)自己做了很多次的噩夢(mèng)吧。在夢(mèng)里,我坐在一臺(tái)電腦面前。這臺(tái)機(jī)器啟動(dòng)了,跑的是我自己開(kāi)發(fā)的操作系統(tǒng)。然后,我打開(kāi)一個(gè)網(wǎng)絡(luò)瀏覽器,它也是完完全全由我自己開(kāi)發(fā)的。我訪問(wèn)了一個(gè)網(wǎng)站,這個(gè)網(wǎng)站也是我自己搭建的。我在頁(yè)面上剛一點(diǎn),結(jié)果藍(lán)屏了。藍(lán)屏程序本身也藍(lán)屏了,就這樣一發(fā)不可收拾,引起了一場(chǎng)大爆炸,把整個(gè)街區(qū)都?xì)Я恕?/p>
這個(gè)夢(mèng)還算好的。更糟的時(shí)候只有尖叫。周圍一片漆黑。
總之,我討厭軟件。我討厭絕大部分軟件,尤其是我自己的,因?yàn)槲抑雷龊靡粋€(gè)軟件有多難!這聽(tīng)起來(lái)有些奇怪,但對(duì)于軟件開(kāi)發(fā)者來(lái)說(shuō),這卻是一種自然而健康的態(tài)度。你會(huì)發(fā)現(xiàn),這是所有有能力的程序員的共識(shí),也是成長(zhǎng)的必經(jīng)之路。
實(shí)際上,在面試的過(guò)程中,我覺(jué)得只要用一個(gè)簡(jiǎn)單的問(wèn)題,就能判斷出一個(gè)軟件開(kāi)發(fā)者是否有能力:“近期你見(jiàn)過(guò)的最糟糕的代碼是什么?”
如果他們沒(méi)有毫不猶豫地回答說(shuō)“我自己的”,那么你應(yīng)該立即中止面試。朋友,對(duì)不住啦,你對(duì)軟件討厭得還不夠!過(guò)幾年再來(lái)吧,如果那時(shí)候你還在當(dāng)程序員……