
做javaweb已經(jīng)有一段時(shí)間,雖然算不上大牛,但也積累了一些經(jīng)驗(yàn),最近主導(dǎo)公司一個(gè)項(xiàng)目的架構(gòu)。同時(shí)指導(dǎo)新人,發(fā)現(xiàn)了新人身上存在的一些問(wèn)題。我其實(shí)還算有耐心。但他們有些問(wèn)題讓我很抓狂。想起我剛工作時(shí)師傅抓狂的表情,我覺(jué)得有必要給剛畢業(yè)和剛?cè)肼殘?chǎng)的程序員一些建議。
學(xué)習(xí)的態(tài)度和方法很重要
剛工作不久肯定很多東西都不會(huì),學(xué)校學(xué)的和真實(shí)的項(xiàng)目差很多,培訓(xùn)機(jī)構(gòu)也只能教你一些表面功夫,你會(huì)經(jīng)歷各種異常和報(bào)錯(cuò),不要恐慌,利用百度和谷歌,盡快和他們混個(gè)臉熟。
學(xué)會(huì)js的debug、ajax請(qǐng)求、表單提交、傳參、json解析等基本知識(shí),將數(shù)據(jù)的傳遞搞清楚,程序異常了先自己找找原因,debug試試,是js錯(cuò)誤還是前段值沒(méi)傳過(guò)來(lái),是后端變量名字沒(méi)對(duì)上還是配置檔配錯(cuò)了,仔細(xì)檢查檢查,不要一報(bào)錯(cuò)就找人解決,盡量自己找出解決方法,如果實(shí)在解決不了再去找同事幫忙,最好連同幾個(gè)問(wèn)題一起去問(wèn),別人也有工作要忙,經(jīng)常打斷會(huì)降低工作效率,影響別人的進(jìn)度。
問(wèn)問(wèn)題前想好自己的問(wèn)題再說(shuō),你可能會(huì)問(wèn),問(wèn)問(wèn)題都不會(huì)嗎,是的,很多人不太注意自己溝通表達(dá)的方式。
我?guī)У囊粋€(gè)新人,每次問(wèn)問(wèn)題都是一堆語(yǔ)氣詞,你看,怎么怎么著,等著我回復(fù),然后怎么怎么著,又等著我回復(fù),說(shuō)了一堆和問(wèn)題不太相關(guān)的話(huà),最后我實(shí)在忍不住,打斷他說(shuō)你到底想問(wèn)什么,他才說(shuō)出自己的問(wèn)題。
問(wèn)問(wèn)題前在自己腦子里過(guò)一邊,簡(jiǎn)潔的提出問(wèn)題,再描述現(xiàn)象
有時(shí)別人給出一個(gè)具體方案沒(méi)有解釋清楚,我們也懂為什么時(shí),在時(shí)間和條件允許的情況下去請(qǐng)教清楚:
我剛開(kāi)始工作領(lǐng)導(dǎo)是不讓用system.out.println來(lái)輸出的,一定要用logger,我就不明白為什么,之前教的就這么用啊,但是改起來(lái)也不費(fèi)勁,我也沒(méi)詳細(xì)去問(wèn),直到后來(lái)接的一個(gè)項(xiàng)目,里面有很多system.out.println輸出,你在控制臺(tái)只能看到輸出根本找不到是哪個(gè)類(lèi)哪個(gè)方法輸出的,我才明白為什么。
學(xué)習(xí)學(xué)習(xí)再學(xué)習(xí) 練習(xí)練習(xí)再練習(xí)
想要成為一個(gè)頂尖高手,關(guān)鍵是刻意練習(xí),成為一個(gè)優(yōu)秀的程序員,不停地學(xué)習(xí)和練習(xí)是必須的。
新人剛開(kāi)始時(shí)迷茫是很正常,想要努力學(xué)習(xí)卻沒(méi)有方向。多去問(wèn)問(wèn)前輩和同事還有領(lǐng)導(dǎo),和他們溝通學(xué)習(xí)的方向,記住成長(zhǎng)比成功更重要。
軟件技術(shù)更新速度飛快,非關(guān)系型數(shù)據(jù)庫(kù)、nodejs、容器技術(shù)、h5 、前后端分離、到現(xiàn)在react ironic 一套搞定ios android 微信公眾號(hào),你可能剛學(xué)會(huì)一個(gè)新技術(shù)又出來(lái)一個(gè)更穩(wěn)定更好用的,所以自學(xué)能力非常重要,要時(shí)刻保持對(duì)新技術(shù)的敏感,不一定要精通,也不要出了什么都去學(xué),一般新技術(shù)的產(chǎn)生都是為了解決現(xiàn)有技術(shù)的瓶頸,了解它產(chǎn)生的背景,以及要解決的問(wèn)題很重要。
我們剛工作碰到的肯定是別人已經(jīng)搭好框架的項(xiàng)目,我們寫(xiě)代碼只是填充其血肉,我們很少思考他為什么這么寫(xiě),這些配置都有什么用,換成別的行不行,有了一定基礎(chǔ)后要試著嘗試自己從0搭建一個(gè)項(xiàng)目,這樣你就能明白這些過(guò)濾器、攔截器、插件、依賴(lài)的作用,對(duì)你的能力有很大的提升。
如果碰上一個(gè)剛起步的新項(xiàng)目會(huì)是一個(gè)很好的機(jī)會(huì),你會(huì)經(jīng)歷整個(gè)架構(gòu)的演變,碰到很多坑和問(wèn)題,這些都是很寶貴的經(jīng)驗(yàn)。
有了一些小想法或者新技術(shù)自己寫(xiě)個(gè)小項(xiàng)目試試,慢慢的你的經(jīng)驗(yàn)會(huì)越來(lái)越豐富,而不是僅僅知道公司的項(xiàng)目,下班少去看電視劇,玩游戲,自己多實(shí)踐,寫(xiě)寫(xiě)東西,等一個(gè)問(wèn)題順利解決或?qū)崿F(xiàn)了一個(gè)小功能,你會(huì)體會(huì)到無(wú)比的成就感。
不要依賴(lài)技術(shù)大牛
很長(zhǎng)一段時(shí)間,我在碰到自己解決不了的問(wèn)題時(shí),都回去問(wèn)公司里的大牛,感覺(jué)很可靠也很厲害,所有的問(wèn)題都能解決,雖然問(wèn)題是很快的解決了,但是很少有自己的思考,說(shuō)白了就是懶,能靠著著別人。后來(lái)離開(kāi)了這個(gè)大牛,遇到了問(wèn)題只能自己死磕,就是一段時(shí)間的死磕是自己學(xué)到了很多知識(shí),看懂了很多比較底層的原理,也變成了幫別人解決問(wèn)題的人,提升很大。
養(yǎng)成看源碼的習(xí)慣
剛開(kāi)始的時(shí)候我也很懼怕看源碼,一個(gè)是懶,再就是覺(jué)得自己看不懂,后來(lái)沒(méi)辦法,代碼出問(wèn)題找不到原因,只能硬著頭皮跟進(jìn)去看,開(kāi)始的確很費(fèi)勁,看多了就能了解個(gè)大概了,你可以了解到一些技術(shù)細(xì)節(jié),系統(tǒng)的看源碼可以學(xué)習(xí)別人的編程思想,這里推薦學(xué)java的同學(xué)有時(shí)間去研究一下spring的源碼,幫助多多。
代碼規(guī)范
代碼規(guī)范很重要,不要以為代碼是給機(jī)器讀的就寫(xiě)的很隨意,代碼是給人看的,你不可能在這干一輩子,總有一天有人要接過(guò)你的代碼,如果你的代碼只有你能看懂,你能想到和你交接的人的心情嗎,肯定很想從新寫(xiě)一遍,規(guī)范其實(shí)也不用非常嚴(yán)格,規(guī)范不是限制,下面給出一些常見(jiàn)的java規(guī)范:
- 除了靜態(tài)變量,大部分標(biāo)識(shí)符使用駝峰法則,標(biāo)識(shí)符能準(zhǔn)確的表達(dá)出它所代表的意義,不要使用supplier1、 service2、aaa、bbb等,包名小寫(xiě),類(lèi)名首字母大寫(xiě),其他文件首字母都小寫(xiě)。
- 狀態(tài)、類(lèi)型、參數(shù)名稱(chēng)不要直接使用字符串或數(shù)字等比較,除非只有一個(gè)類(lèi)中使用
這么寫(xiě)別人根本不知道2是什么狀態(tài) if(orderStatus.equels(2){ xxxx } 正確的寫(xiě)法 public interface OrderStatus{ public static final int ORDERSTATUS_NEW = 1;//新建 public static final int ORDERSTATUS_PAID = 2;//已支付 public static final int ORDERSTATUS_DELIVERY = 3;//已發(fā)貨 } if(orderStatus.equels(OrderStatus.ORDERSTATUS_PAID){ xxxx }
- 注釋掉的測(cè)試代碼或不用的類(lèi)請(qǐng)盡快刪掉,如果還有用的請(qǐng)?zhí)砑覨IXME+注釋?zhuān)駝t時(shí)間長(zhǎng)了自己也不知道為什么注釋掉,代碼越來(lái)越多不好維護(hù)
- 編譯工具的format要統(tǒng)一,在formatter代碼時(shí)最好不要全選整個(gè)類(lèi),而是只format編輯的方法,這樣如果大家同時(shí)修改一個(gè)類(lèi)而formatter不同會(huì)導(dǎo)致更新代碼時(shí)大量的沖突
- 單個(gè)方法不要超過(guò)300行,類(lèi)不要超過(guò)3000行,重構(gòu)請(qǐng)參考《重構(gòu)-改善既有代碼的設(shè)計(jì)》
- 盡量縮小變量的作用域,作用域過(guò)大可能回引起很多想不到的bug。
- 如果代碼需要公用,盡量不要復(fù)制粘貼,請(qǐng)?zhí)岬絪ervice或util中。
做程序員對(duì)很多人其實(shí)很苦,你是否因?yàn)橛小板X(qián)景“加入這個(gè)行業(yè),你是否真的有興趣長(zhǎng)時(shí)間對(duì)著電腦敲代碼,你能否因?yàn)橐粋€(gè)小問(wèn)題一晚上找不到原因繼續(xù)堅(jiān)持,如果你想好了就腳踏實(shí)地的努力,我們一起共同學(xué)習(xí)。