年底了,該給自己寫(xiě)點(diǎn)總結(jié)了!
從畢業(yè)到現(xiàn)在已經(jīng)快4年啦,一直在Java的WEB開(kāi)發(fā)行業(yè)混跡。我不是牛人,但是自我感覺(jué)還算是個(gè)合格的程序員,有必要寫(xiě)下自己將近4年來(lái)的經(jīng)歷,給自我以提示,給剛?cè)胄械呐笥烟峁c(diǎn)參考。
貌似這一點(diǎn)適應(yīng)的行業(yè)最廣,但是我可以很肯定的說(shuō):當(dāng)你從事web開(kāi)發(fā)一年后,重新找工作時(shí),才會(huì)真實(shí)的感受到這句話。
工作第一年,往往是什么都充滿新鮮感,什么都學(xué)習(xí),沖勁十足的一年;WEB行業(yè)知識(shí)更新特別快,今天一個(gè)框架的新版本,明天又是另一個(gè)新框架,有時(shí)往往根據(jù)項(xiàng)目的需要來(lái)不斷學(xué)習(xí)新東西;所有,很多時(shí)候感覺(jué),自己用過(guò)的東西真多呀!但是真正深入研究的東西卻不多。
面試,是跳槽后第一個(gè)需要面對(duì)的問(wèn)題;而且不同公司面試的著重點(diǎn)不同;但是卻有一個(gè)共同點(diǎn):Java基礎(chǔ)是必考的。工作第一年,可能問(wèn)你String對(duì)象創(chuàng)建的理解,常用的框架是什么等等;工作第二年,就問(wèn)你Java內(nèi)存分配機(jī)制是什么,類(lèi)是如何加載的等等;第三年,就問(wèn)你常用的設(shè)計(jì)模式是什么,你在工作中充當(dāng)什么角色,怎么獨(dú)立完成一個(gè)模塊等等;
可以看出------這是一個(gè)典型的程序員的成長(zhǎng)過(guò)程:
使用Java---->深入理解Java積累經(jīng)驗(yàn)------>獨(dú)立設(shè)計(jì)分析能力------>獨(dú)當(dāng)一面的多面手!
因此,必須學(xué)習(xí):
列舉一些技術(shù)
比如對(duì)集合類(lèi),并發(fā)包,IO/NIO,JVM,內(nèi)存模型,泛型,異常,反射,等有深入了解,最好是看過(guò)源碼了解底層的設(shè)計(jì)。比如一般面試都會(huì)問(wèn)ConcurrentHashMap,CopyOnWrite,線程池,CAS,AQS,虛擬機(jī)優(yōu)化等知識(shí)點(diǎn),因?yàn)檫@些對(duì)互聯(lián)網(wǎng)的企業(yè)是絕對(duì)重要的。而且一般人這關(guān)都過(guò)不了,還發(fā)鬧騷說(shuō)這些沒(méi)什么用,為什么要面試。舉一例子,在使用線程池時(shí),因?yàn)槭褂昧藷o(wú)界隊(duì)列,在遠(yuǎn)程服務(wù)異常情況下導(dǎo)致內(nèi)層飆升,怎么去解決?你要是連線程池都不清楚,你怎么去玩?
1. 數(shù)據(jù)庫(kù)再舉一例,由于對(duì)ThreadLocal理解出錯(cuò),使用它做線程安全的控制,導(dǎo)致沒(méi)能實(shí)現(xiàn)真的線程安全。所以作為一個(gè)拿兩萬(wàn)的JAVA程序員這點(diǎn)基礎(chǔ)是要有的。最常用的是Oracle了(當(dāng)然銀行項(xiàng)目等需要DB2等),熟練掌握使用存儲(chǔ)過(guò)程,觸發(fā)器等;
2. UML
項(xiàng)目中經(jīng)常要寫(xiě)文檔,項(xiàng)目經(jīng)理的基本功,程序員走向設(shè)計(jì)的基本功;
3. 設(shè)計(jì)模式
這個(gè)建議多看吧,在閱讀源碼中體會(huì);
4. linux系統(tǒng)
需要掌握常用的linux命令------部署在windows操作系統(tǒng)上的項(xiàng)目很少吧。
其他就不多說(shuō)了,大家可以補(bǔ)充。
學(xué)習(xí)上,興趣是最大的老師;項(xiàng)目驅(qū)動(dòng)也是不錯(cuò)的選擇,總之,不學(xué)習(xí)不行。
在此分享給工作2-5年的Java程序員一些學(xué)習(xí)視頻
第二. 積累行業(yè)背景;
行業(yè)背景非常重要;工作3年后必須確定自己的行業(yè)背景,比如一直從事電信行業(yè),一直從事銀行項(xiàng)目,一直從事ERP行業(yè)等等。
一個(gè)程序員不可能是一直寫(xiě)代碼的,就是寫(xiě)代碼也要知道業(yè)務(wù)邏輯,滿足什么需求;俗話說(shuō)隔行如隔山,每個(gè)行業(yè)的業(yè)務(wù)都不一樣,甚至差別很大,比如你一直從事流媒體的研究,讓你跳槽到一家銀行項(xiàng)目,完了,一切從頭學(xué)吧,以前的行業(yè)經(jīng)驗(yàn)都用不上了;而且,一個(gè)公司公司招人,就是希望找到那些很容易上手,不需要培訓(xùn)業(yè)務(wù)很久的程序員;頻繁跳槽的朋友,一定要注意這點(diǎn);
一直在一個(gè)行業(yè)呆久了,就可以成為這個(gè)行業(yè)的專(zhuān)家;我們可以經(jīng)??吹剑粋€(gè)項(xiàng)目組的某個(gè)leader,代碼寫(xiě)的一般,但是卻可以跟客戶(hù)流暢的溝通,控制著新需求的提出,bug的修正等等;而客戶(hù)也很愿意跟他打交道,因?yàn)槟切├系捻?xiàng)目只有他能維護(hù),他甚至熟悉系統(tǒng)的每一張表結(jié)構(gòu)-------可想在這個(gè)行業(yè)呆的時(shí)間有多久啦。
第三. 合理的職業(yè)規(guī)劃
什么是職業(yè)規(guī)劃----就是你短期或者長(zhǎng)期的一個(gè)職業(yè)計(jì)劃!大道理不講,咱簡(jiǎn)單點(diǎn)。先問(wèn)你幾個(gè)問(wèn)題:
A.你工作幾年了,你愿意一直和新入行的新手一樣就是個(gè)簡(jiǎn)單的程序員嗎?
B. 你愿意一直寫(xiě)代碼,而不關(guān)心其他嗎?
C. 一個(gè)項(xiàng)目的前期需求,設(shè)計(jì),后期部署維護(hù),領(lǐng)導(dǎo)找到你,你說(shuō)咱搞不定,行嗎?
程序員不是敲代碼的機(jī)器。第一年太多東西不懂,你可以一切聽(tīng)從老大的安排,敲敲代碼,看看數(shù)據(jù)庫(kù),測(cè)試自己和別人的代碼;但是第二年,你還是這樣嗎?不可能的,一年的經(jīng)驗(yàn)?zāi)阃耆梢匀胄辛耍菚r(shí)候該學(xué)習(xí)怎么進(jìn)行需求分析,怎么設(shè)計(jì)數(shù)據(jù)庫(kù),怎么寫(xiě)各類(lèi)文檔,怎么寫(xiě)更好的代碼?這是高級(jí)程序員的要求!
什么是高級(jí)程序員?具有分析設(shè)計(jì)能力,能進(jìn)行技術(shù)攻關(guān),而且具有某行業(yè)深厚背景的程序員!
所有,一個(gè)項(xiàng)目立項(xiàng)后,你要積極的參與到前期設(shè)計(jì)中,跟老同志們一道思考分析問(wèn)題,學(xué)習(xí)經(jīng)驗(yàn)!OK,你這就成長(zhǎng)啦!
第四. 良好的心態(tài)和體態(tài)
程序員必須有責(zé)任心!這點(diǎn)非常重要。遇上問(wèn)題,不能隨便的踢皮球,很認(rèn)真的和別人溝通,提出自己的見(jiàn)解,和客戶(hù)聯(lián)系,才能把問(wèn)題解決。技術(shù)上的問(wèn)題不是問(wèn)題,總可以解決,但是需求上的問(wèn)題,必須搞清楚!一旦需求出錯(cuò),一個(gè)項(xiàng)目就可能延期或者失敗。程序員的責(zé)任心決定了他的成長(zhǎng),一個(gè)有責(zé)任心的人才可能成為骨干,讓領(lǐng)導(dǎo)信任!
其次就是能頂住壓力,大家都知道程序員要加班,壓力大,所有遇到問(wèn)題必須不輕易放棄,合理的根據(jù)能力去處理!
身體是革命的本錢(qián),程序員尤其重要,天天坐在電腦前,很容易發(fā)胖,變成鴨梨身材,所有多鍛煉呀!
第五.關(guān)于跳槽
到某些程度就不要跳槽了,在一家有發(fā)展前景或者工作開(kāi)心的工作長(zhǎng)久呆下去吧,不能跟年輕人比熱情了,這時(shí)候要的是穩(wěn)重,在公司充當(dāng)?shù)氖且粋€(gè)資深的IT從業(yè)者,幫人優(yōu)化程序,分析需求,為項(xiàng)目出謀劃策解決疑難等。
如果想學(xué)習(xí)Java工程化、高性能及分布式、高性能、深入淺出。性能調(diào)優(yōu)、Spring,MyBatis,Netty源碼分析的朋友可以加我的Java進(jìn)階群,675047716,群里有阿里大牛直播講解技術(shù),以及Java大型互聯(lián)網(wǎng)技術(shù)的視頻免費(fèi)分享給大家。