十年開發,我卻還在CRUD,拿着1.6W的薪水,程序員的出路在哪裏?

 前言

你們知道程序員最熟悉,最熟練,最常用的兩個快捷鍵是哪兩個嗎?沒錯,就是你現在心中所想的:ctrl+c 和 ctrl+v ,俗名爲:複製和粘貼。對於大部分程序員來說:複製和粘貼就是他創造偉大產品的左膀和右臂。

不知從何時起,很多企業將入職門檻限定在35歲以下,“35歲”已然成爲職場老鳥的魔咒,而近年來有關“程序員猝死”、“程序員跳樓”等新聞層出不窮,這股百般苦惱的邪氣,已入侵到了程序員羣體,每每看到這類信息,我的心情都無比沉重,剛好我今年35歲,正經歷着大多數人在這個年齡所面臨的困惑、承擔的壓力、肩上的重擔,這個年齡的遭遇我都感同身受,希望藉此篇文章與大家一起分享心情、心得。

CRUD程序員可能要失業了

在碼農界,有一個古老的傳說,那些偉大的程序員們,大部分代碼都是從StackOverflow問答裏複製粘貼來的。在Flask中如何驗證註冊用戶?怎樣關閉sendmail服務?網上都有……

有了互聯網上這些開源代碼,年薪幾十萬的碼農工作,機器人也能幹。

劍橋大學和微軟研究所聯合開發了一個系統,名叫DeepCoder,就能夠通過搜索一系列代碼建立一個完整的程序,可達到編程比賽的水平。隨着數據集規格的擴大,它還能用來構建更復雜的產品。

這個系統通過自我訓練能夠變得更聰明,能夠構建出若干個代碼段的最佳組合以及在特定位置選擇最合適的程序段。隨着這個系統的不斷自我學習,它能夠具有越來越快的運行速度。

劍橋大學的Matej Balog和微軟研究所的Alexander L. Gaunt、Marc Brockschmidt、Sebastian Nowozin、Daniel Tarlow一起構建了這個系統並且共同發表了一篇文章來介紹這個系統。有程序員說,像這樣的系統不能通過小代碼片段構建更大規格的項目。這種說法,就像是吹着口哨過墳場——給自己壯膽罷了。

很多程序員的日常工作就是將代碼進行分解然後進行重組。對於這樣的工作,可以通過深度學習系統很好地完成。我想這應該是一個實現數據庫基本增刪改查功能的最偉大的解決方案。事實上,這種系統的出現可能意味着CRUD程序員的集體失業。

做正確的事情

我就是一個土生土長的程序員,最早做的前端開發(第一代css、js程序員),然後開始轉做後端開發Java,又轉到架構師以及管理,以下就是我從有限的10年左右提煉出的部分建議。這些也許對你來說不一定有用,但一定是發自我內心的建議。

23-27歲:技術積累階段

假設本科23歲畢業,那麼工作的前5年對你來說就是打基礎的階段。在這5年時間裏面,你要積累足夠的技術底子,打磨自己的技術實力,成爲某一個技術細分領域的牛人。

我自己依然記得當年這樣的場景:蹲在出租房裏面每晚每晚的啃技術文檔,在公司連續打地鋪幹通宵的場景。

只有真正經歷過貧窮,經歷過苦難的人,纔會越早就懂得努力才自己這一生唯一的出路和唯一的機會。忘了誰說的了,大概就是這個理。

27-30歲:形成思維方法論和知識體系的階段

當你積累足夠的技術實力,例如超過10萬行代碼以後,你應該形成了自己的思維方法論和自己獨立的學習技巧,任何新的技術在你眼中都能迅速的看到技術的本質,快速吸收成爲你的知識體系的一部分。

你只要前一個階段打的基礎足夠牢固,這個階段你一定會開始蠶食別的領域,這是一定的。逐漸的不再滿足於純技術領域的探索,而是開始探索技術背後的事情:什麼技術在什麼樣的場合能夠發揮最大的價值;技術團隊應該怎樣構建;技術在公司未來的價值?創業公司對技術的需求?支撐技術的產品,怎樣學習做產品?支撐產品背後的運營體系是怎樣建立的?商業社會對技術、產品、運營等的是怎樣的認知,商業社會有什麼的特定規律?也許還有更多…

在這個階段,積累技術對你來說簡直是小菜一碟,你更需要磨練的是思考能力,形成自己的思維方法和知識體系,這將是你幫助你一生的武器。

30-33歲:這個階段,最關鍵的是瞭解自己

知道自己擅長什麼,自己的優勢在哪裏,怎樣才能夠最大化自己的價值,同時也知道自己有什麼重大缺陷。未來是揚長避短還是不斷避免自己的缺陷,這些需要提前想清楚。一旦想清楚,想透了,就剩下行動。你可以選擇避開做自己不擅長的事情,不勉強自己,不讓自己處於對自己不利的環境。當然,你也可以選擇不斷補短,把自己的不擅長點變成自己最擅長的。這個需要結合自己的情況來慎重選擇,最終看你要走什麼樣的一條路,是打算做技術專家、管理者、還是技術結合產品,還是創業者。

上面的例子不是絕對,拿同事舉例吧:25歲拿到了百萬年薪,23歲的時候入職阿里,定級P6+(P6的職級,P7的薪資),對於底層源碼有很深的理解,一句話形容就是:能上天(分佈式、高併發、微服務等等)、入地(底層原理、源碼解讀等等)

凡事還是要看具體情況,不高估自己,持續學習,堅持進步

如何打破35歲魔咒?

古人云:生於憂患,死於安樂。我從事軟件開發行業已經近13年,從一線大廠的程序員、高級研發經理、架構師直至CTO,即便一路走來順風順水,但職業發展的壓力從未遠離過我,生怕自己的能力結構跟不上這個行業和時代節奏,從不敢懈怠。

如果在事業上追求安樂和穩定,很可能在未來會迎來巨大的危機。商業是不相信“眼淚”的,企業在面對生存和發展危機時,沒有任何溫情可言。對於無法給公司創造利潤的人,無論是25歲,還是35歲,都會被淘汰。我認爲,35歲是否魔咒,因人而異,如果你謀定而後動、提前佈局,35歲反而是一個碩果累累的年齡,甚至有可能提前實現財富自由。

不要用思想上的勤奮來掩蓋思維上的懶惰

現階段的你必須知道自己的目標

1.你適合學什麼?2.你需要學什麼?

1、閱讀源碼

閱讀、分析源碼是程序員最基本的碼代碼能力也是碼農的根本所在,學習經典源碼中所用到的經典設計思想及常用設計模式,能夠幫你瞭解大牛是如何寫代碼的,從而吸收大牛的代碼功力。在阿里面試中,MyBatis,Spring等框架的底層原理是經常會被問到的。

 

 

 

2、分佈式架構

阿里巴巴有很多大團隊,這種大團隊裏有很多小團隊,到小團隊之後,做的業務都不相同,如果想立足成爲一線互聯網公司中的萬能選手,最主流的分佈式架構中有很多知識都是必須要去了解與學習的。並且在阿里面試過程中,面試官會問到實際應用場景的問題:比如微服務化、用戶量、併發量、業務複雜度以及可擴展程度等,這裏不多贅述。

 

 

3、微服務架構

微服務是現在互聯網架構技術中最火熱的話題之一,也是博主目前正在學習研究的方向。在阿里面試過程中,面試官很少會問到關於微服務相關的問題。但作爲一名開發者,一名有技術夢想的程序員微服務架構是現在必須要去了解的主流技術。

 

 

微服務的內容過多,這裏只列舉了兩個,需要了解更多的朋友可以幫忙轉發文章後,關注私信回覆【學習】來免費獲取更多微服務的思維腦圖和相關資料

5、性能優化

性能一直是讓程序員比較頭疼的問題。當系統架構變得複雜而龐大之後,性能方面就會下降,特別是阿里巴巴這樣的一線互聯網公司最爲注重,因此想進入阿里,性能優化一定是要去深入學習與理解的一環。

 

6.設計模式

設計模式(Design pattern)是一套被反覆使用、多數人知曉的、經過分類編目的、代碼設計經驗的總結。使用設計模式是爲了可重用代碼、讓代碼更容易被他人理解、保證代碼可靠性。 毫無疑問,設計模式於己於他人於系統都是多贏的,設計模式使代碼編制真正工程化,設計模式是軟件工程的基石,如同大廈的一塊塊磚石一樣。項目中合理的運用設計模式可以完美的解決很多問題,每種模式在現在中都有相應的原理來與之對應,每一個模式描述了一個在我們周圍不斷重複發生的問題,以及該問題的核心解決方案,這也是它能被廣泛應用的原因。

 

完整進階架構大綱

 

 

最後

作爲後端Java過來人,博主也是整理了很多進階架構視頻資料、面試文檔以及PDF的學習資料,針對上面一套系統大綱博主也有對應的相關進階架構視頻資料,如果‘你’確定好自己未來的道路或者想學習提升自己技術棧、技術知識的話,可以幫忙轉發文章後,關注私信回覆【學習】來免費獲取

 

 

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