1. 程式人生 > >程式設計師不愛讀書,但這很不明智

程式設計師不愛讀書,但這很不明智

StackOverflow.com的主旋律之一,就是軟體開發者不再照著書本學習程式設計了。Joel Spolsky曾經提到過:“程式設計師似乎已經不再讀書了。相比於程式設計師的從業人數,程式設計類圖書市場小得簡直不值一提。”

2004年,Joel發表了“The Shlemiel Way of Software”(軟體開發中的愚蠢方法),他表達了類似的觀點:“大部分人都不閱讀。也不寫作。大部分開發者不喜歡閱讀軟體開發方面的圖書,也不到網上去瀏覽相關的文章,他們甚至都不關心Slashdot.org上的新聞。”

這是一則笑話。Shlemiel是一位油漆工,他找了一份在馬路中間劃虛線的工作。第一天,他拎著一

油漆出去,一天下來總共劃了300碼。老闆對他讚許有加:“你真棒!幹活真麻利!”老闆給了他一個銅板作為薪水。第二天,Shlemiel只劃了150碼。老闆雖然有些失望,但一天劃150碼還算不錯,所以仍然給了他一個銅板。第三天,Shlemiel只劃了30碼。老闆勃然大怒:“怎麼只有30碼?!真是難以置信!你今天干的活只有第一天的十分之一。這到底是怎麼回事?”Shlemiel一臉委屈:“我也沒辦法啊!每天我都離油漆罐越來越遠……”——譯者注

如果當今的程式設計師已經不讀書了,那麼他們怎麼來學習程式設計呢?莫非還是那種最原始的方式:撩起袖子來就寫程式碼,與此同時,開啟另外一個視窗窺探著網路資源。網際網路已經把程式設計類圖書邊緣化了。線上獲取程式設計相關資訊的速度更快、更有效率、也更便捷。Doug McCune寫了一篇文章叫“Why I Don’t Read Books”(為什麼我不讀書),我相信他的感受相當有代表性。

公正地說,技術圖書出版業應該為此承擔主要的責任:

  1. 大部分程式設計類圖書都很差勁。據我所知,現如今出書已經不存在什麼門檻了。在魚龍混雜的圖書市場找出一本好書,並不見得比在曠野的網際網路上找到有用的資訊會更容易。在每年出版的數百本程式設計類圖書中,也許只有2~3本真正值得一讀。
  2. 程式設計類圖書不是一書一價,而是論斤來賣的。程式設計類圖書的厚度跟圖書的質量似乎存在著一種反比關係。書越厚,它包含的有用資訊就越少。這些“巨無霸”參考書究竟有什麼用?書重得都快拿不起來了,你怎麼還能用它來查閱?
  3. 面向新手的程式設計類圖書太急於求成。我並不是不歡迎新人進入程式設計領域。但我始終認為,像“24小時學會xx語言”這樣的圖書太急功近利了。所謂“欲速則不達”。這種只顧眼前以及求快、走捷徑的做事方式,會讓初學者誤入歧途——我稱之為“PHP”——我是開玩笑的!一笑了之!
  4. 程式設計類圖書有些像“色情文學”。有人認為,收藏厚厚的一堆看起來很重要的程式設計方面的圖書,即便它們大部分擺在書櫃裡未曾翻閱,你或多或少也會變成一位更為優秀的程式設計師。David Poole在寫給我的一封郵件裡提到,人們對這類“色情”書的態度是,“現實生活中我絕對不會那麼做的。”這就不難理解我為什麼會在Donald E. Knuth的《計算機程式設計藝術》面前猶豫再三,並最終沒有把它收入囊中。儘量去買一些實用的書吧,確保你會去讀它們,並且更為重要的是,你會把從書裡學到的東西付諸實踐。

作為一名作者,我很內疚!我曾經和別人合寫了一本程式設計方面的書,但我建議你不要買這本書(至今我仍然這麼認為)。我這麼說並不是為了譁眾取寵,只是就事論事而已。當然,那絕對不是一本爛書。至於跟我一起合寫那本書的其他作者,我對他們也保持著崇高的敬意。問題在於那本書涉及的內容,如果你從網際網路上獲取,會容易得多。相比之下,埋頭苦讀一本紙漿炮製出來的圖書絕對是一種生命的浪費!

Jeff Atwood曾經與Scott AllenWyatt BarnettJon GallowayPhil Haack等人合寫了《The ASP.Net 2.0 Anthology: 101 Essential Tips, Tricks & Hacks》,於20079月出版。——譯者注

網際網路無疑正在加速程式設計類圖書的死亡。但有證據表明,即使在網際網路誕生之前,程式設計師也沒有讀太多程式設計方面的書。翻閱《程式碼大全》,當我看到下面這段文字時,著實大吃一驚:

你應該覺得慶幸,因為讀這本書。你已經比軟體行業裡的大部分人懂得更多了,因為DeMarcoLister早在1999年就指出,大部分程式設計師一年讀不上一本書。讀一點書對於職業生涯的發展大有裨益。即使你每兩個月只讀一本優秀的程式設計類圖書(大概每週讀35頁),你也能很快把握住行業的脈動,並且讓你鶴立雞群。

我相信,上面這段文字在第一版的《程式碼大全》(1993年發行)裡也出現了,只是我沒有那個版本,也無從驗證。Steve McConnell提到的DeMarco和Lister的言論,我在他們的《人件》一書裡找到了:

有一個關於讀書的統計非常讓人沮喪:比如說,每個軟體開發者擁有的在他們專業方面的圖書平均不到一本,他們讀過的專業書也沒有超過人均一本。對於任何關注軟體行業健康發展的人來說,這個事實是非常令人震驚的!而對於像我們這些寫書的人來說,這也絕對是一場悲劇!

當我看到有人在reddit.com上曲解StackOverflow的使命,說我們讓程式設計師拋棄圖書,我感覺真的很受傷!面對當今的程式設計類圖書市場,我其實很矛盾,但我還是要說,我熱愛程式設計方面的圖書!我曾專門寫過一篇部落格文章,為開發者推薦了一個讀物清單。我現在的這篇文章也是基於那篇博文之上的。其實,在我寫過的很多文章裡,很多時候我都在儘自己的微薄之力,去解釋一些經典的程式設計類圖書裡早已闡明的關鍵思想。

參見Jeff Atwood剛剛推出的新書《高效能程式設計師的修煉》的附錄,人民郵電出版社(2013年7月)。——譯者注

這愛與恨的糾結啊!我該如何去調和它們之間的矛盾呢?那些程式設計方面的圖書,你愛或者不愛,它們都在那裡……

優秀的程式設計類圖書不受時間的影響。它們超越了對程式語言、開發環境或平臺的選擇,是永不磨滅的。它們並不停留在告訴人們怎麼去做,更解釋了背後的原因。如果你不得不每5年清理一次書櫃,相信我吧,你一定買了很多不該買的書。

我買過的書我都很珍愛。我書櫃裡的那些寶貝,你拿什麼來換我都不願意。我一直在翻閱它們。事實上,我在寫這篇文章的時候就查閱過兩次。


在這裡,我不想展開討論我給大家推薦的那個讀物清單。很多年以來,我都沒有修改過那個清單,為此我感到無比自豪!

然而,我真的很想振臂高呼:有5本非常棒的程式設計方面的圖書,每一位從業的程式設計師都應該擁有,並且認真閱讀。年復一年,不管我在做怎樣的程式設計工作,這些精華圖書都實實在在地給了我極大的幫助。它們值得反覆閱讀。我每隔幾年就會回過頭去重讀,在兩次閱讀期間新積累的經驗的作用之下,我每次都能在軟體工程方面獲得更為深入、更具穿透力的見識。如果你還沒讀過這些書,那你還在等什麼呢?

這5本書是:

  1. 《程式碼大全(第二版)》
  2. 《點石成金:訪客至上的網頁設計祕笈》(即《Don't Make Me Think》)
  3. 《人件》
  4. 《程式設計師修煉之道:從小工到專家》
  5. 《軟體工程的事實與謬誤》

我非常想讓Stack Overflow成為那些永不磨滅的經典圖書的有力補充,但不管怎麼說,也不管從哪個角度去看,那些書的價值是不可替代的!

但是,如果你碰巧是《Perl for Dummies》一書的作者,那你要小心了,因為我們肯定會向你“開火”的!

*****************************************
《高效能程式設計師的修煉》購買連結:

from: http://blog.csdn.net/happydeer/article/details/8997768