都說Java程序員是喫青春飯,阿里架構師告訴你怎麼樣才能讓自己更具有競爭力呢?




年底了,該給自己寫點總結了!

從畢業到現在已經快4年啦,一直在Java的WEB開發行業混跡。我不是牛人,但是自我感覺還算是個合格的程序員,有必要寫下自己將近4年來的經歷,給自我以提示,給剛入行的朋友提供點參考。

貌似這一點適應的行業最廣,但是我可以很肯定的說:當你從事web開發一年後,重新找工作時,纔會真實的感受到這句話。

工作第一年,往往是什麼都充滿新鮮感,什麼都學習,衝勁十足的一年;WEB行業知識更新特別快,今天一個框架的新版本,明天又是另一個新框架,有時往往根據項目的需要來不斷學習新東西;所有,很多時候感覺,自己用過的東西真多呀!但是真正深入研究的東西卻不多。

面試,是跳槽後第一個需要面對的問題;而且不同公司面試的着重點不同;但是卻有一個共同點:Java基礎是必考的。工作第一年,可能問你String對象創建的理解,常用的框架是什麼等等;工作第二年,就問你Java內存分配機制是什麼,類是如何加載的等等;第三年,就問你常用的設計模式是什麼,你在工作中充當什麼角色,怎麼獨立完成一個模塊等等;

可以看出------這是一個典型的程序員的成長過程:

使用Java---->深入理解Java積累經驗------>獨立設計分析能力------>獨當一面的多面手!

因此,必須學習:

列舉一些技術

比如對集合類,併發包,IO/NIO,JVM,內存模型,泛型,異常,反射,等有深入瞭解,最好是看過源碼瞭解底層的設計。比如一般面試都會問ConcurrentHashMap,CopyOnWrite,線程池,CAS,AQS,虛擬機優化等知識點,因爲這些對互聯網的企業是絕對重要的。而且一般人這關都過不了,還發鬧騷說這些沒什麼用,爲什麼要面試。舉一例子,在使用線程池時,因爲使用了無界隊列,在遠程服務異常情況下導致內層飆升,怎麼去解決?你要是連線程池都不清楚,你怎麼去玩?

1. 數據庫再舉一例,由於對ThreadLocal理解出錯,使用它做線程安全的控制,導致沒能實現真的線程安全。所以作爲一個拿兩萬的JAVA程序員這點基礎是要有的。最常用的是Oracle了(當然銀行項目等需要DB2等),熟練掌握使用存儲過程,觸發器等;

2. UML

項目中經常要寫文檔,項目經理的基本功,程序員走向設計的基本功;

3. 設計模式

這個建議多看吧,在閱讀源碼中體會;

4. linux系統

需要掌握常用的linux命令------部署在windows操作系統上的項目很少吧。

其他就不多說了,大家可以補充。

學習上,興趣是最大的老師;項目驅動也是不錯的選擇,總之,不學習不行。

在此分享給工作2-5年的Java程序員一些學習視頻

第二. 積累行業背景;

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

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

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

第三. 合理的職業規劃

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

A.你工作幾年了,你願意一直和新入行的新手一樣就是個簡單的程序員嗎?

B. 你願意一直寫代碼,而不關心其他嗎?

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

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

什麼是高級程序員?具有分析設計能力,能進行技術攻關,而且具有某行業深厚背景的程序員!

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


第四. 良好的心態和體態

程序員必須有責任心!這點非常重要。遇上問題,不能隨便的踢皮球,很認真的和別人溝通,提出自己的見解,和客戶聯繫,才能把問題解決。技術上的問題不是問題,總可以解決,但是需求上的問題,必須搞清楚!一旦需求出錯,一個項目就可能延期或者失敗。程序員的責任心決定了他的成長,一個有責任心的人才可能成爲骨幹,讓領導信任!

其次就是能頂住壓力,大家都知道程序員要加班,壓力大,所有遇到問題必須不輕易放棄,合理的根據能力去處理!

身體是革命的本錢,程序員尤其重要,天天坐在電腦前,很容易發胖,變成鴨梨身材,所有多鍛鍊呀!

第五.關於跳槽

到某些程度就不要跳槽了,在一家有發展前景或者工作開心的工作長久呆下去吧,不能跟年輕人比熱情了,這時候要的是穩重,在公司充當的是一個資深的IT從業者,幫人優化程序,分析需求,爲項目出謀劃策解決疑難等。

如果想學習Java工程化、高性能及分佈式、高性能、深入淺出。性能調優、Spring,MyBatis,Netty源碼分析的朋友可以加我的Java進階羣,582100479,羣裏有阿里大牛直播講解技術,以及Java大型互聯網技術的視頻免費分享給大家。

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