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