很多做編程朋友都喜好讀書的。但為什么要讀書?讀什么書?讀多少書?如何讀書?這都成了很大的問題。我想就這些問題談談我自己的看法。注意,本文讀者最好是那些時間不多,希望通過讀一些好書能有大收獲的朋友。如果那種只要是技術(shù)書都要去讀讀的朋友,你的精力和時間實在太多了,本文應該不適合你。
首先,在中國,程序員只能靠讀書來提高自己的編程或設計能力,這本身其實是很無耐的,因為國內(nèi)軟件編程方向的教育已經(jīng)遠遠落后于編程業(yè)的發(fā)展了。名師鳳毛麟角,能夠聽到名師的課的人非常少。運氣好,進了大學或者公司,有個高手師兄或者大牛同事帶一帶,成長會快些。否則,要想提高,除了讀書,還真是沒有別的辦法。由于本人曾經(jīng)做過數(shù)學教師,我很清楚,數(shù)學學習如果只是給你幾本參考書,然后就能高考得高分,那是不可能的(你如果例外,只能說你是天才,沒有普遍意義)。讀書永遠沒有好老師的好教學來得有效(注意需要強調(diào)“好”字)。因為老師和學生之間是有互動的,是在一個交流的氣氛中學習,而不是讀書的那種完全單方向的信息傳遞。現(xiàn)在有了網(wǎng)絡視頻錄像,情況得到了很大改善。不過視頻同樣存在只能告訴你東西,而不能最快速的解決你碰到的疑問的單向信息傳遞問題。比如你看了一個視頻學習如何用VS2008寫一個HelloWorld程序,可是你始終找不到視頻里提到的“解決方案資源管理器”(原因是之前你或別人無意將它關(guān)閉了),或許你費了很大力,終于明白在工具欄上有按鈕或者菜單中可以打開它,但是你的挫敗感就很強烈了,這對于初學者來說,是很不爽的。如果有個老師,或者旁邊有個同學,這種問題幾秒鐘就能解決。再比如你看了策略模式的教學書或視頻,可是為什么一定要用策略模式呢?我不可以用簡單工廠嗎?不可以用裝飾模式嗎?你的問題一個接一個,書中沒有答案,答案只能依靠自己去想。如果你堅持去想,你會有“悟”通的一天,但是更大的可能是,算了,設計模式也太難了,以后再研究吧。因此我覺得多讀書當然好,不過編程能力通過讀書顯然不是唯一,更不是最好的辦法。不過就目前的國內(nèi)現(xiàn)狀來講,讀書或許是在你沒有老師的前提下最好的提高途徑,尤其是初學者,系統(tǒng)看一些好書,學習一項技術(shù)是很有必要的,只靠實際的做項目來提高極有可能會發(fā)展不全面(培訓學校我不推薦,因為騙錢居多,好教師太難找)。
然后是讀什么書的問題。現(xiàn)在很多過來的朋友都推薦了一些好書,這些好書大多是經(jīng)過時間驗證,的確是難得的精品,看看一些網(wǎng)上書店的排名和評論就大概知道好書是哪些。不過問題又來了,是不是這些書都適合我閱讀呢。答案不是,并不是只要是好書就適合讀者閱讀的。從技術(shù)書的分類來看,簡單的分就有程序設計、軟件工程、數(shù)據(jù)庫、網(wǎng)絡、圖形圖像等等;從技術(shù)難度上分,就有入門讀物、進階讀物、高級讀物等;從寫作形式上分,有教材類、論文類、休閑類等;從價位上,有10-30、30-60、60-90、90-搶錢沒商量價等;從書的厚度或閱讀時間來講,有三天讀完、兩周讀完、兩月讀完、半年讀完、閱讀三遍、終生閱讀等分類;當然最重要的分類,應該是垃圾書、一般書、可讀書、精品書、必讀書等。換句話說,僅僅是告訴你,編程書好書有哪些是遠遠不夠的,往往會讓讀者根本沒辦法去區(qū)別這個好書是不是適合自己,是不是應該要現(xiàn)在閱讀,是否有必要全部讀完。當然,商家是不會做這么細致的分類的,沒有什么商家會告訴你,本書是垃圾書,本書不適合低手閱讀,本書太厚沒時間不要讀,本書很貴買前要慎重、本書只有三章可以一讀等等。但作為讀者,如果你沒有這種多角度分類的思考去找書的話,你或許會迷失在書的海洋中,無以自拔。打個比方,盡管這個比方我已經(jīng)打過很多次,GoF的《設計模式》的的確確是好書,但真的不是每個編程者需要去閱讀的,至少不是一開始去閱讀的,如果你是非面向?qū)ο蟪绦騿T(比如嵌入式開發(fā)),你是關(guān)系數(shù)據(jù)庫開發(fā)者(比如存儲過程開發(fā)者),你是UI設計者(偏設計但涉及程序的那種),甚至你是面向?qū)ο缶幊坛鯇W者,我都建議你不要讀它,真的沒什么必要,只有等你真的已經(jīng)達到一定的開發(fā)量了,真的有必要提高自己的編程和設計能力的時候再去閱讀它。總結(jié),一定要讀經(jīng)過時間檢驗的好書,看在這些好書中,需要分分類,需要多多思考自己是不是真的適合當前閱讀。
接著,就是讀多少書的問題了。好書很多,不是一本,不是十本,而是幾十本上百本。有些書是全本都好,有些書是部分章節(jié)優(yōu),有些書有很強的時效性(比如現(xiàn)在去閱讀一些asp.net 1.0入門經(jīng)典方面的書可能就沒有與時俱進了)。是不是有必要把相同類型好書都讀了呢?我看沒什么必要。比如你要學習asp.net,你真有必要把這方面的好書都閱讀一遍嗎?讀一本足矣。畢竟這里更加需要的是練習而不是閱讀了。而要讀的這一本書就應該是精讀,甚至反復讀。其實。因此別的行業(yè)可能很需要參考書,我看編程行業(yè)基本不需要參考書,Google百度就是最好的參考。思想層面的,比如設計、分析、項目管理等方向的,可能要多讀一些。但書實在是貴在精而不是多,還是以設計模式為例,入門讀《Head First設計模式》,進階再去讀GoF的《設計模式》就足夠了。當然,像《Java與模式》、《設計模式解析》都是好書,你有精力可以多讀,沒精力,那就不讀也罷。
跟著,也是比較關(guān)鍵的,就是如何讀的問題,本來這個問題不應該我來多說的,讀書嗎,從頭讀到尾就行了,但其實這里學問還真是不少的,技術(shù)書還是很有區(qū)別于一般的小說書的。如果你只是簡單的理解為讀書就是花點時間,從頭讀到尾的話,你從這本書得到的收獲是很小的。首先,技術(shù)書,并不一定都是需要從頭讀起的。這要看是什么書,特別是應用級的書,往往是你當前最需要了解的技術(shù),你需要多花時間去研究相關(guān)的章節(jié)。好的書通常都會在前言就告訴你,應該如何去讀這本書。我記得《敏捷軟件開發(fā):原則、模式與實踐》書中前言就寫得很清楚什么樣的讀者應該更加關(guān)注什么樣的章節(jié),特別他提到如果你覺得無聊就看看書后的兩個故事,哈,我還真是在一次沒事做時,去認真的閱讀了那兩個項目開發(fā)對比的故事,感覺非常好。技術(shù)的學習不是看完書就完全理解的,更不是看完就能馬上應用自如的,一項技能要經(jīng)過知道、理解、掌握、應用等等過程。我強烈建議讀者朋友在精讀一本書時,一定要手拿著筆,最好旁邊再有一本筆記本(紙)和一臺筆記本(電)(哈,PC當然也沒問題)?吹胶玫木渥右浀焦P記本上(別懶,這其實不是讓你以后去看你抄的東西,而是讓你在抄的時候,放慢你閱讀的速度和節(jié)奏,而把大腦緊緊的集中在這個知識點上),有句話說,在一個人用筆寫東西的時候,他是不可能分神去想別的事情的。這對于記憶和理解是非常有幫助的,簡言之,不動筆墨不讀書(非?上,現(xiàn)在我已經(jīng)很少看到喜歡記讀書筆記的朋友了,有些人可能一年除了簽名都寫不了幾個字,這實在是一大悲哀)。那么旁邊那臺筆記本或PC要來干嗎呢?不是讓你來玩游戲的,更不是讓你和MM聊QQ的,而是用來寫代碼的,代碼只是看看是沒用的,一定要自己打一遍,最好的效果是看懂了后,根據(jù)自己理解的來編,效果差一些的是照著書中的抄一遍,但無論哪種都比你根本不寫只是看要強。我見過不少朋友買了書,可能連隨書的光盤封套都沒拆過,又或者光盤中的代碼只是簡單的運行一下。沒有認真的模仿打一遍,這都是不好的學習方法。有些人認為書讀完了,應該就差不多都掌握了,其實未必。不知你有沒有過看一部電影,過段時間再看第二遍發(fā)現(xiàn)很多很有意思東西原來根本沒在意。特別是英文字幕的片子,看第一遍甚至根本就不懂,看第二遍就輕車熟路這種情況不是很多嗎。讀書也是一樣的,好書絕對有必要多讀,常讀。否則理解可能還是會很片面。
最后,還得提一提兩個細節(jié)問題。 關(guān)于電子版和紙版書的閱讀問題。有些朋友喜歡收藏電子版的好書,一收藏就是幾十上百本,可惜真正看完的可能是零頭。書是用來看的,這些放在硬盤里不看的圖書,不如刪除更換為幾部AV短片(畢竟后者看的可能性要大得多)。但為什么這些好書,卻不能好好閱讀呢?這也不能全怪讀者,而是電子版圖書天生有其不足之處。第一,它不方便攜帶,它一定要在電腦面前才能閱讀(特指有圖有代碼的編程技術(shù)電子書),不像紙質(zhì)書那樣可以在地鐵公交甚至廁所里閱讀;第二、長時間傷眼睛,書不同于短的文章,在電腦面前長時間閱讀很容易疲勞,特別是要學習技術(shù)的書,看紙質(zhì)書會更舒服一些;第三、不方便批注,盡管有的軟件可以解決這問題,不過怎么使用不如紙質(zhì)書來得方便;第四、有些電子書不清晰,有可能直接是把原書掃描而得,這顯然無法和紙質(zhì)書相比,閱讀情緒會產(chǎn)生很大影響。所以,只有在能完全克服這些困難的人才可以通過閱讀電子書來學習。不過現(xiàn)在老外的有些英文原版電子書制作得非常精良,在美元跌落卻依然購買不起紙質(zhì)書的前提下,閱讀好的電子書也是不錯的選擇。
關(guān)于圖書館借書還是自己買書看的問題。有句俗語叫“書非借不能讀也”。說的是因為自己的書,會有一種反正已經(jīng)擁有,有空再讀的想法,造成反而很長時間都不去閱讀。而借的書因為有還期,所以抓緊讀的機會還更大一些。加之圖書館借書可以省很多買書的錢,所以去圖書館借書也是不錯的選擇。不過圖書館的書很難跟得上時代,很多都太老了,有些新書圖書館雖然引進了,但因為搶手也很難借得到,特別好書,基本都要碰運氣才行,加之有些書一個月外加一個月續(xù)借的時間很難讀完。所以借圖書館的書是好辦法,但有些書借不到時,還是要考慮購買。但盲目的購買圖書顯然不是好辦法。說到買書,不妨幾個同事相約買書,這樣可以平攤的購書的成本,另外網(wǎng)絡購書優(yōu)惠不少,也是不錯的選擇。
總之,在國內(nèi)的大環(huán)境下,讀書還是編程工作者提升技術(shù)能力的最好辦法。那么上面所談到的問題,也就顯得非常的必要。希望本文可以給你的技術(shù)書閱讀有所幫助,我的看法也可能有失偏頗,大家一起討論。但不管你是否同意,留句話,那盡管我花這么幾個小時打字的勞動也甚感欣慰了。
|