秒變大牛!給中級程序員水平突破瓶頸的10個建議!
譯文【51CTO.com快譯】
首先我們要知道,在程序員這個職業中,究竟是天賦重要還是興趣和努力重要?
而我的回答是,說天賦重要的人,只是在為自己不如別人刻苦而找出的借口。我最近也讀了很多有關如何提升自我水平的文章,大部分文章以K. Anders Ericsson的研究結論為出發點的文章,也就是說天才的成就,雖然和他的天賦有一定的關系,但心理學家越是深入考察天才們的人生經歷,就會發現天賦到了后期它的作用會越來越小,而后天儲備的作用卻越來越明顯。
我發現大多數人提升的編程水平,所推薦的方法是一些很基礎的事情。如,閱讀代碼、理解代碼、編寫代碼、參加項目、討論代碼等等……當然,這些作法確實能夠幫助程序員提升水平,但其實際效果顯然是非常小的。
下面我會結合自己學習編程的經歷,跟大家聊聊其中的優勢與弊端:
1.通過編程競賽進行實踐
我會參加各類編程競賽,總體來講,用比賽來學習新語言并不現實。它提供的反饋循環較弱——我們只能了解到自己的程序能否正確輸出,但設計流程不會受到評判。這種方法只能幫助大家了解新的算法或者特性,但在實踐層面來講,效果偏弱,它更著重“表現”而非“實踐”。
2閱讀關于編程的書籍
閱讀相關書籍能夠幫助我們快速提升知識儲備,因此有關“水平提升”方案都會有這項要求。在這里給大家推薦5本非常棒的編程圖書,這些精華圖書都實實在在地給了我極大的幫助。它們值得反復閱讀,且每次都能讓我在軟件工程方面獲得更為深入、更具穿透力的見識。如果你還沒讀過這些書,那你還在等什么呢?
這5本書是:
-
《代碼大全(第二版)》
-
《點石成金:訪客至上的網頁設計秘笈》(即《Don't Make Me Think》)
-
《人件》
-
《程序員修煉之道:從小工到專家》
-
《軟件工程的事實與謬誤》
3.學習快速搜索技術、手段
作為一名好的程序員,不僅僅是技能的問題了,而你尋找信息的技巧也非常重要,而這個趨勢會越來越明顯。你應該學會,如何接近特定的搜索,以及了解自己實際上想查些什么,信息篩選可以通過組建思維知識圖譜來提升。***搜索多了,經驗上去了,就知道一些高質量的網站和一些通常的說明文檔位置,使得你的問題的求解更加容易,包括像應該使用哪種搜索引擎(提示:普通的搜索引擎不一定就是***選擇),使用普通搜索引擎前應該訪問哪個網站,甚至是應該到哪個論壇去尋求幫助,等等。
4.幫助別人
如果可能的話,幫助那些尋求幫助的人。這是一件很好的事情,也是聰明人的做法。教別人始終是學習一切東西的***方法之一。記住,你所學到的一切都是你從別人或別處學到的;因此請嘗試一下,每天盡量花一點時間試著回答網站上的問題,其他網站的也可以。就算讀讀其他人的回答,你也可以學到很多東西。
5.多編碼才是王道
研究表明,要成為一名“專家”,這至少需要花費10年的時間,或者10000到20000小時的刻意練習的時間,做幾年程序員是不夠的。
想在30歲左右成為一名高級軟件開發工程師?要么盡早接受教育/培訓,要么你得愿意在閑暇時間進行大量的工作、閱讀和練習。我從高中開始編程,還犧牲了許多休息時間去跟蹤行業發展、學習新技能等等。結果,我獲得中級和高級程序員的時間就比我的大部分同事都要早得多,隨著時間的推移,這些就轉化成為寶貴的經驗。
6.看看高級程序員的代碼
在工作中看看高級程序員寫的代碼,然后問一問他們為什么以某種特別的方式來完成這個項目,也可以學習他好的編程習慣,從中得到反思。但值得注意的是不要生搬硬套別人的東西;你要能領會到哪些是能行的通的,哪些是有道理的,然后再模仿人家,并不斷摸索適合自己的語言。
7.態度是關鍵
如果你不喜歡自己的工作,且目前的水平還是初級,那么如何成為中級的水平或者讓情況有所好轉,不妨換工作或改職業吧。反過來說,如果你喜愛所從事的工作,那就好!少一些浮躁,沉下心來體會技術的真正精髓,踏踏實實的做,最終會有一個好的歸宿。只要你堅持下去,我保證你能成為一名更好的程序員。
每個人都有自己成長的方式,以上建議僅作參考,祝你能夠早日找到一條屬于自己的光明大道!
原文鏈接:http://ericdykstra.me/blog/improving-as-an-intermediate-programmer
原文標題:How Does One Improve as an Intermediate Programmer?
原文作者:Eric Dykstra
【51CTO譯稿,合作站點轉載請注明原文譯者和出處為51CTO.com】