(轉自:http://www.boode.com.cn/share/programmer_career.html)html
以前咱們分析了程序員職業生涯中能夠選擇的幾個發展方向:項目經理、系統分析員、產品經理、軟件測試工程師和系統架構師,當咱們發現將來充滿了這麼多種可能後,又從新對程序員產生了夢想,但我相信好多人內心仍是在打鼓,那就是「怎麼才能走到咱們夢想的職位?」 本文會對以往的分析進行總結並提供一些重要的職業信息,值得思考一下,以便有所準備。程序員
咱們都知道程序員能夠向經理或團隊領導發展。但不少程序員不明白經理這個職位的指望和工做要求。固然,咱們都有經理,但怎樣才能成爲經理呢?要具有什麼素質?中層管理者和一個高級程序員之間有什麼區別?讓咱們來看看一個初級程序員成長到頂級CTO的潛在職業之路。數據庫
不少程序員都會直觀的從收入上來觀察他們的職業之路,薪資表明着成就和社會對於我的的知足,下面一張圖表示的是程序員的各個職位的平均工資。注意在垂直水平上,一些人可能拿着兩倍或者三倍於別人的工資(像是銀行,貿易等行業)。因此這些數字僅表明了一個平均水平,並不全面。設計模式
(1)0-3年工做經驗(通常是剛從大學畢業),會寫簡單的腳本緩存
(2)初步瞭解整個應用程序的生命週期架構
(3)初步瞭解數據庫和應用程序的服務(隊列,緩存等)性能
(4)不需瞭解複雜的應用中的每個部分學習
當你剛剛踏入程序員的行列中來的時候,可能會感到畏縮和煩惱。會時常感受到本身資歷尚淺,驚訝爲何別人能夠寫出這麼大而複雜的程序。看看其餘的高級程序員,你以爲本身作着跟他們相同的工做。可是區別就在於初級程序員缺少經驗。即便是學習最快、最聰明的初級程序員,也沒有接觸到足夠多的代碼和邊界狀況,以勝任高級程序員的工做。在軟件開發方面, 軟件設計模式也是一種智慧。雖然在這方面能夠閱讀相關的書籍,但仍是須要寫足夠多的代碼,將錯誤儘量地暴漏出來,真正理解軟件設計模式的價值。測試
稱職的高級程序員很是擅長構建大型程序。擔任高級程序員佔了程序員生涯的大部分。事實上,若是你不喜歡管理的工做而僅僅喜歡寫代碼,能夠一直作一個高級程序員。高級程序員能夠做爲一個過渡,一旦掌握了足夠的技術,那麼極可能就有能力擔任一家技術創業公司的創始人或者CTO了。做爲一個創始人或者CTO,寫代碼的就會就少了,更多的是須要處理事務的技巧。可是深刻理解技術很是有必要,是作好這份工做必不可少的部分。spa
(1)七年以上開發經驗
(2)掌握高級程序員必備的技術
(3)團隊領導:向架構師過渡
(4)架構師:沒有更高的技術方面的職位
七年程序員職業生涯已經可以使一個程序員的技術能力足夠精進,若是你想從事更具挑戰性的職位,那麼能夠考慮一下作架構師,這是技術方面最頂峯的職位。架構師有時候也寫代碼,但大多數時間他們在設計複雜的系統,而後交給由初級和高級程序員們組成團隊來實現。架構師的工做就是,利用他技術方面的智慧以及多年的經驗(學習程序的模式和反模式),來爲軟件項目建立合適的架構。有新的需求的時候,軟件架構師須要對項目選擇正確的方向,並估算應用程序的規模。
管理人員一般向工程師發展。他們的方向不少:若是你喜歡接觸開發團隊,並對細節感興趣,那麼能夠選擇產品經理,作你的夥伴們的盟友;若是你對產品特性和加強其性能着迷,那麼作一個產品經理是最好的選擇。
然而大多數人的選擇是開發經理。這是個很是經典的職位,要求平衡項目經理和產品經理的需求和開發團隊的性格之間的矛盾。這個職位對人事處理和化解矛盾的技能要求較高,要常常作出退讓。
(1)VP,CTO 或CEO
(2)是中層領導的老闆(例如 負責人事)
(3)向另外一個高層領導或者董事會報告
高層領導負責管理中層領導。然而經理一般是不須要管理的,他們須要的是指導。中層領導須要知道高層領導的方向並跟進,不會獲得很是具體的指示。高層領導的工做是,作重要的決定,並激勵工做人員緊跟決策,增長對工做目標的信心。
你在這條路上走得越遠,寫代碼的機會就越少。到達頂峯的時候,作的都是人事方面的工做了。中層領導依然能在覈心技術方方面體驗到樂趣,可是對於高層領導,就 必須把全部的時間花在人事上:激勵員工,領導,指定策略。若是你寫代碼,也只能是不重要的項目(除非你是比爾蓋茨,但大多數人不是比爾,他是個極端的特 例)。
今天,程序員的選擇是豐富多彩的。並且對於程序員的職業要求比歷史上任什麼時候候都要高。對程序猿來講這是一個好的時代。可是任什麼時候候規劃你的職業都不算晚。但願本文能排得上用場,給你一些指導和精神食糧。