前言
很多年前,剛剛從大學(xué)畢業(yè)的時(shí)候,很多公司來(lái)校招。其中最爛俗的一個(gè)面試問(wèn)題是:“你希望你之后三到五年的發(fā)展是什么?”。我當(dāng)時(shí)的標(biāo)準(zhǔn)回答是(原話):“成為在某一方面能夠獨(dú)當(dāng)一面的技術(shù)專家“。后來(lái)經(jīng)歷了幾家不同的公司,換了不同的方向,才知道這個(gè)真是一個(gè)很難的問(wèn)題。因?yàn)楸鵁o(wú)常勢(shì),什么東西都是在不斷的變化,一早的時(shí)候看好的東西可能會(huì)被淘汰。
(幾乎)沒(méi)有人能夠看準(zhǔn)技術(shù)的下一個(gè)方向,因?yàn)檫@個(gè)問(wèn)題實(shí)在是太難了,能夠做到這一點(diǎn)的你就成為了技術(shù)界的巴菲特了。比如說(shuō)11年加入Google,14年加入Facebook,16年加入阿里巴巴。做到這一點(diǎn)的人肯定有資本也有眼光去做風(fēng)險(xiǎn)投資,就算不做風(fēng)險(xiǎn)投資那么財(cái)務(wù)自由也是妥妥的。
現(xiàn)在畢業(yè)六年,從北京到上海到硅谷,從國(guó)內(nèi)互聯(lián)網(wǎng)公司外企,看到了公司好的地方和壞的地方,這里只是根據(jù)自己的經(jīng)歷寫(xiě)一些大方向選擇建議,僅供參考。
一、行業(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è)的專家;我們可以經(jīng)??吹剑粋€(gè)項(xiàng)目組的某個(gè)leader,代碼寫(xiě)的一般,但是卻可以跟客戶流暢的溝通,控制著新需求的提出,bug的修正等等;而客戶也很愿意跟他打交道,因?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)阃耆梢匀胄辛?,是時(shí)候該學(xué)習(xí)怎么進(jìn)行需求分析,怎么設(shè)計(jì)數(shù)據(jù)庫(kù),怎么寫(xiě)各類文檔,怎么寫(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)啦!
千萬(wàn)不要認(rèn)為程序員就是寫(xiě)代碼的哦!??!
而且,通過(guò)一個(gè)項(xiàng)目的開(kāi)發(fā),你要能粗略的統(tǒng)計(jì)出一個(gè)功能的開(kāi)發(fā)時(shí)間;比如一個(gè)模塊有20個(gè)小功能點(diǎn),你開(kāi)發(fā)了80個(gè)小時(shí),每個(gè)小功能點(diǎn)平均2小時(shí)——這時(shí)在前期就能評(píng)估工作量啦。當(dāng)然每個(gè)人的效率和工作質(zhì)量是不同的,因人而異,但是大概的工作量應(yīng)該是可以統(tǒng)計(jì)出來(lái)的,用于統(tǒng)計(jì)一個(gè)項(xiàng)目的工作周期;
據(jù)不完全統(tǒng)計(jì),截至目前(2017.07)為止,中國(guó)Java程序員的數(shù)量已經(jīng)超過(guò)了100萬(wàn)。而且,隨著IT培訓(xùn)業(yè)的持續(xù)發(fā)展和大量的應(yīng)屆畢業(yè)生進(jìn)入社會(huì),Java程序員面臨的競(jìng)爭(zhēng)壓力越來(lái)越大。那么,作為一名Java程序員,怎樣努力才能快速成長(zhǎng)為一名高級(jí)的程序員或者架構(gòu)師,或者說(shuō)一名優(yōu)秀的高級(jí)工程師或架構(gòu)師應(yīng)該有怎樣的技術(shù)知識(shí)體系,這不僅是一個(gè)剛剛踏入職場(chǎng)的初級(jí)程序員,也是工作三五年之后開(kāi)始迷茫的老程序員,都必須要面對(duì)和想明白的問(wèn)題。為了幫助大家少走彎路,我總結(jié)出一個(gè)Java程序員的工作2-5年成長(zhǎng)路線圖。
針對(duì)上面的技術(shù)我特意整理了一下,有很多技術(shù)不是靠幾句話能講清楚,所以干脆找朋友錄制了一些視頻,很多問(wèn)題其實(shí)答案很簡(jiǎn)單,但是背后的思考和邏輯不簡(jiǎn)單,要做到知其然還要知其所以然。如果想學(xué)習(xí)Java工程化、高性能及分布式、深入淺出。性能調(diào)優(yōu)、Spring,MyBatis,Netty源碼分析的朋友可以加我的Java進(jìn)階群:675047716,群里有阿里大牛直播講解技術(shù),以及Java大型互聯(lián)網(wǎng)技術(shù)的視頻免費(fèi)分享給大家。