實用丨程序員職業之路的選擇

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

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

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

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

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

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

01程序員是一個具備長久生命力的職業~

很多人說程序員是這個時代最好的職業之一,是不是最好,不敢確認。不過程序員喜歡自嘲倒是真的,甚至以互黑作為生活的樂趣,有時我們也會被別人黑到喜馬拉雅山的高度,但不可否認的是,大部分程序員都是在空調房裡敲敲鍵盤就有可能冷不丁改變了世界,並且,大部分時候,我們都讓這個世界變得好了一點點。與很多職業相比,程序員的投入產出比都算高的,稍有智力門檻,也沒比其他行業高多少。而這個時代,給了程序員們大展宏圖的機會,給我們足夠的自由度去創造我們想要的東西。

至於傳說中的「程序員職業病」,其實和程序員這個職業並沒有多大關係,伏案工作的人群大抵如此。越來越多的互聯網公司為員工提供了各種福利,免費的健身房,舒適的桌椅,香濃的咖啡,甚至一些娛樂設施。自己不運動,其實很難怪到這個職業頭上。另外,程序員的工作也「並沒有想象的那麼辛苦」,有太多的行業比我們辛苦的多,所以,遇到頭腦清楚邏輯清晰又喜愛計算機並且沒有意向進入其他領域的年輕人,我總是對他們說,來做個程序員吧,這是個能讓你的生活變得精彩的職業。

為什麼說改變生活?

02程序員不一定要寫一輩子程序~

以前人們總是說年齡大了就不要寫代碼了,或者說寫不動代碼了。現在多少有點矯枉過正,比如 CTO 怎麼能不寫代碼呢,寫代碼可是一輩子的事呀。在我看來,這個問題根本沒什麼可以爭論的,一個階段一種做法。如果你寫代碼是最有價值的,就去寫代碼。如果你做產品是最有價值的,就去做產品。如果你去管理公司是最有價值的,就去管理公司。

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

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

實用丨程序員職業之路的選擇

03程序員職業生涯的關鍵點是哪些?

很多人喜歡制定學習計劃,但這些計劃大都無法執行下去。不是計劃出了問題,而是人學習和提升的方式很難按部就班,很多時候我們都是在摸索前行。就像你今天按計劃要耕完一畝田,作業進行到一半的時候,你發現一塊土質的異常,於是深挖下去,用鐮刀割去雜草,用鐵鍬剷除泥土,用鑽頭鑽出深洞,最後發現了一口油井。如果你按照計劃耕完這一畝田,可能永遠發現不了那口井。

我相信每個人身體裡都有某種特質,這種特質讓你在某個領域取得成就的可能性遠遠大於其他,這種特質也能讓你異於他人。但是,人們並不是生來就知道自己擅長幹什麼的,需要花時間去尋找,找到它,然後去做自己最擅長的事情,這對你漫長的職業生涯是一筆巨大的財富。

04程序員的進階之路?

初級程序員

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

會寫簡單的腳本

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

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

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

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

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

高級程序員

至少四年工作經驗

能寫較複雜的程序

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

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

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

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

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

團隊領導或架構師

七年以上開發經驗

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

團隊領導:向架構師過渡

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

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

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

中層領導

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

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

向高級主管彙報工作

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

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

高層領導

VP,CTO 或CEO

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

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

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

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

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

05專業性很重要,但也別太「專」了

程序員一看就是個很專業的工種,但是正如前面所述,這個領域的技術用浩如煙海來形容毫不為過,我們窮盡一生也無法掌握其萬分之一。人們常說先做專才,再做通才,也就是所謂的 T 字型人才,既有某個領域的專業知識,同時知識技能廣泛,為人處世,大開大合。古代開國皇帝大抵都是這種,雄才大略又武藝高強,上馬砍人,下馬治國,一通百通。

所以程序員必須首先具備專業技能,才能在這個殘酷的領域裡存活下來,不要沒幹兩年就想著去管理,拋棄專業知識。翻一翻互聯網招聘職位列表就知道了,一百條裡面99條是各種各樣的工程師,好容易有一條是管理性質的,一看是總經理,您能勝任嗎?

所以,專業技能是需要優先考慮的,等你真正成了技術大拿,自然知道怎麼去擴展橫向知識。

但是您也別太專了,以至於成了偏門技術。就像你的技術棧如果是大型機 —— MainFrame,每天和 JCL(Job Control Language)、COBOL 等技術打交道,工作機會不多,但這個專業的人員更少。找工作倒是不難,但是看不到上升的空間,每次換工作都得換城市,為了一個更好的職位,甚至需要從美國輾轉到日本,每次被折騰的死去活來,換方向代價有太大,薪水還會降很多,進退維谷。

選技術方向,不要讓自己處於這種境地。

今天,程序員的選擇是豐富多彩的。而且對於程序員的職業要求比歷史上任何時候都要高。對程序猿來說這是一個好的時代。但是任何時候規劃你的職業都不算晚。想了解更多程序員的職業規劃,關注我,回覆

“1”高清導圖 & 視頻 & 重磅資料庫 全部送。

實用丨程序員職業之路的選擇


實用丨程序員職業之路的選擇


分享到:


相關文章: