1. 程式人生 > >如何提高程式設計師學習能力?

如何提高程式設計師學習能力?

眾所周知,現在是一個知識爆炸的時代,知識更新非常快。據測算,一個大學畢業生所學到的知識,在畢業之後2年內,有效的不過剩下5%。對於軟體行業而言,這種形勢更為明顯,我們賴以立足的,不在於我們現在掌握了多少知識,而是我們有多強的學習能力。

學習人人都會,但不同的人學習效果卻千差萬別。一個善於學習的人,首先應該是一個善於讀書的人,懂得如何高效地學習,並且擁有良好的心態。唯有如此,才能成為一個卓有成效的學習者,成就卓越的程式人生。

要善於讀書

買書是最划算的投資

古人云:“書中自有黃金屋,書中自有顏如玉。”這說明先賢們早認識到,買書是最划算的投資。

我剛出道時,拿著非常微薄的工資。有一次向主管抱怨道:“現在的書真貴啊,這點工資連飯都吃不起,更別說買書了!”主管對我說:“不要吝惜買書的錢,寧可忍著不吃飯,也不要忍著不買書,因為買書是回報率最高的投資。”

主管的話讓我非常震動。後來,我看到喜歡的書時,再也沒有手軟過。通過不斷學習,我的開發能力不斷提高,工資水平也大幅提高。一年後,我一個月工資的漲幅,就足夠買兩年的書了。你說,還有比這更划算的投資嗎?

一本書,哪怕只有一頁紙是有用的,它所將產生的潛在價值,也會遠遠超過書本身的價格。當然,書不在多,踏踏實實消化掉一本好書,比泛泛而讀10本普通書,要有價值得多。

多讀經典書

現在市面上給程式設計師讀的書種類非常豐富。人生有涯,我們只能有選擇性地看,要多看好書、多看經典書。

軟體開發方面的圖書大致分為三類。

1. 淺顯的入門類圖書。這類書的標題往往是《XX天精通XXX》、《XXX從入門到精通》、《XX開發實戰》等,通常從軟體的安裝講起。有人批評這類書為爛 書、毫無價值,這並不公平。至少我曾經從這些書中學到了一些東西。即使是21天系列書,也有適合看的人群。只不過,它一般也就只能看21天而已,過後就可 以扔到廢紙堆。這類書只適於還沒有入門的初學者,從中學到一些入門招式。在剛起步時一般買一本就夠了。如果你善於使用搜索引擎,那幾乎沒有買這類書的必 要。

2. 國內外高手寫的實戰類圖書。這類書實戰性很強,將技術及原理講得很透徹。比如《Windows環境下32位組合語言程式設計》、《深入解析MFC》、 《Delphi深度探索》、《深入淺出WPF》、《深入剖析ASP .NET元件設計》等。以前這類書都是從國外翻譯或從臺灣引進的,現在國內高手越來越多,出自國內作者的圖書也越來越多。如果能在學習的每個方向看兩三本 這類圖書,並通過實踐消化掉,那麼毫無疑問,你會成為一名優秀的程式設計師。

3. 國外大牛寫的揭露本質、有豐富思想的書。這類書就是所謂的經典書,例如《程式碼大全》、《程式設計珠璣》、《設計模式》、《重構》、《程式碼整潔之道》等。經典書 就像一個有深度、有思想的朋友,能給你啟發,每次閱讀都會有新的收穫,這類書具有真正的收藏價值。看經典書永遠是正確的選擇,它絕不會浪費你的時間,因為 經典書是無數人沙裡淘金、幫你挑選出的結果。

然而,閱讀這類書並不是一件容易的事情。讀者需要有豐富的開發經驗,才能與作者產生共鳴。如果一本經典書你看得很辛苦,那麼很有可能是因為你功力未夠,這種情況下不要著急,慢點來,不妨先將其束之高閣,多看看實戰類圖書。過一段時間再回頭來看,也許你會有新的驚喜。

不要在上班時間看書

一個善於學習的人,首先要善於利用一切時間來學習。雷鋒曾說過:“時間就像海綿裡的水,只要願意擠,總還是有的。”然而,當我們從上班時間中擠時間學習時,就千萬要注意了,不要在上班時間看書!

上班時間看書,不但是一件很敏感的事情,而且非常吸引眼球,很快就會引起周遭的不爽。首先老闆心裡不爽:“我給你錢是讓你來工作的,不是來學習的”;其次同事們也不爽:“我們工作都做不完,瞧,這小子真閒啊”。用不了多久,你就會成為被眾人排斥的異類,這最終會讓你自己“很受傷”。

要高效學習

只學習與工作相關的東西

我曾發現不少程式設計師在學習方面找不到方向,一會兒學學C#,一會兒學學Java,看了最新的程式語言排行榜,又覺得該學C++。這樣左抓抓,右撓撓,只會讓你覺得更癢。

學習最忌三心二意。俗話說:“傷其十指不如斷其一指”,每門都學一點,還不如專心學好一個方向。這個道理誰都懂,可是又該學哪個方向呢?難道只能跟著感覺走嗎?不!最實際的方向,應該跟著工作走,工作需要什麼,我們就學什麼,把工作需要的技能熟練掌握,有很多好處。

首先,可以集中精力,在某一方面鑽研得更加深入。所謂“百招會不如一招絕”,有了絕招,你還怕不能在“武林”立足嗎?《天龍八部》中的慕容復武功博學無比,最後還不是被只會一招六脈神劍的段譽打得落花流水?

其次,可以學得更快、更深入,因為學習更具有針對性,而且可以立即在工作中運用,可以馬上檢驗出學習的效果。對存在的問題進行深入研究,掌握的知識也會更加牢固。

再次,學習與工作結合在一起,工作時間也就成了學習時間,這樣就突破了三個8小時的限制:有人說,我們每天所擁有的時間可以分為三個8小時,工作8小時,睡覺8小時,另外還有8小時可以自己自由支配。工作和睡覺的兩個8小時大家都一樣,決定人生高度的是另外這個8小時。當我們把學習的焦點放到與工作相關的知識上時,工作時間中的很大一部分,同時也就成了寶貴的學習時間,這真是一舉兩得的美事啊。

問題是最好的學習機會

日本經營之神松下幸之助曾說過:“工作就是不斷髮現問題、分析問題、最終解決問題的過程,晉升之門將永遠為那些隨時解決問題的人敞開著。”可見,工作過程中有問題是正常,沒有問題才是真正的問題。在發生問題時,能勇於面對問題、解決問題的人,才是公司真正的骨幹。

現實中,很多人總是千方百計迴避問題。當上司安排一項艱鉅的任務時,也想盡辦法推託。殊不知,對於個人而言,問題其實是最好的學習機會。往往那些願意接受困難工作的人,能力會越來越強,那就是因為他們在克服困難的過程中取得了巨大的進步。

織網式學習

知識的廣度和深度都很重要。作為一名程式設計師,能深入把握技術細節,是寫出優質程式碼的保證。但對於一名專案經理而言,知識的廣度更顯重要。專案中碰到的問題往 往具有綜合性,只有具備廣博的知識,才能快速對問題進行分析和定位。在程式設計師成長的道路上,我們必須有意識地擴大自己的知識面,形成更完善的知識體系。

我曾經編寫過一個網路資訊採集軟體,這個軟體可以從具有列表頁的網站中按欄位設定採集資訊,支援自定義欄位、頁面多級關聯、下載附件、支援多種資料庫、可視 化定義等特性。剛開始,我認為這個軟體只是一個比較大的功能點而已,後來發現這個不起眼的功能關聯著大量的知識點(如下圖所示)。

在開發過程中,我順藤摸瓜,逐個擊破,對很多知識點進行了細緻的學習研究。軟體開發完成後,我的知識體系網也進一步得到了補充和完善。

經常思考總結

子曰:“學而不思則罔”。人只學習不思考,就會迷惑,難以把握事情的本質。這就好比一個學武之人,只習得其形,而未得其神,難以成為真正的高手。

從入門到成為高手的過程中,程式設計師往往要經過幾次頓悟。記得有一次,我領悟到了一個很簡單的結論:“原來高階程式語言中的類庫是封裝了Windows API來實現的。”後來碰到一些自帶類庫無法實現的功能時,我就會想到,其實可以通過呼叫Windows API來實現。利用這個思路,我解決了一些看起來很難的問題,得到老闆的賞識,從而很快獲得提升。

頓悟非常可貴,然而它不是隨便發生的,而是經過一次次苦苦思索之後、靈光閃現的結果。思考的過程,其實就是將外在知識內化為自己的知識的過程。而頓悟,則批量實現這種內化,將無數個知識點連線在一起,達到融會貫通的境界。

克服“高原現象”

愛學習的人都會有這樣的經歷:學習持續了一段時間之後,往往會有一個瓶頸期,長時間似乎都沒有什麼進步,於是內心非常著急。

這種情況,實際上是由人的學習規律決定的一種“高原現象”。據研究,學習者在剛開始進步快,隨後有一個明顯的或長或短的進步停頓期,後期進步慢,中間的停頓期叫高原期(如下圖所示)。

高原期,實質是一個消化期。由於前期的學習積累了太多的知識點,這些知識點在大腦中亂作一團,還沒有形成一個知識體系。這時需要一定的時間來消化它,讓它融會貫通,經常思考總結可以快速幫你跨過高原期。

處於高原期時,還可以換一個相關的方向來學習。例如,程式語言學不下去了,可以學習一下設計模式,設計模式也學不下去了,再換成資料庫。通過學習這些相關的知識,不但補齊了知識體系中的短板,而且各個知識點之間可以互相啟發,幫助你實現頓悟,跨過高原期。

要有好心態

學習要靜心

急於求成是學習過程中普遍存在的一種心態,這可以理解。畢竟作為一名程式設計師,要學的東西實在太多,而社會又是那樣的浮躁,讓人覺得一切都是那樣的不安全、不確定,似乎只有學得快一點,才能跟上社會的腳步。

可是“欲速則不達”,想快快地學,往往會形成東一榔頭、西一棒槌的學習方式,每一個點都沒有吃透。心沉不下去,知識也會沉不下去。要想成為真正的高手,只能靜下心,一步一個腳印慢慢來。

學習是持續一生的過程

人生,就是一個自我完善過程。

子曰:“吾十有五而志於學,三十而立,四十而不惑,五十而知天命,六十而耳順,七十而從心所欲,不逾矩。”可見孔子也不是天生的聖人,也在不停地學習、進步,從“志於學”到“從心所欲,不逾矩”,孔子一共花了55年的時間。

作為一名程式設計師,更需要不斷豐富自己的知識庫。我們所知道的東西,就像一個白色的圓圈,圈外則是黑暗的未知的世界。當圓圈越大,所接觸到的黑暗部分就越多。我們只有不停地學習,才能打破更多的黑暗,找到更多光明。

保持飢餓,保持愚蠢

我非常喜歡喬布斯的一句話:“求知若飢,虛心若愚”(Stay Hungry,Stay Foolish)。其實我更喜歡它更原生態的翻譯“保持飢餓,保持愚蠢”。我們只有認識到自己還很飢餓和愚蠢,才會像沒吃飽一樣,由衷地需要學習、愛上學習。