Jeff Atwood:程式設計師都不讀書,但你應該讀

發表於2013-05-21

問答網站stackoverflow.com的一個主要功能體現就是:軟體開發人員無需再從書本上學習程式設計,就像Joel所說的

程式設計師看起來都不再讀書。市場上程式設計方面書籍的數量和程式設計從業人數相比來少的可憐。

2004年在《The Shlemiel Way of Software》一書中Joel也表達了相同的觀點:

大部分的人都不讀點什麼或寫點什麼。大部分的程式設計師都不讀軟體開發方面的書籍,他們不去軟體開發方面的網站,他們不去Slashdot參與討論。

既然現在的程式設計師都不讀書,他們如何學習程式設計?他們用最原始的方式:捋起袖子就寫程式碼——同時開啟第二個視窗來從網際網路收集經驗和知識。網際網路是一部百科全書。獲取知識資訊更快,更高效,從網上獲取程式設計知識明顯是一種更聰明的方法。Doug McCune在《Why I Don’t Read Books》這篇文章裡貼切的寫出了他的感受,我相信他描述的這種心情是相當普遍的。

我認為技術圖書出版業應該為此承擔主要責任:

  1. 大部分程式設計書籍都寫得很爛。寫書出版的門檻,就我個人發現,已經基本上不存在了。圖書出版業雖然很熱鬧,但這並不能說明它能提供比你在廣袤的網際網路上找到的更好的內容。雖然每年都有成百上千的程式設計圖書上市,但也許可能只有2、3本是值得你花時間去讀的。
  2. 程式設計書論斤買,而不是論知識量。我們會有這樣一種感覺,程式設計書籍的厚度跟它的內容質量似乎成反比。書的部頭越大,裡面所承載的有用資訊越少。那些動輒上千頁的參考書究竟有什麼用?你真的會用它來查詢嗎?拿著都費力。
  3. 都是面向新手的速成程式設計書籍。我絲毫沒有反對新人進入程式設計領域的意思。但我從來都是認為“24小時[某種程式語言]速成教程”這類書對我們的這種職業是有害的。這種書都灌輸著一種短視的思想,求快,求最簡單的省事的做事方法,這導致初學者誤入歧途——或就像我喜歡提到的,“PHP”。玩笑!玩笑!
  4. 程式設計書籍色情化。有些人認為把一大摞厚厚的,看起來很重要的程式設計書放在案頭——基本上沒看過——會映襯出是一個水平很高的程式設計師。正如David Poole曾經有一次在郵件中跟我說的,“這種事情我是絕對不會做的”,說的正是這些程式設計書籍色情化的現象。這也是我經過思考決定拒絕購買Knuth寫的《計算機程式設計藝術》一書的原因。我們應該去買有實踐價值的書,你真正會去讀的書,更重要的,你能拿來實用的書。

作為一名書作者,我很慚愧。我和別人也合寫了一本程式設計書,而且我並不認為你應該買它。我不是在說反話。我想說的就是字面上的意思。但不管怎樣,那並不是一本很糟糕的書。我對我的書合作者懷有最大的敬意。但你能從網上找到比這本書更豐富的資訊。抱著一本死書不放是最不可取、最浪費生命的事。

網際網路無疑正加速程式設計書籍的死亡,但有一些證據顯示,甚至早在網際網路誕生之前,很少有程式設計師遍讀大量程式設計書籍。我很吃驚的在《程式碼大全》一書中看到了這樣的段落:

你可以炫耀一下了,因為你在讀這本書。你已經學到了比軟體產業裡大部分人都要多的知識,因為大部分的程式設計師一年都不會讀一本書(DeMarco and Lister 1999)。每天讀一點,堅持不懈,你就能成為專業高手。如果你能每兩個月讀一本好的程式設計書,大概一週35頁,你很快就能對業內的知識有堅實的掌握,能很快讓你從周圍所有的人中脫穎而成。

我相信早在《程式碼大全》1993年第一版時裡面就有這樣的原話,但我們無法證實,因為沒有那一版的書。經過這網上的搜尋,發現了Steve McConnell在《人件》中引用的段落:

關於讀書情況的統計數字讓人非常的洩氣:比如,大部分的軟體開發人員手頭上都沒有一本關於他們的工作方面的書籍,更不用說讀過一本。這事實讓人對這個領域裡的工程質量感到擔憂。而對於我們這些寫書的人,那更是悲劇。

我很痛心的讀到reddit上的這些評論,看到人們把stackoverflow.com網站的宗旨使命理解為對程式設計書籍的否定。懷著一種對當前程式設計書籍市場複雜的心情,我要說,我喜歡程式設計書!我這個程式設計部落格就起始於一篇推薦程式設計師必讀書籍的文章開始的。很多我的文章都是在講述我對於一些經典程式設計書籍裡的核心思想淺顯的理解。

如何讓這看似矛盾的語句能夠調和,如何能統一這動態的愛與恨?你看到了沒有,處處都有程式設計書籍,處處都有程式設計書籍。

優秀的程式設計書是沒有時間限制的。它們會超越語言的限制,IDE的限制和平臺的限制。它們不是解釋how,而是why。如果你每隔5年就不得不清掃一下書架,那請相信我,你買錯了程式設計書。

我的程式設計書櫃是任何東西都換不去的。我無時不刻都在使用它他們。事實上,我寫這篇文章時就翻閱了它們數次。

程式設計師都不讀書,但你應該讀

我不想再複述我的這些推薦的讀物,因為這些年我一直在拿它們炫耀。

可我必須要號召的是:我最喜愛的五本最重要的程式設計書,你們每個正在從事程式設計工作的程式設計師都應該有擁有——並且要讀。這些種子讀物,極富實用價值,年復一年,不論我做什麼樣的程式設計工作,它們從未貶值。它們值得一讀再讀,每次我有了更多年的經驗,回來重新閱讀它們,都會讓我對軟體工程獲得更深更明銳的認識,如果你還沒有擁有這些書,那你在等待什麼?

程式碼大全 《點石成金》 人件 《程式設計師修煉之道 《軟體工程的事實與謬誤》
程式設計師都不讀書,但你應該讀 程式設計師都不讀書,但你應該讀 程式設計師都不讀書,但你應該讀 程式設計師都不讀書,但你應該讀

我的主張,讓 stackoverflow.com這樣的網站成為這裡永恆經典程式設計書籍的有益補充。沒有任何途徑,東西,形式能替代這些書籍。

另一方面,如果你不幸是《Perl語言傻瓜書》的作者,那你要留意你的背後,因為我們很明確就是在針對你。

 

相關文章