程序員職業之路的選擇

0 評論 3312 瀏覽 3 收藏 11 分鐘

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

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

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

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

對于這些路應有什么樣的選擇和期望?

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

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

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

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

2

初級程序員

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

會寫簡單的腳本

初步了解整個應用程序的生命周期

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

不需了解復雜的應用中的每一個部分

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

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

高級程序員

至少四年工作經驗

能寫較復雜的程序

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

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

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

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

這個職位也可以作為一個過渡。一旦你掌握了足夠的技術,那么很可能就有能力擔任一家技術創業公司的創始人或者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的例子。

結論

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

本文譯者:賴信濤、英語原文?轉載自:PMTOO

更多精彩內容,請關注人人都是產品經理微信公眾號或下載App
評論
評論請登錄
  1. 目前還沒評論,等你發揮!