高階Java程式設計師在企業中應該具備的能力
從我個人的角度來看,這些做了3-5年的所謂高階程式員,充其量,就是修修改改寫了幾行程式碼,他們的工作性質,做3年,5年,甚至10年,我相信也進步不了什麼。
尤其是現在市場上大量的外包需求,要求快速的切入,開發的程式設計師,甚至還不瞭解所以然,就已經做出東西了,簡直就跟走過場似的,要想在這種環境下成長,必須要靠自己多學、多想、多動手,我是真心的希望中國的程式設計師可以一代勝過一代,代代出英才。
說回之前的話題,上面的現象存在就有一定的合理性,我不做過多的評價,但從我自己創立的網際網路公司金融堂來講,對高階程式設計師有這麼一些要求:
1、必須有一定的業務分析與流程意識,能夠做簡單的業務設計方案與功能分解。
2、有一定的效能優化經驗與能力,針對大資料(至少100W以上)做過設計處理與功能開發。
3、有小團隊(5人)的管理經驗,在人有協助的情況下,能夠基本駕馭10個人月工作量的專案。
4、必須會一種語言的設計與技能開發,雖不說精通,但是也要擅長,能夠處理日常多數情況,少數情況,通過摸索與嘗試後可以解決。

第一階段-——三年
我認為三年對於程式設計師來說是第一個門檻,這個階段將會淘汰掉一批不適合寫程式碼的人。這一階段,我們走出校園,邁入社會,成為一名程式設計師,正式從書本上的內容邁向真正的企業級開發。我們知道如何團隊協作、如何使用專案管理工具、專案版本如何控制、我們寫的程式碼如何測試如何在線上執行等等,積累了一定的開發經驗,也對程式碼有了一定深入的認識,是一個比較純粹的Coder的階段。
第二階段——五年
五年又是區分程式設計師的第二個門檻。有些人在三年裡,除了完成工作,在空餘時間基本不會研究別的東西,這些人永遠就是個Coder,年紀大一些勢必被更年輕的人給頂替;有些人在三年裡,除了寫程式碼之外,還熱衷於研究各種技術實現細節、看了N多好書、寫一些部落格、在Github上分享技術,這些人在五年後必然具備在技術上獨當一面的能力並且清楚自己未來的發展方向,從一個Coder逐步走向系統分析師或是架構師,成為專案組中不可或缺的人物。
第三階段——十年
十年又是另一個門檻了,轉行或是繼續做一名程式設計師就在這個節點上。如果在前幾年就抱定不轉行的思路並且為之努力的話,那麼在十年的這個節點上,有些人必然成長為一名對行業有著深入認識、對技術有著深入認識、能從零開始對一個產品進行分析的程式設計師,這樣的人在公司基本擔任的都是CTO、技術專家、首席架構師等最關鍵的職位,這對於自己絕對是一件榮耀的事,當然老闆在經濟上也絕不會虧待你。
就是保持良好的心態。古語說得好,只要功夫深,鐵杵磨成針,面試的成功與否,在於平時的積累,臨時抱抱佛腳,看兩道面試題是沒有用的,只要平時足夠努力,成功是水到渠成的事情,平時不怎麼研究技術的,那也就是個聽天由命的事情,只要充分地展示平時自己的所學就可以了。
因此在我看來,不要把面試當作面試,當做一次技術交流,把面試的心態從我要找到一份工作轉變為我要通過面試去發現不足、提升自己,這樣就會平和多了,即使失敗也不會有太多失望的感覺。
另外,如果平時自己熱衷於研究技術的朋友,真的要有自信,不要覺得別人面試你別人就比你厲害。面試官未必比你優秀,他問的問題往往都是他平時研究得比較多的問題,你一樣有很多自己的研究面試官未必知道。

另外要想立足於網際網路公司,且能在網際網路浪潮中不被淹沒,對於專案的開發實戰演練是不必可少的技能,也是對自身能力的一個衡量,有多少的量對等於獲得多少的回報。看似簡單的一個專案需求圖譜,其中的底層原理,實現原理又能知道多少?你搭建一個完整的B2C專案平臺到底需要多少知識?這一切都是需要我們考量的。

首先 ,你需要有深度的Java基礎知識:你會開始看《Java程式設計思想》、《Effective Java》。這兩本書絕非普通的基礎,而是至少擁有1~2年卓越的java開發者才有可能學完,而且這兩本書一般要讀完需要1年左右的時間。
其次 ,你需要看一些開源框架的原始碼,如果單單使用框架是實現業務而不去深入框架核心,架構思想,過幾年有可能會發現你脫離了框架什麼活也幹不成。
現在加群即可獲取Java工程化、高效能及分散式、高效能、高架構。效能調優、Spring,MyBatis,Netty原始碼分析和大資料等多個知識點高階進階乾貨的直播免費學習許可權及領取相關資料,群號:835638062 點選連結加入群聊【Java高階架構學習交流】:https://jq.qq.com/?_wv=1027&k=5S3kL3v

再者 ,你在這這個階段已經不能侷限於滿足於講程式碼寫出來,此時此刻的你需要追求高質量高效能的程式碼了,你此時需要研究的知識就會如下圖所示:

是不是學習了上面做這些技術就夠了呢?相信看到這裡的碼友已經知道答案了,沒錯,你還需要知道分散式架構的知識

另外,目前企業有大小,平臺有限制,甚至對開放的方式方案都出現了獨立的方式,Facebook每個模組的功能從設計到開發再到維護,由後端到前端再到客戶端都是通過一程式設計師來進行的,這些就是所謂的全棧工程師,那麼java開發中,我們伺服器也有其自身的獨到性;那麼如何將龐大的後臺系統分部成為多個功能獨立,部署獨立,維護獨立,鬆耦合的獨立服務呢?從而減少企業的溝通成本和維護成本呢?毫無疑問,這就是微服務。

最後,如果說開發是一個戰場,那麼程式猿們就是勇猛的戰士,我們的戰鬥需要協調合作,統一排程,統一部署。那麼完美的配合自然需要優秀的開發工具,那就就是我們的團隊協作工具的學習。

現在加群即可獲取Java工程化、高效能及分散式、高效能、高架構。效能調優、Spring,MyBatis,Netty原始碼分析和大資料等多個知識點高階進階乾貨的直播免費學習許可權及領取相關資料,群號:835638062 點選連結加入群聊【Java高階架構學習交流】:https://jq.qq.com/?_wv=1027&k=5S3kL3v