程序員都不讀書(shū),但你確實(shí)應(yīng)該讀!

Doug McCune在Why I Don’t Read Books這篇文章里貼切的寫(xiě)出了他的感受,我相信他描述的這種心情是相當(dāng)普遍的。
我認(rèn)為技術(shù)圖書(shū)出版業(yè)應(yīng)該為此承擔(dān)主要責(zé)任:
- 大部分編程書(shū)籍都寫(xiě)得很爛。寫(xiě)書(shū)出版的門(mén)檻,就我個(gè)人發(fā)現(xiàn),已經(jīng)基本上不存在了。圖書(shū)出版業(yè)雖然很熱鬧,但這并不能說(shuō)明它能提供比你在廣袤的互聯(lián)網(wǎng)上找到的更好的內(nèi)容。雖然每年都有成百上千的編程圖書(shū)上市,但也許可能只有2、3本是值得你花時(shí)間去讀的。
- 編程書(shū)論斤買(mǎi),而不是論知識(shí)量。我們會(huì)有這樣一種感覺(jué),編程書(shū)籍的厚度跟它的內(nèi)容質(zhì)量似乎成反比。書(shū)的部頭越大,里面所承載的有用信息越少。那些動(dòng)輒上千頁(yè)的參考書(shū)究竟有什么用?你真的會(huì)用它來(lái)查找嗎?拿著都費(fèi)力。
- 都是面向新手的速成編程書(shū)籍。我絲毫沒(méi)有反對(duì)新人進(jìn)入編程領(lǐng)域的意思。但我從來(lái)都是認(rèn)為“24小時(shí)[某種編程語(yǔ)言]速成教程”這類(lèi)書(shū)對(duì)我們的這種職業(yè)是有害的。這種書(shū)都灌輸著一種短視的思想,求快,求最簡(jiǎn)單的省事的做事方法,這導(dǎo)致初學(xué)者誤入歧途——或就像我喜歡提到的,“PHP”。玩笑!玩笑!
- 編程書(shū)籍色情化。有些人認(rèn)為把一大摞厚厚的,看起來(lái)很重要的編程書(shū)放在案頭——基本上沒(méi)看過(guò)——會(huì)映襯出是一個(gè)水平很高的程序員。正如David Poole曾經(jīng)有一次在郵件中跟我說(shuō)的,“這種事情我是絕對(duì)不會(huì)做的”,說(shuō)的正是這些編程書(shū)籍色情化的現(xiàn)象。這也是我經(jīng)過(guò)思考決定拒絕購(gòu)買(mǎi)Knuth寫(xiě)的《計(jì)算機(jī)程序設(shè)計(jì)藝術(shù)》看一書(shū)的原因。我們應(yīng)該去買(mǎi)有實(shí)踐價(jià)值的書(shū),你真正會(huì)去讀的書(shū),更重要的,你能拿來(lái)實(shí)用的書(shū)。
作為一名書(shū)作者,我很慚愧。我和別人也合寫(xiě)了一本編程書(shū),而且我并不認(rèn)為你應(yīng)該買(mǎi)它。我不是在說(shuō)反話。我想說(shuō)的就是字面上的意思。但不管怎樣,那并不是一本很糟糕的書(shū)。我對(duì)我的書(shū)合作者懷有最大的敬意。但你能從網(wǎng)上找到比這本書(shū)更豐富的信息。抱著一本死書(shū)不放是最不可取、最浪費(fèi)生命的事。
互聯(lián)網(wǎng)無(wú)疑正加速編程書(shū)籍的死亡,但有一些證據(jù)顯示,甚至早在互聯(lián)網(wǎng)誕生之前,很少有程序員遍讀大量編程書(shū)籍。我很吃驚的在《代碼大全》 看一書(shū)中看到了這樣的段落:
你可以炫耀一下了,因?yàn)槟阍谧x這本書(shū)。你已經(jīng)學(xué)到了比軟件產(chǎn)業(yè)里大部分人都要多的知識(shí),因?yàn)榇蟛糠值某绦騿T一年都不會(huì)讀一本書(shū)(DeMarco and Lister 1999)。每天讀一點(diǎn),堅(jiān)持不懈,你就能成為專業(yè)高手。如果你能每?jī)蓚€(gè)月讀一本好的編程書(shū),大概一周35頁(yè),你很快就能對(duì)業(yè)內(nèi)的知識(shí)有堅(jiān)實(shí)的掌握,能很快讓你從周?chē)械娜酥忻摲f而成。
我相信早在《代碼大全》看1993年第一版時(shí)里面就有這樣的原話,但我們無(wú)法證實(shí),因?yàn)闆](méi)有那一版的書(shū)。經(jīng)過(guò)這網(wǎng)上的搜索,發(fā)現(xiàn)了Steve McConnell在《人件》 看中引用的段落:
關(guān)于讀書(shū)情況的統(tǒng)計(jì)數(shù)字讓人非常的泄氣:比如,大部分的軟件開(kāi)發(fā)人員手頭上都沒(méi)有一本關(guān)于他們的工作方面的書(shū)籍,更不用說(shuō)讀過(guò)一本。這事實(shí)讓人對(duì)這個(gè)領(lǐng)域里的工程質(zhì)量感到擔(dān)憂。而對(duì)于我們這些寫(xiě)書(shū)的人,那更是悲劇。
我很痛心的讀到reddit上的這些評(píng)論,看到人們stackoverflow.com網(wǎng)站的宗旨使命理解為對(duì)編程書(shū)籍的否定。懷著一種對(duì)當(dāng)前編程書(shū)籍市場(chǎng)復(fù)雜的心情,我要說(shuō),我喜歡編程書(shū)!我這個(gè)編程博客就起始于一篇推薦程序員必讀書(shū)籍的文章開(kāi)始的。很多我的文章都是在講述我對(duì)于一些經(jīng)典編程書(shū)籍里的核心思想淺顯的理解。
如何讓這看似矛盾的**語(yǔ)句**能夠調(diào)和,如何能統(tǒng)一這動(dòng)態(tài)的愛(ài)與恨?你看到了沒(méi)有,處處都有編程書(shū)籍,處處都有編程書(shū)籍。
優(yōu)秀的編程書(shū)是沒(méi)有時(shí)間限制的。它們會(huì)超越語(yǔ)言的限制,IDE的限制和平臺(tái)的限制。它們不是解釋how,而是why。如果你五年都不想清掃一下你的書(shū)架,那請(qǐng)相信我,你買(mǎi)錯(cuò)了編程書(shū)。
我的編程書(shū)柜是任何東西都換不去的。我無(wú)時(shí)不刻都在使用它他們。事實(shí)上,我寫(xiě)這篇文章時(shí)就翻閱了它們數(shù)次。

我不想再?gòu)?fù)述我的這些推薦的讀物,因?yàn)檫@些年我一直在拿它們炫耀。
可我必須要號(hào)召的是:我最喜愛(ài)的五本最重要的編程書(shū),你們每個(gè)正在從事編程工作的程序員都應(yīng)該有擁有——并且要讀。這些種子讀物,極富實(shí)用價(jià)值,年復(fù)一年,不論我做什么樣的編程工作,它們從未貶值。它們值得一讀再讀,每次我有了更多年的經(jīng)驗(yàn),回來(lái)重新閱讀它們,都會(huì)讓我對(duì)軟件工程獲得更深更明銳的認(rèn)識(shí),如果你還沒(méi)有擁有這些書(shū),那你在等待什么?
《代碼大全》

《程序員修煉之道》

《不要讓我思考》

《人件》

《軟件工程中的真相與謬論》

我的主張,讓stackoverflow.com這樣的網(wǎng)站成為這里永恒經(jīng)典編程書(shū)籍的有益補(bǔ)充。沒(méi)有任何途徑,東西,形式能替代這些書(shū)籍。
另一方面,如果你不幸是《Perl語(yǔ)言傻瓜書(shū)》的作者,那你要留意你的背后,因?yàn)槲覀兒苊鞔_就是在針對(duì)你。



















