歡迎關注個人公眾號:石杉的架構筆記(ID:shishan100)
週一至週五早8點半!精品技術文章準時送上!
精品學習資料獲取通道,參見文末
目錄
1、40歲回首往事:自己竟沒有任何核心優勢
2、公司遇到危機時40歲大齡程式設計師會怎麼樣
3、適合大齡程式設計師的幾條職業發展路線
4、最後的寄語
“ 這篇文章,給大家聊聊Java工程師的職業發展規劃的一些思考,同時也給不少20多歲、30多歲,但是對自己的職業未來很迷茫的同學一些建議。
筆者希望通過此文,幫大家梳理一下程式設計師的職業發展方向,讓大家知道自己從20多歲的初出茅廬,到40歲的大齡碼農,應該如何規劃屬於我們們程式設計師的半生。
首先,我們們通過倒推的方式,看看在一個程式設計師40歲的時候,你憑什麼來捍衛自己的核心競爭力?
那如果要搞清楚這個問題,又得從一個反面來看看,大部分的程式設計師在職業發展過程中犯了哪些錯誤,結果導致在40歲的時候沒有競爭力了呢?
一、40歲回首往事:自己竟沒有任何核心優勢
最尷尬的事情,莫過於一個程式設計師在10多年,甚至20年的從業經歷中,一直沒好好考慮過如何構建自己的核心競爭力。
如果長年如此,會導致他就跟著公司慢吞吞的走著,就像溫水煮青蛙,直到40歲的時候,突然發現自己幾乎一無所長。
舉個例子,比如從技術角度而言,這些兄弟可能發現自己不是什麼技術專家,也不是架構師,沒有任何一個技術領域有足夠的深度。
他們甚至可能都沒好好讀過什麼技術的原始碼,很多最新的技術,比如大資料、人工智慧、微服務、網際網路,等等,都沒跟上。
而這些朋友10多年來,一直做的事情可能就是重複以下:帶著幾個小弟,做傳統的軟體系統,然後整天就是研究各種軟體的需求,設計一些簡單的架構。
然後使用的技術都是比較過時的,一直是一些增刪改查的事情,可能涉及到一些其他的技術,但是那些技術很多都是非主流的,或者是不流行的。
最後,你發現自己10多年工作下來,跟小年輕相比,唯一的優勢好像就是做的那種CRUD的專案比較多,經驗豐富一些罷了。
沒錯,我見過相當多的兄弟,在30多歲,乃至40歲的時候,就是上述那種情況,唯一的優勢就是難度不高的專案經驗比較多,帶過幾個人,僅此而已。
甚至有些兄弟雖然是一些中小公司的 “架構師” 、 “技術總監” 的title,但是其實本質做的事兒也跟上面是差不多的。
但是呢,這幫兄弟實際上來說薪資未必就很低,因為隨著在公司呆的久了,很多公司雖然知道你也許沒特別大的技術能力,但是老闆也認可你其實對公司的業務還算蠻熟悉的。
而且你做過的專案比較多,年齡較大,有資歷,做事穩重,能帶幾個小弟,可以給公司撐起來一片天空。
此時,公司還是會給你不錯的薪資。類似上面情況的兄弟,30多歲時,可能薪資也會有30多k~40k那樣子。
但是也有很多的兄弟,沒得到公司老闆那麼大的認可,自己可能也一直沒想太多,所以在30多歲的時候,可能公司就給你28k,30k的薪資,認可你是一個資深的骨幹。
而這個時候,對大齡程式設計師來說,學習很多新的技術也有點有心無力,畢竟家裡老婆孩子都在炕頭上。你說加班加點吧,也有點加不動了,畢竟年齡上去了,各種慢性病一大把,精力不如往日,主要就是利用自己的一點經驗把控公司的專案。
因此上述那個場景,就是很多大齡程式設計師的情況。
二、公司遇到危機時40歲大齡程式設計師會怎麼樣?
現在我們們換個角度,從一些中小公司的老闆的角度來考慮一下這些大齡程式設計師,假如說公司業務還算穩定,營收還算正常,利潤也算穩定,那麼這些大齡程式設計師對老闆來說是有價值的。
原因上面已經說過了,你畢竟工作了這麼多年,業務還算熟悉,做過很多專案,從需求分析到系統設計,再到帶小弟開發、測試和部署上線,這條流程你門兒清,那其實還是可以給你個30k薪資用你幹活兒的。
但是假如公司現在遇到了一些危機,比如因為行業環境等原因,公司經營不善了,業務開始萎縮,利潤開始下降,這個時候你說老闆會怎麼辦?
其實很簡單,站在老闆的角度,假如手裡本來有10個大齡程式設計師作為骨幹,此時完全可以拿掉其中的8個。
老闆這時就留下2個大齡程式設計師,讓他們為了保住飯碗,加班加點給公司撐住剩下的業務。
而大齡程式設計師的工資可是公司裡最高的那一批人,把他們拿掉8個,是不是一下子節省了很大的成本?
如果公司還有業務需要支撐,完全可以找幾個工資才10k的小年輕程式設計師進來把活兒頂著,跟著2個大齡程式設計師繼續做就行了。大家想想,是不是這麼回事?
在遇到困難的時候,工資高、年齡大、加不動班的大齡程式設計師,很有可能就會率先“被”犧牲掉,用來節約公司成本。
然後呢,換上幾個薪資低、年齡小、可以天天加班到凌晨、還有充足的精力學習各種新技術的程式設計師,給公司頂上。
那麼接下來,這些大齡程式設計師出去找工作會遇到哪些問題呢?
很簡單,這些兄弟本身技術並沒有什麼特長,專案也沒什麼難度,而且很多最新的技術還沒跟上沒學習。
此外,這些兄弟年齡也大了,上有老下有小,還加不動班,而且你要的薪資還不低。其他公司一看,有什麼理由用30多k的薪資來聘用你呢?
你的技術、精力都不行,所謂的專案經驗,僅僅是上一家公司的一些專案的經驗,對別的公司可能沒什麼太大的作用。
如果你是另外一家公司的老闆,你會不會聘用這樣的人?我想說到這裡,大家都明白這裡的問題所在了。
(1)成為技術大牛,掌握公司的核心技術
看完上面的內容,大家都知道問題所在了,那麼接下來我們來探討一下:
什麼樣的大齡程式設計師,他可以在40歲的時候還得到各種公司的青睞呢?
第一種方式,就是掌握自己行業裡的各種技術,哪怕走出了這個公司,也是其他公司瘋搶的物件。
給大家舉個例子,比如你一直在網際網路行業工作,且一直在各種知名大公司,前後負責和經歷過多家大型網際網路公司的核心繫統架構設計。
對於一個網際網路系統,如果要支撐1億使用者,有哪些技術挑戰,需要怎麼來設計,你都經歷過這些過程。
每秒支撐10萬量級併發請求該怎麼做,系統要能夠支撐百億級的資料儲存又該怎麼設計。類似這些東西,你都瞭然於胸。那麼這個時候,你就是擁有了核心技術。
哪怕這個公司不要你了,你完全會被其他公司給爭搶過去,因為很多公司都需要這種有過大規模系統、高併發經驗、海量資料經驗的架構師。
千軍易得、一將難求。招聘很多薪資二三十 K的高階工程師,負責把一個模組做好,很容易。
但是你要招一個能夠把控全域性,hold住你公司一個複雜大系統全場的高階架構師,很不好招,這樣的人很值錢,很多公司都需要。
這個時候你雖然40歲,但是人家認可你,因為你有核心的技術能力,核心的架構能力,你是公司技術的最後一道防線,很多崗位非你不可。
或者換個例子,比如大資料領域,現在你工作10多年,技術功底極為深厚,你完全可以對大資料領域的各種系統,比如hadoop、spark、hbase、kylin、elasticsearch等等,做非常底層的優化。
遇到任何問題,你都可以從原始碼級別來推斷解決,而且可以修改開源專案原始碼,進行二次開發。
那麼這時,你就是擁有核心技術的。未來大資料必然會發展的越來越好,因為各個行業都有大量的資料,很多公司都需要有最好的專家來解決自己公司的大資料問題。
因此,即使你40歲了,但是你有多年積累的核心技術能力,任何公司都需要你這樣的頂尖大牛坐鎮,解決各種技術問題。
所以如果要往這個方向去走,建議大家一定要從20多歲開始,好好規劃自己的技術學習和職業發展。
大家一定要想好,自己要學什麼技術,要往多深了學,要在什麼樣的公司裡積累經驗,踏踏實實走好每一步。
到40歲的時候,雖然大齡,但是你積累了足夠的技術能力,你的核心技術會像 “九陽神功” 一樣為你護體,讓你依舊馳騁職場、炙手可熱。
(2)深挖業務,成為業務領域專家級人物
第二種路線,你可以考慮成為某個業務領域的專家級人物。
你可以在一些業務有絕對難度和深度,業務極度複雜,而且行業持續發展,業務領域的知識持續保持價值的領域,一直深挖。
比如說電信、金融、銀行、保險、財務、ERP,等等,諸如此類。
在這些領域的公司裡面,你可以在不停的做技術類工作的同時,也注意積累這個領域的業務知識。
像一個電信系統、ERP系統,往大了做,業務都是極度複雜的,包含了大量的東西。
如果你能持之以恆,對各種業務知識、業務系統都深入挖掘,那麼最後變成這個領域的業務專家,也是很有價值的。
為什麼這麼說呢?因為對於很多特定行業,可能做一個系統不需要那麼高大上的技術,但是絕對需要最好的業務專家來進行把控,才能設計出那種對應於某一個特定行業,且業務極其複雜的系統。
所以很多同學,假如是走傳統行業的系統開發方向,可以考慮注重更多的業務積累,未來成為頂尖的業務專家。
這樣,哪怕你40歲的時候,這個行業也需要你這樣的 “老專家” 在公司裡繼續支撐著業務發展。
(3)帶領團隊:走上技術管理之路
另外一條路,就是走技術管理的道路,這個相信大家都理解。
作為任何公司的老闆而言,都需要技術管理人員,他需要懂技術,但是不一定特別的精通,但是一定要有極強的團隊管理的能力。
作為團隊管理者,你需要有能力把控公司大的技術方向,還需要有足夠的行業人脈和資源,招聘搭建合適的技術團隊。
此外,你還要能夠制定技術團隊的工作流程和規範,進行團隊之間職責的定義和分配,讓各個團隊有效協作執行,最後成功的支撐公司的業務發展。
這個管理,說起來就兩個字,但其實背後的學問極大,要把幾十個甚至幾百個不同的人擰成一股繩,保持強大的戰鬥力,為公司做好支撐工作,其實這裡難度很高,非常考驗一個管理人員的水平。
如果你能從帶幾個人的小主管開始,到帶幾十人的技術leader,再到帶幾百人的高階技術管理人員。
假如你能往這個方向去發展,那麼其實在你40歲的時候,你也有對應的競爭力,因為很多老闆都需要你豐富的技術管理經驗來把控好公司的技術團隊。
當然說實話,能真的做技術管理做的好的人,很少。尤其是我們們技術出身的同學,一般來說都比較內向靦腆,不太善於交際。
所以對大多數的普通工程師而言,個人還是比較建議上面的技術專家或者業務專家路線,這裡面機會更多,而且對大多數人都更加的適合。
(4)轉型其他職位或者行業
如果有人說,我對技術沒那麼大熱情要成為專家,我也很討厭整天搗鼓業務,我更沒天賦成為技術管理人員,那怎麼辦呢?
那你可以考慮寫程式碼寫到30多歲的時候,搞點別的。
比如說考慮轉型做產品經理?考慮做網際網路運營?或者考慮做軟體銷售?
也就是說,你可以考慮帶著一定的技術背景,往技術行業裡的其他崗位去轉型,在其他崗位上積累經驗,成為不可或缺的人物,這個也可以。
更有甚者,在北上廣幹了10年技術,積累了一定的資金之後,在老家買好房子,然後回老家去做生意,比如開個餐飲店什麼的。
這個也是一條路子,但這種就是因人而異了,畢竟每個人的人脈資源都不同。
四、最後的寄語
最後一句話總結:不管你選擇哪條路,首先想清楚,你要成為什麼樣的人。
你需要仔細想想,在40歲時,你10多年的工作經驗,將會積累了哪些核心競爭優勢。
然後再仔細琢磨琢磨,這些優勢是否是那種剛畢業的小夥子絕對無法替代的,其他公司的資深崗位是不是必須要有你這樣的人。
考慮清楚了這些,剩下的就是朝著自己的目標,堅持不懈的走下去。這中間你可能會迷茫,甚至會懷疑當初的決定。但還是那句話:相信自己、勿忘初心,自己選的路,含著淚也要走完!
最不希望看到的一種情況,就是30多歲了,還僅僅會“用”各種技術,十幾種二十多種技術,什麼都會用。但就是沒什麼技術深度,沒什麼競爭力,就一些使用經驗比較多了而已。
如果是這樣,那人家剛畢業的小年輕,可能1到2年時間就學會了這些技術怎麼用,也許就可以在關鍵時刻替代你。
這些小夥子無非就是經驗不足罷了,但是人家可以拼命加班彌補,並且人家要求的薪資比你低多了。
最後,希望每個程式設計師兄弟都有一個好的未來和人生,程式設計師這條路充滿艱難險阻,各種挑戰,但也充滿機會,需要不停的學習進步,與大家共勉!
End
(封面,圖源網路,侵權刪除)
掃描下方二維碼,備註:“資料”,獲取更多“祕製” 精品學習資料
一大波微服務、分散式、高併發、高可用的原創系列文章正在路上
歡迎掃描下方二維碼,持續關注:
石杉的架構筆記(id:shishan100)
十餘年BAT架構經驗傾囊相授
推薦閱讀:
2、【雙11狂歡的背後】微服務註冊中心如何承載大型系統的千萬級訪問?
3、【效能優化之道】每秒上萬併發下的Spring Cloud引數優化實戰
6、大規模叢集下Hadoop NameNode如何承載每秒上千次的高併發訪問
7、【效能優化的祕密】Hadoop如何將TB級大檔案的上傳效能優化上百倍
9、【坑爹呀!】最終一致性分散式事務如何保障實際生產中99.99%高可用?
11、【眼前一亮!】看Hadoop底層演算法如何優雅的將大規模叢集效能提升10倍以上?
16、億級流量系統架構之如何設計全鏈路99.99%高可用架構
18、大白話聊聊Java併發面試問題之volatile到底是什麼?
19、大白話聊聊Java併發面試問題之Java 8如何優化CAS效能?
20、大白話聊聊Java併發面試問題之談談你對AQS的理解?
21、大白話聊聊Java併發面試問題之公平鎖與非公平鎖是啥?
22、大白話聊聊Java併發面試問題之微服務註冊中心的讀寫鎖優化
23、網際網路公司的面試官是如何360°無死角考察候選人的?(上篇)
24、網際網路公司面試官是如何360°無死角考察候選人的?(下篇)
25、Java進階面試系列之一:哥們,你們的系統架構中為什麼要引入訊息中介軟體?
26、【Java進階面試系列之二】:哥們,那你說說系統架構引入訊息中介軟體有什麼缺點?
27、【行走的Offer收割機】記一位朋友斬獲BAT技術專家Offer的面試經歷
28、【Java進階面試系列之三】哥們,訊息中介軟體在你們專案裡是如何落地的?
29、【Java進階面試系列之四】扎心!線上服務當機時,如何保證資料100%不丟失?
30、一次JVM FullGC的背後,竟隱藏著驚心動魄的線上生產事故!
31、【高併發優化實踐】10倍請求壓力來襲,你的系統會被擊垮嗎?
32、【Java進階面試系列之五】訊息中介軟體叢集崩潰,如何保證百萬生產資料不丟失?
33、億級流量系統架構之如何在上萬併發場景下設計可擴充套件架構(上)?
34、億級流量系統架構之如何在上萬併發場景下設計可擴充套件架構(中)?
35、億級流量系統架構之如何在上萬併發場景下設計可擴充套件架構(下)?
37、億級流量系統架構之如何保證百億流量下的資料一致性(上)
38、億級流量系統架構之如何保證百億流量下的資料一致性(中)?
39、億級流量系統架構之如何保證百億流量下的資料一致性(下)?
40、網際網路面試必殺:如何保證訊息中介軟體全鏈路資料100%不丟失(1)
41、網際網路面試必殺:如何保證訊息中介軟體全鏈路資料100%不丟失(2)
42、面試大殺器:訊息中介軟體如何實現消費吞吐量的百倍優化?
43、高併發場景下,如何保證生產者投遞到訊息中介軟體的訊息不丟失?
45、從團隊自研的百萬併發中介軟體系統的核心設計看Java併發效能優化
46、【非廣告,純乾貨】英語差的程式設計師如何才能無障礙閱讀官方文件?
47、如果20萬使用者同時訪問一個熱點快取,如何優化你的快取架構?
48、【非廣告,純乾貨】中小公司的Java工程師應該如何逆襲衝進BAT?
50、【金三銀四跳槽季】Java工程師如何在1個月內做好面試準備?
51、【offer收割機必備】我簡歷上的Java專案都好low,怎麼辦?
52、【offer去哪了】我一連面試了十個Java崗,統統石沉大海!
53、高階Java開發必備:分散式系統的唯一id生成演算法你瞭解嗎?
54、支撐日活百萬使用者的高併發系統,應該如何設計其資料庫架構?
55、尷尬了!Spring Cloud微服務註冊中心Eureka 2.x停止維護了咋辦?
作者:石杉的架構筆記
連結:https://juejin.im/post/5c6a9f25518825787e69e70a
來源:掘金
著作權歸作者所有。商業轉載請聯絡作者獲得授權,非商業轉載請註明出處。