程序員從開始選擇到堅持下去,工做了六年對一個程序員意味什麼?在職位上:高級開發工程師?架構師?技術經理?or ... ?在能力上:各類編碼無壓力?核心代碼無壓力?平臺架構無壓力? or ... fuck?看着這些問號都心累。相同六年,不一樣程序員卻走在了不一樣的路線,有些能在六年成爲架構師,有些卻仍是程序員,不是工做年限加長而已,那麼,六年你迷惘了嗎?又走到了那個十字路口?程序員
畢業六年,從北京到上海到硅谷,從國內互聯網公司外企,看到了公司好的地方和壞的地方,這裏只是根據本身的經歷寫一些大方向選擇建議,僅供參考。web
第1、合理的職業規劃spring
什麼是職業規劃—-就是你短時間或者長期的一個職業計劃!大道理不講,咱簡單點。先問你幾個問題:sql
a.你工做幾年了,你願意一直和新入行的新手同樣就是個簡單的程序員嗎?數據庫
b. 你願意一直寫代碼,而不關心其餘嗎?編程
c. 一個項目的前期需求,設計,後期部署維護,領導找到你,你說咱搞不定,行嗎?後端
程序員不是敲代碼的機器。第一年太多東西不懂,你能夠一切遵從老大的安排,敲敲代碼,看看數據庫,測試本身和別人的代碼;可是第二年,你仍是這樣嗎?不可能的,一年的經驗你徹底能夠入行了,是時候該學習怎麼進行需求分析,怎麼設計數據庫,怎麼寫各種文檔,怎麼寫更好的代碼?這是高級程序員的要求!springboot
第2、行業背景很重要性能優化
行業背景很是重要;工做3年後必須肯定本身的行業背景,好比一直從事電信行業,一直從事銀行項目,一直從事ERP行業等等。架構
一個程序員不多是一直寫代碼的,就是寫代碼也要知道業務邏輯,知足什麼需求;俗話說隔行如隔山,每一個行業的業務都不同,甚至差異很大,好比你一直從事流媒體的研究,讓你跳槽到一家銀行項目,完了,一切從頭學吧,之前的行業經驗都用不上了;並且,一個公司公司招人,就是但願找到那些很容易上手,不須要培訓業務好久的程序員;頻繁跳槽的朋友,必定要注意這點;
一直在一個行業呆久了,就能夠成爲這個行業的專家;咱們能夠常常看到,一個項目組的某個leader,代碼寫的通常,可是卻能夠跟客戶流暢的溝通,控制着新需求的提出,bug的修正等等;而客戶也很願意跟他打交道,由於那些老的項目只有他能維護,他甚至熟悉系統的每一張表結構——-可想在這個行業呆的時間有多久啦。
第3、別以上班太忙沒時間學習爲藉口
不少人認爲本身沒有成爲技術大牛並非本身不聰明,也不是本身不努力,而是中國的這個環境下,技術人員加班都太多了,致使本身沒有額外的時間進行學習。
實際上的作法正好相反:首先咱們應該在工做中學習和提高,由於學以至用或者有實例參考,學習的效果是最好的;其次工做後學習不須要大段時間,而是要擠出時間,利用時間碎片來學習。
對程序員來說,開發思想、架構、代碼就是財富,軟件的價值在於重複利用,而不是每一個東西,都從頭開發。有些模塊在很大程度上有必定的類似性,例如業務邏輯上都須要某個查詢字段、顯示某些信息,操做上都涉及到數據的增刪改查。這種重複的工做無形中增長了開發工做量。xjr快速開發框架正好解決了這方面的問題,xjr快速開發平臺是開發人員以某種編程語言或者某幾種編程語言(好比:目前流行的多種web技術,包括springboot, JPA,Druid, Activiti,Lombok,swagger,poi,WebSocket,Jquery,BootStrap, maven,Jenkins 等等 )爲基礎,將各類須要的功能封裝在不一樣的層中,具你們調用而開發出來的一個軟件。基礎簡單的功能交給它。能夠花更多時是來學習新知識,不斷提高自我。
Java程序員的工做2-5年成長路線能夠如下方面來。
1、閱讀源碼
深刻的Java學習,經典源碼閱讀不可少。
2、分佈式架構
隨着業務愈來愈複雜,數據量愈來愈大,併發量愈來愈大,單體的架構模式顯然再也沒法對應,做爲Java後端架構師,高併發+高可用+海量數據的分佈式架構體系,是必不可少的。
3、性能優化
做爲後端Java技術專家,解決性能問題才真正體現一個架構師的功力。只有深刻學習JVM底層原理,Mysql底層優化以及Tomcat調優,作到知其然,知其因此然。