程序員職業路徑該如何抉擇?Career Path of a Programmer


 

英文原文:Career Path of a Programmer

許多編程的職位都會到達最高峯,並開始衰落——這是很多程序員不想面對的,但卻是一個不爭的事實。這之後再找一份程序員的工作會變得越來越難,很多人發現這個事實時束手無策。本文會提供一些重要的職業信息,值得思考一下,以便有所準備。

程序員職業之路的選擇

TechCrunch 發佈了一篇文章「硅谷黑幕:技術人員年齡歧視」,文中引用的研究發現:對一個程序員來說,能從事高效的開發的年齡段是有限的。這個問題確實存在,而且非常嚴峻。

程序員的未來是什麼樣的?

程序員的職業之路是什麼樣的?

對於這些路應有什麼樣的選擇和期望?

人人都知道程序員可以向經理或團隊領導發展。但很多程序員不明白經理這個職位的期望和工作要求。當然,我們都有經理,但怎樣才能成爲經理呢?要具備什麼素質?中層管理者和一個高級程序員之間有什麼區別?

在這篇文章中,我會拉開帷幕,介紹從一個從初級程序員到頂級 CTO 的潛在職業之路。

注意:很多偉大的職業生涯停留在了不同的職位上,直到退休。一些職業生涯卻連連升級。但是管理和領導角色並不適合每一個人,幾年以後你可能會發 現你在管理上的興趣改變了。二十幾歲的時候你可能不喜歡做經理,但是四十歲時你可能不再喜歡寫代碼了。未來什麼樣,誰都很難說。然而,多瞭解一下你的選擇 和情況總是好的。

下面一張圖表示的是程序員的各個職位的平均工資。注意在垂直水平上,一些人可能拿着兩倍或者三倍於別人的工資(像是銀行,貿易等行業)。所以這些數字僅代表了一個平均水平,並不全面。

程序員職業之路的選擇

初級程序員

  • 0-3 年工作經驗(一般是剛從大學畢業)

  • 會寫簡單的腳本

  • 初步瞭解整個應用程序的生命週期

  • 初步瞭解數據庫和應用程序的服務(隊列,緩存等)

  • 不需瞭解複雜的應用中的每一個部分

當你剛剛踏入程序員的行列中來的時候,可能會感到畏縮和煩惱。會時常感覺到自己資歷尚淺,驚訝爲什麼會有人寫出這麼大而複雜的程序。不久之後,你就會想爲什麼自己還沒有升級到高級程序員。看看其他的高級程序員,你覺得自己做着跟他們相同的工作。

但是區別就在於初級程序員缺乏經驗。即使是學習最快、最聰明的初級程序員,也沒有接觸到足夠多的代碼和邊界情況,以勝任高級程序員的工作。在軟 件開發方面,軟件設計模式也是一種智慧。雖然在這方面可以閱讀相關的書籍,但還是需要寫足夠多的代碼,將錯誤儘可能地暴漏出來,真正理解軟件設計模式的價 值。

相關鏈接:

  • 《設計模式》 Gamma 著

  • “初級”程序員的真正含義

  • 初級開發者如何提高自己

高級程序員

  • 至少四年工作經驗

  • 能寫較複雜的程序

  • 深入理解整個應用程序的生命週期

  • 掌握數據庫和應用服務(隊列,緩存等)

  • 要了解應用程序的每一個方面

稱職的高級程序員非常擅長構建大型程序。擔任高級程序員佔了程序員生涯的大部分。事實上,如果你不喜歡管理的工作而僅僅喜歡寫代碼,可以一直做一個高級程序員,我就僱傭了一些終生做程序員的人,但是,當老了以後,這項工作也會變得困難。

這個職位也可以作爲一個過渡。一旦你掌握了足夠的技術,那麼很可能就有能力擔任一家技術創業公司的創始人或者 CTO 了。作爲一個創始人或者 CTO,寫代碼的就會就少了,更多的是需要處理事務的技巧。但是深入理解技術非常有必要,是做好這份工作必不可少的部分。

團隊領導或架構師

  • 七年以上開發經驗

  • 掌握高級程序員必備的技術

  • 團隊領導:向架構師過渡

  • 架構師:沒有更高的技術方面的職位

做了七年程序員之後,如果你覺得不喜歡管理方面的工作,那麼可以考慮一下做架構師,這是技術方面最頂峯的職位。架構師有時候也寫代碼,但大多數 時間他們在設計複雜的系統,然後交給由初級和高級程序員們組成團隊來實現。架構師的工作就是,利用他技術方面的智慧以及多年的經驗(學習程序的模式和反模 式),來爲軟件項目創建合適的架構。有新的需求的時候,軟件架構師需要對項目選擇正確的方向,並估算應用程序的規模。

首席開發人員的工作是給其他初級的和高級的程序員指導和方向。雖然首席開發者通常不會做僱傭、解僱程序員的事情,但是他們的許多工作和經理無異。他們需做開發方面的協調,並在寫代碼的時候做出實現方面的決定。

中層領導

  • 通常包含經理和負責人等職位(開發經理,項目經理,產品經理)

  • 做發人員的老闆(例如人事工作)

  • 向高級主管彙報工作

管理人員通常向工程師發展。他們的方向很多:如果你喜歡接觸開發團隊,並對細節感興趣,那麼可以選擇產品經理,做你的夥伴們的盟友;如果你對產品特性和增強其性能着迷,那麼做一個產品經理是最好的選擇。

然而大多數人的選擇是開發經理。這是個經理中經典的職位,要求平衡項目經理和產品經理的需求和開發團隊的性格之間的矛盾。這個職位對人事處理和 化解矛盾的技能要求較高,要經常做出退讓。開發經理的工作不僅僅是僱傭新人,在必要時也要解聘一些人。這就意味着很難和他們成爲朋友。因爲一旦和他們成了 朋友,就處在了一個尷尬的位置。如果你認識的一個人從開發人員的職位升到了開發經理,你會發現這個人幾乎在一夜之間變了。這就是爲什麼,這通常是一份費力 不討好的工作。

但如果領導一個團隊勝利了,也是非常有收穫的。如果你想提高領導才能,準備做一個管理角色,可以讀讀 Phil Jackson 的書 《Eleven Rings: The Soul of Success》 。

高層領導

  • VP,CTO 或 CEO

  • 是中層領導的老闆(例如負責人事)

  • 向另一個高層領導或者董事會報告

和中層領導顯而易見的不同是,高層領導負責管理中層領導。然而經理通常是不需要管理的,他們需要的是指導。中層領導需要知道高層領導的方向並跟進,不會得到非常具體的指示。

高層領導的工作是,做重要的決定,並激勵工作人員緊跟決策,增加對工作目標的信心。

你在這條路上走得越遠,寫代碼的機會就越少。到達頂峯的時候,做的都是人事方面的工作了。中層領導依然能在覈心技術方方面體驗到樂趣,但是對於 高層領導,就必須把所有的時間花在人事上:激勵員工,領導,指定策略。如果你寫代碼,也只能是不重要的項目(除非你是比爾蓋茨,但大多數人不是比爾,他是 個極端的特例)。Phil Jackson 的書要求,在這個職位上必須經常閱讀,不能安於現狀。

高層領導的工作要求確保公司的每一個人都朝着相同的方向努力,確保方向的正確,確保每一個人知道他們朝這個方向努力的原因。這個工作難度非常大,而且充滿着危險,心酸和陷阱。如果你想要一個高層領導,讀一讀 Ben Horowitz 的《The Hard Thing About Hard Things》.

高層領導從來都不是天生的,而是經過不斷地努力達到的。Ben Horowitz 的博客裏有有關成爲 CEO 的例子。

結論

今天,程序員的選擇是豐富多彩的。而且對於程序員的職業要求比歷史上任何時候都要高。對程序猿來說這是一個好的時代。但是任何時候規劃你的職業都不算晚。希望本文能排得上用場,給你一些指導和精神食糧。

來自: www.laixintao.com程序員職業路徑該如何抉擇?

您可能還會對這些文章感興趣!

  1. IT程序員的職業規劃

  2. IT程序員職業的規劃發展路線圖

  3. Andrew Wulf:程序員是條不歸路,你必須要在自己熱愛

  4. 軟件工程專業,英語成績不好,對未來發展空間多大影響

  5. 程序員的十大無奈,數數看,自己中了幾槍?

  6. 如何做一個理智的程序員

  7. 程序猿們,我們該如何對待技術信仰?

  8. 每個程序員都必讀的12篇文章


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章