程序員的快速成長之路

在一封與TechRepublic會員交流的郵件當中,他提到了面向程序員的博客、文章及雜誌分紅兩類:面向初學者類("hello world"這種類型的教程)以及面向專家類(MSDN雜誌)。這個觀點很好,有關程序員如何從初級躍升到中級的信息極少。如下是爲了實現這種轉變須要你去作的10件事。程序員

1. 學習另外一門語言

其實你學的是哪一門語言並無關係,可是學習另外一門語言(無論你已經瞭解多少種語言)將把你打造爲更好的程序員。能學會一門與你平常使用的語言風格迥異的語言則更佳。打個比方,若是你是C#程序員,學習VB.NET或者Java對你的幫助就沒有學習Ruby或者Groovy大。正則表達式

我說"學另外一門語言"的意思是要真正學會它。學習一門語言包括三個領域的知識:語法、內置操做符和庫,以及"如何使用"。前面兩個簡單;我認爲一名有經驗的程序員,根據語言的不一樣,能在半小時到幾小時內掌握足以維護代碼的語法知識。操做符和庫只不過是知識逐步積累的過程,你何時想清楚要了解什麼了,再去查閱參考材料也不遲。只有第三項,"如何使用它"-要花上你幾個月的時間去跟這門語言打交道,真正的奇蹟就在此發生。我建議用這門語言的風格去作一個適合該語言的項目。數據庫

真正學會了另外一門語言以後,我敢保證你的程序員水平必定會日新月異。編程

2. 學習先進的搜索技術、手段和及策略

做爲一名好的程序員,不只僅是技能的問題了,而是你尋找信息的技巧,這個趨勢愈來愈明顯。對大部分人而言,僅僅輸入"現代語言及開發框架",這都是泛泛之談,記不住多少的。所以,你完成工做的能力一般取決於你的檢索能力。不幸的是,瞭解到如何找到準確而高質量的信息可不只僅是跑到TechRepublic來找答案,或者在你選好的搜索引擎上敲幾個字那麼簡單。多線程

"技術(Techniques)"、"手段(tactics)"和"策略(strategies)"看起來是一回事,實際上並不是如此。你須要學會的技術是掌握你喜好的搜索引擎的高級搜索系統;你須要瞭解諸如布爾操做符,如何過濾結果(像"非"關鍵字,域限制等等),關鍵字的詞序扮演什麼角色,等等。一句話,RTFM(Read The Fucking Manual,讀那些他媽的手冊)吧。框架

你應該學會這些手段,諸如如何接近特定的搜索,以及瞭解本身實際上想查些什麼。查錯誤很容易—只需查出錯代碼便可—可是許多搜索的關鍵字選擇要困可貴多。數據庫設計

至於策略,你須要學會的東西,包括像應該使用哪一種搜索引擎(提示:普通的搜索引擎不必定就是最佳選擇),使用普通搜索引擎前應該訪問哪一個網站,甚至是應該到哪一個論壇去尋求幫助,等等。函數

3. 幫助別人

教別人始終是學習一切東西的最好方法之一。相對而言,因爲你在開發領域仍是個新手,認爲本身沒什麼可教給人家的,這能夠理解。但這毫無心義。記住,你所學到的一切都是你從別人或別處學到的;所以請嘗試一下,成爲另一我的要請教的"別人"。天天儘可能花一點時間試着回答TechRepublic上的問題,其餘網站的亦可。讀讀其餘會員的回答,你也能夠學到不少東西。工具

4. 有耐心,常練習

研究代表,要成爲一名"專家",須要花費10年,或者10000到20000小時的刻意練習時間。真的好久。還有,成爲專家不盡然就是執行10年一樣的任務;一般這意味着要在特定領域內執行普遍的任務。須要花費大量的時間和精力才能成爲"專家";作幾年程序員是不夠的。想在30歲左右成爲一名高級軟件開發工程師?要麼儘早接受教育/培訓,要麼你得願意在閒暇時間進行大量的工做、閱讀和練習。我從高中開始編程,還犧牲了許多休息時間去跟蹤行業發展、學習新技能等等。結果,我得到中級和高級程序員的時間就比個人大部分同事都要早得多,隨着時間的推移,這些就轉化成爲不少的金錢。學習

5. 對教條拒之門外

是時候開誠佈公了:也許初級程序員瞭解的東西還不足以說出作某件事情有一種最好的方式。尊重朋友或者權威的觀點是好的,但直到你更有經驗以前,不要把他們的觀點說成是你本身的。很簡單,若是你所瞭解的不足以讓你獨立地找出這些東西來,你又怎麼會認爲你知道哪一位"專家"是對的呢?話是難聽了點,不過請相信我;因爲受某些愚蠢建議的蠱惑,或者追隨某些根本不知道本身在說些什麼的所謂專家,白白把本身的職業生涯耽擱了幾年,這樣毛頭小夥程序員,我見過多了。這一點有一個很好的例子,就是面向對象結構的濫用。好比說,許多初級者讀了一些有關面向對象的信息後,忽然間,他們那簡單的應用程序的類圖看起來就像埃菲爾鐵塔同樣了。

6. 深刻學習一點先進理念

成爲一名中級程序員,很大一部分是要在代碼裏面體現出一些所擅長的概念。就我而言,是多線程/並行性,是正則表達式,以及如何對動態語言進行變化(後兩個在我離Perl漸行漸遠後開始退化)。這是如何發生的?多線程和並行處理是由於我讀了相關文章,以爲它看起來頗有趣,而後再本身把它弄清楚了;而後我就一直使用這些技術來寫應用。我作過一件工做,是用Perl寫的,裏面運用了大量的正則表達式。我也用一個過程引擎模板和內置數據庫系統寫過我本身的電子商務引擎;那時我幾乎花了2年時間在這上面。

找到真正令你着迷的東西。也許是圖像處理,也許是數據庫設計,等等。即使你是一個入門級的程序員,也要嘗試一下成爲某一本身所關注領域的專家。這會讓你至關快速地進入到中級水平,一旦你到了那個水平,你的專家之路也走到一半了。

7. 學習你的領域裏面的基本理論

寫出"Hello World",跟理解那些字是如何顯示到屏幕上的是兩碼事。經過學習支撐你所從事的工做的"基礎/底層工做(groundwork)",你會變得更加在行。爲何?由於你會理解事物爲什麼會以這種方式運做,當東西壞了就能知道是哪裏的問題,等等。經過掌握工做的底層機制,你變會得更出色。

若是你是Web程序員,讀讀HTTP RFC和HTML規範。若是你使用代碼生成器,好好看看它生成的代碼;若是你使用數據庫工具,看看它生成的底層SQL語句,不一而足。

8. 看看高級程序員的代碼

在工做中看看高級程序員寫的代碼,而後問一問事情是如何以某種特別的方式完成的,爲何?可能的話看看開源的項目。甚至即便其餘程序員沒有最好的編程習慣,你也會學到許多編程經驗。固然,要當心別學到壞習慣。個人意思是說不要生搬硬套人家的東西;你要能領會到哪些是能行的通的,哪些是有道理的,而後再模仿人家。

9. 學習好的習慣

愚蠢的變量名,糟糕的縮進習慣以及其餘一些凌亂的跡象就是一個沒有經驗的程序員的最好標記。一個程序員在學會如何編程時,卻常常沒有被傳授到那些不那麼有趣的細節,像代碼格式編排。甚至儘管學習這些東西並不會令你的代碼更好,也不會令你成爲更好的程序員,它也會確保你不被同事視爲入門級的程序員。甚至即便某人是高級程序員,若是他的變量是以他那97只貓的名字來命名,或者其函數叫作"doSomething()"的,他們看起來也不像是知道本身在幹什麼的人。並且會令其代碼在過程當中更難以維護。

10. 要玩的開心

想要癡迷於單調乏味的工做?痛恨工做吧。要想升級爲中級程序員可不只僅是爲了拿到不斷增加的工資不達目的誓不罷休,而是要真正享受工做。若是你不喜歡本身的工做,且仍是初級程序員,你怎麼會認爲成爲中級或高級程序員狀況就會有所好轉呢?換工做或改職業吧。反過來講,若是你喜好所從事的工做,那就好!只要你堅持下去,我保證你能成爲一名更好的程序員。(Justin James)

原文地址:http://www.nowamagic.net/librarys/veda/detail/903

相關文章
相關標籤/搜索