Jeff Atwood:程序員都不讀書,但你應該讀

英文原文:Programmers Don’t Read Books — But You Should 來源:外刊IT評論 

問答網站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. 編程書籍seqing化。有些人認爲把一大摞厚厚的,看起來很重要的編程書放在案頭——基本上沒看過——會映襯出是一個水平很高的程序員。正如David Poole曾經有一次在郵件中跟我說的,“這種事情我是絕對不會做的”,說的正是這些編程書籍seqing化的現象。這也是我經過思考決定拒絕購買Knuth寫的《計算機程序設計藝術》一書的原因。我們應該去買有實踐價值的書,你真正會去讀的書,更重要的,你能拿來實用的書。

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

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

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

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

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

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

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

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

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

程序員都不讀書,但你應該讀

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

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

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

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

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

 

推薦閱讀:

在IT行業工作如何獲得高薪?選擇前沿的技術,把準方向,有技術有人緣  http://www.it51share.com/archives/3520

 

 

工作7年,對技術的感悟與理解  http://www.it51share.com/archives/3612

 

IT人爲什麼難以拿到高薪?http://www.it51share.com/archives/3612

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章