作為一名程式設計師 需要不斷豐富自己的知識庫

programmer發表於2013-02-20

  IT技術的發展日新月異,新技術層出不窮,具有良好的學習能力,能及時獲取新知識、隨時補充和豐富自己,已成為程式設計師職業發展的核心競爭力。本文中,作者結合多年的學習經驗總結出了提高程式設計師學習能力的三個要點。

  眾所周知,現在是一個知識爆炸的時代,知識更新非常快。據測算,一個大學畢業生所學到的知識,在畢業之後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小時。當我們把學習的焦點放到與工作相關的知識上時,工作時間中的很大一部分,同時也就成了寶貴的學習時間,這真是一舉兩得的美事啊。

  問題是最好的學習機會

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

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

  織網式學習

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

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

 

 圖1 由知識點形成知識網

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

  經常思考總結

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

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

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

  克服“高原現象”

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

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

圖2 知識技能學習曲線

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

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

  要有好心態

  學習要靜心

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

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

  學習是持續一生的過程

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

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

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

  保持飢餓,保持愚蠢

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

  作者尹華山,資深軟體工程師,現從事IT專案管理工作,擁有PMP認證、資訊系統專案管理師認證、系統整合高階專案經理認證。

相關文章