1.學習另一門語言 不管你已經(jīng)了解多少種語言,學習另一門語言都會幫你打造成更好的程序員。能學會一門與你日常使用的語言風格迥異的 語言則更佳。打個比方,如果你是C#程序員,學習VB.NET或者Java對你的幫助就沒有學習Ruby或者Groovy大。 學習一門語言包括三個領(lǐng)域的知識:語法、內(nèi)置操作符和庫,以及“如何使用”。我們要真正學會它。前面兩個簡單;我認為一名有經(jīng)驗 的程序員,根據(jù)語言的不同,能在半小時到幾小時內(nèi)掌握足以維護代碼的語法知識。操作符和庫只不過是知識逐步積累的過程,你什么時候想清楚要了解什么了,再 去查閱參考材料也不遲。只有第三項,“如何使用它”-要花上你幾個月的時間去跟這門語言打交道,直到用這門語言的風格去做一個適合的項目。真正掌握了一門語言之后,我相信奇跡會發(fā)生,你的水平一定會突飛猛進。
2.幫助別人 教別人始終是學習一切東西的最好方法之一。相對而言,由于你在開發(fā)領(lǐng)域還是個新手,認為自己沒什么可教給人家的,這可以理解。但這毫無意義。記住,你所學 到的一切都是你從別人或別處學到的;因此請嘗試一下,成為另外一個人要請教的“別人”。每天盡量花一點時間試著回答TechRepublic上的問題,其 他網(wǎng)站的亦可。讀讀其他會員的回答,你也可以學到很多東西。
3.接觸先進的搜索技術(shù)、手段和及策略 作為一名好的程序員,不僅僅是技能的問題了,而是你尋找信息的技巧,這個趨勢越來越明顯。對大部分人而言,僅僅輸入“現(xiàn)代語言及開發(fā)框架”,這都是泛泛之 談,記不住多少的。因此,你完成工作的能力通常取決于你的檢索能力。不幸的是,了解到如何找到準確而高質(zhì)量的信息可不僅僅是跑到TechRepublic 來找答案,或者在你選好的搜索引擎上敲幾個字那么簡單。 “技術(shù)(Techniques)”、“手段(tactics)”和“策略(strategies)”看起來是一回事,實際上并非如此。你需要學會的技術(shù)是 掌握你喜愛的搜索引擎的高級搜索系統(tǒng);你需要了解諸如布爾操作符,如何過濾結(jié)果(像“非”關(guān)鍵字,域限制等等),關(guān)鍵字的詞序扮演什么角色,等等。 你應(yīng)該學會這些手段,諸如如何接近特定的搜索,以及了解自己實際上想查些什么。 至于策略,你需要學會的東西,包括像應(yīng)該使用哪種搜索引擎(提示:普通的搜索引擎不一定就是最佳選擇),使用普通搜索引擎前應(yīng)該訪問哪個網(wǎng)站,甚至是應(yīng)該 到哪個論壇去尋求幫助,等等。
4.學習高級程序員的代碼 在工作中看看高級程序員寫的代碼,然后問一問事情是如何以某種特別的方式完成的,為什么?可能的話看看開源的項目。甚至即使其他程序員沒有最好的編程習 慣,你也會學到許多編程經(jīng)驗。當然,要小心別學到壞習慣。我的意思是說不要生搬硬套人家的東西;你要能領(lǐng)會到哪些是能行的通的,哪些是有道理的,然后再模 仿人家。
5.多多練習,持之以恒 研究表明,要成為一名“專家”,需要花費10年,或者10000到20000小時的刻意練習時間。真的很久。還有,成為專家不盡然就是執(zhí)行10年同樣的任 務(wù);通常這意味著要在特定領(lǐng)域內(nèi)執(zhí)行廣泛的任務(wù)。需要花費大量的時間和精力才能成為“專家”;做幾年程序員是不夠的。想在30歲左右成為一名高級軟件開發(fā) 工程師?要么盡早接受教育/培訓,要么你得愿意在閑暇時間進行大量的工作、閱讀和練習。我從高中開始編程,還犧牲了許多休息時間去跟蹤行業(yè)發(fā)展、學習新技 能等等。結(jié)果,我獲得中級和高級程序員的時間就比我的大部分同事都要早得多,隨著時間的推移,這些就轉(zhuǎn)化成為很多的金錢。
6.深入學習一點先進理念 成為一名中級程序員,很大一部分是要在代碼里面體現(xiàn)出一些所擅長的概念。就我而言,是多線程/并行性,是正則表達式,以及如何對動態(tài)語言進行變化(后兩個 在我離Perl漸行漸遠后開始退化)。我做過一件工作,是用Perl寫的,里面運用了大量的正則表達式。我也用一個過程引擎模板和內(nèi)置數(shù)據(jù)庫系統(tǒng)寫過我自己的電子商務(wù) 引擎;那時我?guī)缀趸?年時間在這上面。 找到真正令你著迷的東西。也許是圖像處理,也許是數(shù)據(jù)庫設(shè)計,等等。即便你是一個入門級的程序員,也要嘗試一下成為某一自己所關(guān)注領(lǐng)域的專家。這會讓你相 當快速地進入到中級水平,一旦你到了那個水平,你的專家之路也走到一半了。
7.學習你的領(lǐng)域里面的基本理論 寫出“Hello World”,跟理解那些字是如何顯示到屏幕上的是兩碼事。通過學習支撐你所從事的工作的“基礎(chǔ)/底層工作(groundwork)”,你會變得更加在 行。為什么?因為你會理解事物為何會以這種方式運作,當東西壞了就能知道是哪里的問題,等等。通過掌握工作的底層機制,你變會得更出色。 如果你是Web程序員,讀讀HTTP RFC和HTML規(guī)范。如果你使用代碼生成器,好好看看它生成的代碼,不一而足。
8.培養(yǎng)好的習慣 愚蠢的變量名,糟糕的縮進習慣以及其他一些凌亂的跡象就是一個沒有經(jīng)驗的程序員的最好標記。一個程序員在學會如何編程時,卻經(jīng)常沒有被傳授到那些不那么有 趣的細節(jié),像代碼格式編排。甚至盡管學習這些東西并不會令你的代碼更好,也不會令你成為更好的程序員,它也會確保你不被同事視為入門級的程序員。甚至即使 某人是高級程序員,如果他的變量是以他那97只貓的名字來命名,或者其函數(shù)叫做“doSomething()”