1. 程式人生 > >作為Java程式設計師,怎樣才能比別人更優秀?

作為Java程式設計師,怎樣才能比別人更優秀?

1. 不要吝嗇投資自己

和朋友一起搓一頓大概人均幾十或者百把塊錢,基本上我們都很隨意,根本不會覺得這很貴或者很浪費。但是每當我們去買書或者去買一些優質的視訊教程的時候,很多人會覺得很貴,甚至不太願意出這個錢。

的確,技術書籍都很貴,動不動就50-100的,我想說的是什麼呢?永遠不要吝嗇給自己投資,我研究生讀的是通訊專業,在學校自學的Java,我看過網上很多的免費視訊教程,免費的教程有兩個特點:一是入門的,二是質量不高的。但是要想真的提升自己,這些入門的教程是不夠的,網上有些收費的教程確實不錯,我讀書那會兒也買過好幾個專案視訊跟著認認真真學習,收穫頗豐。

而且現在也是知識付費時代了,入門資料一大堆,真正能提升自己Level的東西,哪怕花點錢,給自己投資永遠是穩賺的生意。不要在乎那點錢。你和別人的差距,往往真的就是這一兩百、兩三百塊錢給拉開的。因為知識創造的價值要比這幾百塊錢來的更猛。

2. 站在巨人的肩膀上

我們平時在開發的時候,會遇到一些功能上的東西要實現,當然咯,如果開發經驗豐富,基本知道用什麼技術去實現,但是對於開發經驗不足的朋友來說,首先不要想著自己去造輪子,除非是非常冷門的一些技術,否則絕大多數現在網際網路上都有了較多的解決方案,我們可以用來參考改進。軟體開發,說的詼諧一點,就是 copy+改。因為工作不是學習,它是有deadline的。

還有一點,我們開發一般都會有很多類庫,同一個功能可能有多個類庫都可以實現。就像移動、聯通和電信都可以滿足你通訊的需求一樣,但是你選擇哪一個,就看你自身的需要了。我們在實現某個功能的時候也是,如果能夠選擇一個很好的開源類庫,那麼必將是事半功倍,不管是從效率和穩定性上來說,都比我們自己實現要好得多。所以我們要站在巨人的肩膀上。

3. 寫程式碼要規範

也許我一開始自學程式設計的時候,就跟著一些視訊教程的緣故,受到那些大牛的影響,所以一開始我寫程式碼就比較規範。我特別看不慣下面這種程式碼:

Integer index=0;

if(s_user.getNum()==0){

redisUtil.setInfo(s_user,0,-1);

}

這幾行程式碼沒有任何意義,我就是舉個例子而已。如果是我寫,我會寫成下面這樣:

Integer index = 0;

if(null != sUser && 0 == sUser.getNum()){

redisUtil.setInfo(sUser, 0, -1);

}

不管是空格上,還是命名規範上,甚至是空指標異常上,這些都是舉個小例子,我們寫程式碼一定要規範,這也是一個人有沒有一個良好的習慣和態度的體現。最起碼,可能你同事也會看你程式碼,請善待同事,程式設計師何苦難為程式設計師。

4. 不停地給自己充電

我們不能一直啃老本,幹軟體這一行,技術更新非常快,今年上半年學的技術,估計下半年就有了新的版本,我們要一直不停地給自己充電,不停地學習。哪怕是不停的總結自身不足,也比停滯不前要好,最起碼自己沒閒著。

我們還要有一定的憂患意識,公司每年都會輸入新的年輕血液,有初學者,也有牛逼人物,我們不要讓僱主逼著自己去學習,自己要有主動充電意識,這樣才不會被周圍的人給超越,才不會給後來者給超越。但是這都不是最根本的原因和出發點,最根本地,還是為了提升自己的能力。

5. 計劃、堅持與執行力

我一直認為,一個優秀的人都應該是好的時間管理者,不管我們現在的能力如何,如果我們能合理的安排時間,分清主次,步步為營地去執行,堅持下來,我們肯定能收穫很多,而且進步很快。

我從讀研那會兒開始,每天學習,每週都會寫幾篇技術文章,總結好了,就寫到部落格裡,沒總結完的,就放在本地繼續完善。我當初堅持寫部落格的目的很簡單:鞏固知識,形成系統,等到畢業找工作時可以很自豪的把部落格地址放到簡歷上。這些我都做到了,我在CSDN寫部落格堅持三年多了,這期間我受益良多,不僅僅是為了找工作,也是個人品牌的積累,這非常重要。當由量變形成質變的那一刻,效果是很可怕的。如果你還沒有部落格,那希望看完這篇文章之後,去註冊一個吧。

壞習慣養成很簡單,好習慣養成很難,但是不管哪個,養成之後,都是蝴蝶效應。是良性迴圈還是惡性迴圈,就看自己了。

6. 放低自己的姿態

是在分享還是在吹逼,這點我們一下子就能辨別出來,我也有所謂的朋友經常在我面前吹牛逼,可能這是一個人的本性,每次跟我聊天都要海吹一波,我只能苦笑一番。這是做人的一種方式。

我是同濟大學碩士畢業,可能相比於大部分人來說,我這個背景還算可以了,但是我一直為人低調,真心待人,從來不會因為你是大專或者一個不起眼的學校畢業的,我就在你面前吹牛逼,說一些大話,站在高處俯視你。我覺得人與人之間靠的是真誠,我真誠待人,別人肯定也會真誠待我。而不是我讓別人覺得我有多牛逼,那樣換來的也不是真正的友誼。

任何人都是從0開始往上爬的,你的背景好,可能快一點,別人差點,可能就會慢點,但是這不能說明別人就不夠努力,我很佩服那些先天條件差,但是卻非常努力的想要提升自己的人,我特別願意給這些人幫助。我的粉絲當中,有很多很多還在學校讀書的學生,也有很多大專生,這些粉絲在微信裡跟我聊天,讓我指點指點(當然,指點不敢當,我一般都是建議和分享),我都會耐心的把自己的想法結合他們的處境,給一個我覺得比較好的建議。別人來問我是看得起我,我能幫上忙的,基本上都義不容辭。

7.不斷的學習提升自己

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

很多人在問我,程式設計師如何拿高薪,其實總結出來還是一句話,你的技術決定你的能力已經薪資。下面是我的一個總結技術:

一、常用的設計模式

總體來說設計模式分為三大類:

建立型模式,共五種:工廠方法模式、抽象工廠模式、單例模式、建造者模式、原型模式。

結構型模式,共七種:介面卡模式、裝飾器模式、代理模式、外觀模式、橋接模式、組合模式、享元模式。

行為型模式,共十一種:策略模式、模板方法模式、觀察者模式、迭代子模式、責任鏈模式、命令模式、備忘錄模式、狀態模式、訪問者模式、中介者模式、直譯器模式。

其實還有兩類:併發型模式和執行緒池模式。用一個圖片來整體描述一下:

 

作為Java程式設計師,怎樣才能比別人更優秀?

 

二、開源框架原始碼分析

程式設計師每天都和程式碼打交道。經過數年的基礎教育和職業培訓,大部分程式設計師都會「寫」程式碼,或者至少會抄程式碼和改程式碼。但是,會讀程式碼的並不在多數,會讀程式碼又真正讀懂一些大專案的原始碼的,少之又少。這也造成了很多錯誤看原始碼的方式。

 

作為Java程式設計師,怎樣才能比別人更優秀?

 

 

三、分散式架構

迎接高併發大資料的挑戰,從深度到廣度完善知識體系,成為下一個網際網路高薪人才。

理論結合實戰,透徹理解分散式架構及其解決方案。

面向人群

需要突破瓶頸;

傳統行業轉型進入網際網路行業的人群

分散式架構原理

1、分散式架構演進過程

2、如何把應用從單機擴充套件到分散式

3、CDN加速靜態檔案訪問

4、系統監控、容災、儲存動態擴容

5、架構設計及業務驅動劃分

6、CAP、Base理論以及其應用

分散式架構中介軟體

1、分散式架構網路通訊原理剖析

2、通訊協議中的序列化和反序列化

3、基於框架的RPC技術Webservice/RMI/Hessian

4、深入分析Zookeeper在disconf配置中心的應用

5、基於Zookeeper實現分散式伺服器動態上下線感知

6、深入分析Zookeeper Zab協議及選舉機制原始碼解讀

7、Dubbo管理中心及監控平臺安裝部署

8、基於Dubbo的分散式系統架構實戰

9、Dubbo容錯機制及高擴充套件性分析

分散式架構實戰

1、分散式全域性ID生成方案

2、Session跨域共享及企業級單點登入解決方案實戰

3、分散式事務解決方案實戰

4、高併發下的服務降級、限流實戰

5、基於分散式架構下分散式鎖的解決方案實戰

6、分散式架構下實現分散式定時排程

 

作為Java程式設計師,怎樣才能比別人更優秀?

 

 

四、微服務架構

微服務架構是一項在雲中部署應用和服務的新技術

微服務不需要像普通服務那樣成為一種獨立的功能或者獨立的資源

微服務作為一項在雲中部署應用和服務的新技術已成為當下最新的熱門話題

微服務的基本思想在於考慮圍繞著業務領域元件來建立應用,這些應用可獨立地進行開發、管理和加速。在分散的元件中使用微服務雲架構和平臺,使部署、管理和服務功能交付變得更加簡單。

使用微服務構建現代化應用程式是很有意義的,因為它讓你既利用了擴充套件橫向擴充套件架構,也利用縱向擴充套件架構;還額外得到API的組合,且在整個業務中可重複利用。可能,每一分鐘構都在交付新服務,這樣你就必須擁有一個敏捷的且響應的應用程式平臺,這一平臺一直在不斷改進中。

 

作為Java程式設計師,怎樣才能比別人更優秀?

 

 

五、工程化專題

工欲善其事必先利其器,不管是小白,還是資深開發,都需要先選擇好的工具。提升開發效率和團隊協作效率,讓自己有更多時間來思考

面向人群:具有1-5年工作經驗的人群

 

作為Java程式設計師,怎樣才能比別人更優秀?

 

六、專案實戰

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

 

作為Java程式設計師,怎樣才能比別人更優秀?

歡迎工作一到五年的Java工程師朋友們加入Java工程師學習交流群:795632998
群內提供免費的Java架構學習資料(裡面有高可用、高併發、高效能及分散式、Jvm效能調優、Spring原始碼,MyBatis,Netty,Redis,Kafka,Mysql,Zookeeper,Tomcat,Docker,Dubbo,Nginx等多個知識點的架構資料)合理利用自己每一分每一秒的時間來學習提升自己,不要再用"沒有時間“來掩飾自己思想上的懶惰!趁年輕,使勁拼,給未來的自己一個交代!