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