1. 程式人生 > >十年京東Java程式設計師的工作總結,寫給迷茫中的你!

十年京東Java程式設計師的工作總結,寫給迷茫中的你!

很多年前,剛剛從大學畢業的時候,很多公司來校招。其中最爛俗的一個面試問題是:“你希望你之後三到五年的發展是什麼?”。我當時的標準回答是(原話):“成為在某一方面能夠獨當一面的技術專家“。後來經歷了幾家不同的公司,換了不同的方向,才知道這個真是一個很難的問題。因為兵無常勢,什麼東西都是在不斷的變化,一早的時候看好的東西可能會被淘汰。

(幾乎)沒有人能夠看準技術的下一個方向,因為這個問題實在是太難了,能夠做到這一點的你就成為了技術界的巴菲特了。比如說11年加入Google,14年加入Facebook,16年加入阿里巴巴。做到這一點的人肯定有資本也有眼光去做風險投資,就算不做風險投資那麼財務自由也是妥妥的。

現在畢業十年,從北京到上海到矽谷,從國內網際網路公司外企,看到了公司好的地方和壞的地方,這裡只是根據自己的經歷寫一些大方向選擇建議,僅供參考。


一、行業背景很重要

行業背景非常重要;工作3年後必須確定自己的行業背景,比如一直從事電信行業,一直從事銀行專案,一直從事ERP行業等等。

一個程式設計師不可能是一直寫程式碼的,就是寫程式碼也要知道業務邏輯,滿足什麼需求;俗話說隔行如隔山,每個行業的業務都不一樣,甚至差別很大,比如你一直從事流媒體的研究,讓你跳槽到一家銀行專案,完了,一切從頭學吧,以前的行業經驗都用不上了;而且,一個公司公司招人,就是希望找到那些很容易上手,不需要培訓業務很久的程式設計師;頻繁跳槽的朋友,一定要注意這點;

一直在一個行業呆久了,就可以成為這個行業的專家;我們可以經常看到,一個專案組的某個leader,程式碼寫的一般,但是卻可以跟客戶流暢的溝通,控制著新需求的提出,bug的修正等等;而客戶也很願意跟他打交道,因為那些老的專案只有他能維護,他甚至熟悉系統的每一張表結構——-可想在這個行業呆的時間有多久啦。

第二、合理的職業規劃

什麼是職業規劃—-就是你短期或者長期的一個職業計劃!大道理不講,咱簡單點。先問你幾個問題:

  1. 你工作幾年了,你願意一直和新入行的新手一樣就是個簡單的程式設計師嗎?

  2. 你願意一直寫程式碼,而不關心其他嗎?

  3. 一個專案的前期需求,設計,後期部署維護,領導找到你,你說咱搞不定,行嗎?

程式設計師不是敲程式碼的機器。第一年太多東西不懂,你可以一切聽從老大的安排,敲敲程式碼,看看資料庫,測試自己和別人的程式碼;但是第二年,你還是這樣嗎?不可能的,一年的經驗你完全可以入行了,是時候該學習怎麼進行需求分析,怎麼設計資料庫,怎麼寫各類文件,怎麼寫更好的程式碼?這是高階程式設計師的要求!

三、什麼是高階程式設計師?

具有分析設計能力,能進行技術攻關,而且具有某行業深厚背景的程式設計師!

所有,一個專案立項後,你要積極的參與到前期設計中,跟老同志們一道思考分析問題,學習經驗!OK,你這就成長啦!

千萬不要認為程式設計師就是寫程式碼的哦!!!

而且,通過一個專案的開發,你要能粗略的統計出一個功能的開發時間;比如一個模組有20個小功能點,你開發了80個小時,每個小功能點平均2小時——這時在前期就能評估工作量啦。當然每個人的效率和工作質量是不同的,因人而異,但是大概的工作量應該是可以統計出來的,用於統計一個專案的工作週期;

四、不要覺得業務程式碼一樣很牛逼

有人認為寫業務程式碼一樣可以很牛逼,理由是業務程式碼一樣可以有各種技巧,例如可以使用封裝和抽象使得業務程式碼更具可擴充套件性,可以通過和產品多交流以便更好的理解和實現業務,日誌記錄好了問題定位效率可以提升10倍等等。

業務程式碼一樣有技術含量,這點是肯定的,業務程式碼中的技術是每個程式設計師的基礎,但只是掌握了這些技巧,並不能成為技術大牛,就像遊戲中升級打怪一樣,開始打小怪,經驗值很高,越到後面經驗值越少,打小怪已經不能提升經驗值了,這個時候就需要打一些更高階的怪,刷一些有挑戰的副本了,沒看到哪個遊戲只要一直打小怪就能升到頂級的。成為技術大牛的路也是類似的,你要不斷的提升自己的水平,然後面臨更大的挑戰,通過應對這些挑戰從而使自己水平更上一級,然後如此往復,最終達到技術大牛甚至業界大牛的境界,寫業務程式碼只是這個打怪升級路上的一個挑戰而已,而且我認為是比較初級的一個挑戰。

所以我認為:業務程式碼都寫不好的程式設計師肯定無法成為技術大牛,但只把業務程式碼寫好的程式設計師也還不能成為技術大牛。

五、別以上班太忙沒時間學習為藉口

很多人認為自己沒有成為技術大牛並不是自己不聰明,也不是自己不努力,而是中國的這個環境下,技術人員加班都太多了,導致自己沒有額外的時間進行學習。

這個理由有一定的客觀性,畢竟和歐美相比,我們的加班確實要多一些,但這個因素只是一個需要克服的問題,並不是不可逾越的鴻溝,畢竟我們身邊還是有那麼多的大牛也是在中國這個環境成長起來的。

我認為有幾個誤區導致了這種看法的形成:

  • 上班做的都是重複工作,要想提升必須自己額外去學習

  • 形成這個誤區的主要原因還是在於認為“寫業務程式碼是沒有技術含量的”,而我現在上班就是寫業務程式碼,所以我在工作中不能提升。

  • 學習需要大段的連續時

  • 很多人以為要學習就要像學校上課一樣,給你一整天時間來上課才算學習,而我們平時加班又比較多,週末累的只想睡懶覺,或者只想去看看電影打打遊戲來放鬆,所以就沒有時間學習了。

實際上的做法正好相反:首先我們應該在工作中學習和提升,因為學以致用或者有例項參考,學習的效果是最好的;其次工作後學習不需要大段時間,而是要擠出時間,利用時間碎片來學習。

據不完全統計,截至目前(2017.07)為止,中國Java程式設計師的數量已經超過了100萬。而且,隨著IT培訓業的持續發展和大量的應屆畢業生進入社會,Java程式設計師面臨的競爭壓力越來越大。那麼,作為一名Java程式設計師,怎樣努力才能快速成長為一名高階的程式設計師或者架構師,或者說一名優秀的高階工程師或架構師應該有怎樣的技術知識體系,這不僅是一個剛剛踏入職場的初級程式設計師,也是工作三五年之後開始迷茫的老程式設計師,都必須要面對和想明白的問題。

我總結出一個Java程式設計師的工作2-5年成長路線圖

一、閱讀原始碼

深入的Java學習,經典原始碼閱讀不可少:


二、分散式架構

隨著業務越來越複雜,資料量越來越大,併發量越來越大,單體的架構模式顯然再也無法對應,作為Java後端架構師,高併發+高可用+海量資料的分散式架構體系,是必不可少的:


三、微服務技術體系

服務分層,微服務架構是架構升級的必由之路,Java技術體系,和微服務相關的技術有哪需要深入學習呢?


四、效能優化

作為後端Java技術專家,解決效能問題才真正體現一個架構師的功力。只有深入學習JVM底層原理,Mysql底層優化以及Tomcat調優,做到知其然,知其所以然:


那如何學習才能快速入門並精通呢?

當真正開始學習的時候難免不知道從哪入手,導致效率低下影響繼續學習的信心。

為了讓學習變得輕鬆、高效,今天給大家免費分享一套阿里架構師傳授的一套教學資源。

這套視訊課程詳細講解了(Spring,MyBatis,Netty原始碼分析,高併發、高效能、分散式、微服務架構的原理,JVM效能優化、分散式架構)等這些成為架構師必備的內容!

加QQ群681065582免費領取以上資料

群內已經將知識體系整理好(原始碼,筆記,PPT,學習視訊)進群免費領取。


分享給喜歡Java,喜歡程式設計,有夢想成為架構師的程式設計師們,希望能夠幫助到你們。

最後,做一個愛思考,懂思考,會思考的程式設計師。