首先,前五年,如果一個(gè)程序員大致能做到一下幾點(diǎn)「后面還會(huì)詳談」。
具有扎實(shí)的基本功
能快速完成領(lǐng)導(dǎo)交給你的代碼開發(fā)任務(wù)
能在遇到問(wèn)題的時(shí)候有正確的解決思路
能對(duì)公司的新人進(jìn)行一定輔導(dǎo),包括但不限于技術(shù)點(diǎn)分享、代碼評(píng)審、需求分析、表結(jié)構(gòu)設(shè)計(jì)等
那么,從第五年開始,我認(rèn)為可以、也應(yīng)當(dāng)朝更高的層次進(jìn)行邁進(jìn),前一個(gè)層次如果更多是偏重個(gè)人,那么這個(gè)層次我認(rèn)為更多應(yīng)該偏重團(tuán)隊(duì),簡(jiǎn)單羅列一下大致上應(yīng)該有。
系統(tǒng)設(shè)計(jì)能力,或許在之前給一個(gè)功能,能從 DB 設(shè)計(jì) --> 服務(wù)端開發(fā) --> 前端開發(fā)一棧把事情都做好,那么之后,在領(lǐng)導(dǎo)給出具體一塊大業(yè)務(wù),比如想做一個(gè)淘寶商場(chǎng)的會(huì)員模塊,能充分分析出整個(gè)功能并把功能拆分成一個(gè)一個(gè)的點(diǎn)、能對(duì)每一個(gè)點(diǎn)之間的交互畫出交互圖、能梳理清楚數(shù)據(jù)庫(kù)的 ER 關(guān)系圖、能把工作合理分配給同事進(jìn)行開發(fā)。
帶領(lǐng)團(tuán)隊(duì)能力,大致就是把控整體開發(fā)節(jié)奏,保證在約定時(shí)間點(diǎn)前進(jìn)行交付,不出現(xiàn)延期的情況。
大而博不如小而美,會(huì) 10 門技術(shù)、每門技術(shù)掌握到 6 分,不如會(huì) 5 門技術(shù)、2 門技術(shù)掌握到8分,我感覺(jué)整個(gè)行業(yè)什么都會(huì)一點(diǎn)的人比較多,把一門技術(shù)進(jìn)行深入研究的比較少,畢竟掌握也許只需要 1 星期,深耕或許需要1 個(gè)月甚至更久。在五年這個(gè)節(jié)點(diǎn),我認(rèn)為選擇一到兩個(gè)自己感興趣的方向進(jìn)行深入研究會(huì)是一個(gè)比較好的選擇。
這是我自己的思考,也是我在第五年開始對(duì)自己的要求,希望這一些思考也能給大家?guī)?lái)一些啟發(fā)。
五年節(jié)點(diǎn),我理解的優(yōu)秀程序員應(yīng)當(dāng)具備的技術(shù)素質(zhì)
廣告
查看詳情
網(wǎng)上有很多所謂的 Java 程序員面試經(jīng),其實(shí)看下來(lái)的感覺(jué)就是沒(méi)多大用,面試是沒(méi)有套路的,每一個(gè)面試官問(wèn)的東西也都不一樣,如果根據(jù)那些面試問(wèn)題去學(xué)習(xí)和準(zhǔn)備,那真的是只見樹木不見森林,對(duì)個(gè)人提升沒(méi)有太大提高。
那么,在五年這個(gè)階段,一個(gè)優(yōu)秀的程序員應(yīng)當(dāng)具備怎樣的技術(shù)素質(zhì)呢?按照我個(gè)人的理解,主要就是基本功 + 項(xiàng)目。
為什么之前說(shuō)針對(duì)面試題進(jìn)行學(xué)習(xí)和準(zhǔn)備作用不大,因?yàn)槲艺J(rèn)為我們關(guān)注的不應(yīng)當(dāng)是題,而是題背后的一個(gè)一個(gè)的方向,這也就是我認(rèn)為的基本功。那從基本功的角度來(lái)說(shuō),羅列一下我能想到的,包括但不限于以下內(nèi)容。
工作相關(guān)使用到的JDK類及其相關(guān)源碼、機(jī)制。
設(shè)計(jì)模式,設(shè)計(jì)模式在工作中用到了哪些,具體使用場(chǎng)景。
并發(fā)類的相關(guān)知識(shí),線程安全、鎖機(jī)制、信號(hào)量、閉鎖、柵欄、線程池等。
框架相關(guān),Spring相關(guān)機(jī)制、Spring MVC 相關(guān)機(jī)制、MyBatis 相關(guān)機(jī)制、使用的細(xì)節(jié)點(diǎn)、框架實(shí)現(xiàn)原理等。
JVM,內(nèi)存布局、垃圾識(shí)別算法、垃圾回收算法、垃圾收集器、類加載機(jī)制、內(nèi)存模型、出現(xiàn)內(nèi)存問(wèn)題時(shí)定位問(wèn)題的方法等。
數(shù)據(jù)庫(kù)的基本數(shù)據(jù)類型、索引機(jī)制、各引擎區(qū)別、鎖機(jī)制、慢 SQL 定位及優(yōu)化等。
緩存機(jī)制,這里的機(jī)制指的是緩存加載、緩存擊穿、緩存雪崩這些機(jī)制及其相關(guān)應(yīng)對(duì)方案,用過(guò) Redis、MemCache 的最好理解一下它們的原理或者緩存提供的一些高級(jí)功能,集群如何實(shí)現(xiàn)
分布式的一些知識(shí),比如 CAP 理論、數(shù)據(jù)一致性的幾種解決方案、分布式事務(wù)如何處理,分庫(kù)分表怎么做、現(xiàn)有的相關(guān)解決方案等
NIO 的作用,epoll 模型是否知道一些,Netty 的相關(guān)機(jī)制、Netty 相比原生NIO 的優(yōu)點(diǎn)、半包拆包、斷線重連解決方案等
Web 相關(guān),Get 與 Post 的區(qū)別、轉(zhuǎn)發(fā)與重定向的區(qū)別、跨域問(wèn)題如何解決、如何保證接口冪等性等
網(wǎng)絡(luò)層相關(guān),三次握手和四次握手、全連接隊(duì)列和半連接隊(duì)列、負(fù)載均衡算法等
其他中間件,MQ作用和使用場(chǎng)景、服務(wù)化治理框架的作用和使用場(chǎng)景、配置中心的作用和使用場(chǎng)景等
數(shù)據(jù)結(jié)構(gòu),數(shù)組、鏈表、棧、隊(duì)列、樹等優(yōu)缺點(diǎn),在什么場(chǎng)景下使用什么數(shù)據(jù)結(jié)構(gòu)
Linux 相關(guān)知識(shí),基本命令的使用,查詢?nèi)罩尽⒍ㄎ粏?wèn)題,項(xiàng)目或者第三方組件的基本運(yùn)維等
坦白講,以上的這些東西全都掌握也不可能,哪怕面試官肯定也有很多不會(huì)的,但這就是基本功,能多掌握一點(diǎn)多掌握一點(diǎn),技多不壓身,至于別人如何評(píng)價(jià)你,就留給別人去評(píng)價(jià)吧,做好自己能做好的就行了。我在之前寫過(guò)的文章中反復(fù)強(qiáng)調(diào)深度 + 廣度,深度優(yōu)先、廣度次之,有了深度 + 廣度,在開發(fā)過(guò)程中我們可以盡快完成需求,在遇到問(wèn)題情況下我們可以第一時(shí)間找到應(yīng)對(duì)方案。
在三年的時(shí)間點(diǎn),能掌握上述的知識(shí)點(diǎn)我認(rèn)為已經(jīng)是非常非常優(yōu)秀的了,但這兩年的經(jīng)歷讓我意識(shí)到的是,到了五年的時(shí)間點(diǎn),如果只是具備這些硬性技能,還是不夠,這兩年更多的應(yīng)當(dāng)是在項(xiàng)目上進(jìn)行積累,也就是前面說(shuō)的項(xiàng)目,大致上應(yīng)該有。
獨(dú)立完成復(fù)雜業(yè)務(wù),或者完成一個(gè)已有項(xiàng)目中的大功能點(diǎn),這就需要有根據(jù)業(yè)務(wù)對(duì)功能進(jìn)行分解、分析的能力。
獨(dú)立排查復(fù)雜問(wèn)題,在項(xiàng)目運(yùn)行過(guò)程中,一定不可能安然無(wú)事,除開業(yè)務(wù)性的問(wèn)題,CPU 100%是否能獨(dú)立排查、內(nèi)存溢出是否能獨(dú)立排查、應(yīng)用死鎖或者 DB 死鎖能否獨(dú)立排查、API調(diào)用時(shí)間長(zhǎng)能否獨(dú)立排查,以上問(wèn)題排查完畢能否及時(shí)解決。
帶領(lǐng)團(tuán)隊(duì)的能力,可能這時(shí)候帶領(lǐng)的是 1~2 個(gè)人的小團(tuán)隊(duì),即使一個(gè)小團(tuán)隊(duì),也能考驗(yàn)帶團(tuán)隊(duì)、任務(wù)合理分配的能力。
可能上面的要求有點(diǎn)高,可能工作中未必有這樣的機(jī)會(huì),但是不要抱怨,機(jī)會(huì)永遠(yuǎn)留給有能力、有準(zhǔn)備的人,我們首先想的不應(yīng)該是等待別人交給你一件有挑戰(zhàn)性的事情,你在做這件事情的情況下去提升自己,而應(yīng)當(dāng)是先提升自己的素質(zhì),然后讓別人放心把有挑戰(zhàn)性的事情交給你來(lái)做。
回到我之前寫的,為什么16年到18年間,領(lǐng)導(dǎo)愿意給我機(jī)會(huì)去進(jìn)行嘗試,首先就是因?yàn)閭€(gè)人水平的提升。
最后的最后
我想的是,無(wú)論進(jìn)入了 BAT 還是進(jìn)入了 FLAG,都絕不是技術(shù)道路的終點(diǎn),不是可以高枕無(wú)憂地躺在過(guò)去的功勞簿上、無(wú)憂無(wú)慮過(guò)完下輩子的資本,相反,必須更努力,才能在一群同樣優(yōu)秀的人中脫穎而出。
......