成為合格的程序員需要做到三點(diǎn),新人通常會從新加一個相似的功能或者修bug開始逐步熟悉原有的系統(tǒng),作為新人,做了別人不愿意做的事可以緩和他人的壓力;做了別人沒做的事,將為團(tuán)隊(duì)增加產(chǎn)出。
最近組內(nèi)先后招了兩名開發(fā),作為他們的mentor,一方面我在觀察他們的工作方式和編碼習(xí)慣,另一方面也在對比思考自己的經(jīng)歷。自己有些感悟,覺得一名新人程序員,成為合格的程序員需要做到三點(diǎn):
一、遇事追蹤溯源,不要怕改已有的代碼
新人通常會從新加一個相似的功能或者修bug開始逐步熟悉原有的系統(tǒng),這時無論原有的代碼寫的怎么樣,都應(yīng)仔細(xì)的思考每段相關(guān)代碼的作用和對應(yīng)的需求,努力做到追蹤溯源,掌握它們的來龍去脈,這時再做task就會游刃有余,在做相似功能時,你知道哪些地方已經(jīng)實(shí)現(xiàn)可以復(fù)用,哪些地方因?yàn)樾录拥拇a應(yīng)該做些重構(gòu);
修bug時,你可以從根本原因出發(fā),解決問題,而不是在出現(xiàn)問題的地方修修補(bǔ)補(bǔ);更重要的是你不會打怵修改原有的代碼而躡手躡腳。
當(dāng)然一旦發(fā)現(xiàn)要修改大段的原有代碼或者設(shè)計(jì),還是要主動和老員工先確認(rèn)下思路是否可行,是否有遺漏的地方再開始。但不出意外,你會一下子就給別人留下一個好的第一印象,因?yàn)槟銢]有在機(jī)械的完成任務(wù),而是先做了深入思考。
寫到這里不禁想起,自己剛工作時改了一個bug,當(dāng)時的做法是在創(chuàng)建一個文件的代碼之后3行再把這個文件刪了,只加了一行代碼就修好了,發(fā)給老員工review時還在竊喜自己只改一行代碼就解決問題了,結(jié)果老員工一句話就把我問傻了,前面的那個文件為什么要創(chuàng)建呀?
我當(dāng)然不知道了,因?yàn)楫?dāng)時我想原有的代碼我不熟悉就最好不動。于是,那一刻我得到了工作生涯第一個重要的建議,應(yīng)該找到根本原因(root
cause)后再修改代碼。這時你不僅可以做好手中的任務(wù),還能進(jìn)一步思考問題是不是代碼設(shè)計(jì)不合理造成的,同時不會怕改已有的代碼。
二、編碼在保證正確的前提下,要足夠快
新人在做第一個任務(wù)時都想留下好印象的,首先要做的就是一定要保證修改是正確的,這里不僅局限于正常情況下功能正確,還應(yīng)考慮邊界條件,錯誤處理情況等等,最后再提交代碼時要最終確認(rèn)一下單元測試過不過,提交代碼后再注意下Jenkins
bulid過不過。這一切都是為了防止出現(xiàn)以下情況:
一提交代碼就break build或unit test
測試隨便一點(diǎn)就有各種問題
匆匆忙忙修了一個問題,一提交又有其他問題
別以為這些都些小事,它直接關(guān)乎別人對你的評價。不犯低級錯誤,建立起嚴(yán)謹(jǐn)?shù)挠∠螅欠浅S兄谀阍谛颅h(huán)境下脫穎而出的。
但僅僅這樣是不夠的,如何在保證正確的前提下,提高速度或者效率則是另外一個要點(diǎn)。試想一下,你持續(xù)超出別人的預(yù)期,并保質(zhì)保量的完成了task,哪個領(lǐng)導(dǎo)和同事會不喜歡你呢?
千萬不要狹隘的覺得自己做的快了要多做事,何苦呀。也許短期內(nèi)你多做了一些原本沒分配給你的任務(wù),但你在別人心中逐步建立起嚴(yán)謹(jǐn)高效的印象,從長期來看將給你帶來更多的機(jī)遇。
三、主動承接團(tuán)隊(duì)里他人不愿意做或者沒做的事
逆向思考下,人家為什么招你進(jìn)來?相信絕大多數(shù)情況是事情多做不過來,缺人了。事情多了一定有老員工不愿意做,或者因?yàn)楦鞣N原因沒做的事。
作為新人,做了別人不愿意做的事可以緩和他人的壓力;做了別人沒做的事,將為團(tuán)隊(duì)增加產(chǎn)出,如果這件事還是一個技術(shù)難題,那不是正好可以讓別人眼前一亮,證明自己的實(shí)力嗎?
其實(shí)關(guān)于這一點(diǎn),在做的時候要進(jìn)一步深入思考。
別人為什么不愿意做或者沒做某些事?是因?yàn)槿狈ο嚓P(guān)知識而沒有做?還是因?yàn)闆]有自動化每次手動操作既耗時又容易出錯?是因?yàn)閮?yōu)先級不高?還是因?yàn)橥度氘a(chǎn)出比不高?是因?yàn)榇a結(jié)構(gòu)不合理導(dǎo)致無法快速加上?還是因?yàn)樾枨蟛幻鞔_?是不是團(tuán)隊(duì)里的人因?yàn)樗季S定式錯誤估計(jì)了問題?是不是可以從其他的角度解決這個問題?
要深入思考后,才能從根源入手,從而正確的解決問題。切記不要機(jī)械的完成任務(wù),要努力讓你的加入使團(tuán)隊(duì)變的更好。
自己在第二份工作的開始階段,就發(fā)現(xiàn)團(tuán)隊(duì)還沒有使用持續(xù)集成的工具在統(tǒng)一的環(huán)境下交付測試,測試還在通過訪問開發(fā)機(jī)器上的網(wǎng)站驗(yàn)證功能,結(jié)果開發(fā)之間互相break情況經(jīng)常發(fā)生,項(xiàng)目質(zhì)量也無法保證。詢問后才知道,大家也很希望改進(jìn)現(xiàn)狀,只是因?yàn)橐恍┰驔]法得到系統(tǒng)組的支持,組內(nèi)也沒人來搭建持續(xù)集成的環(huán)境。
于是我利用一開始相對輕松的時間,使用teamcity搭建出持續(xù)集成的環(huán)境,一時間大家都紛紛叫好,加上自己又接連解決了項(xiàng)目中一些棘手同時沒人做的問題,一下子就樹立了可靠的形象和在團(tuán)隊(duì)里技術(shù)主力的地位,慢慢的即使是公司中其他組沒合作的過的人也對我評價很高。我自己琢磨出的原因是團(tuán)隊(duì)里缺能干活的人,但更缺能讓團(tuán)隊(duì)變好的人。
其實(shí)巧的是,如何使用teamcity搭建持續(xù)集成環(huán)境是我在第一份工作離職交接時主動做的最后一個task,因?yàn)楫?dāng)時有個小項(xiàng)目是我獨(dú)立負(fù)責(zé)的,我想在交接時讓項(xiàng)目更正規(guī)些,就主動提出這個想法,雖然在離職的前天晚上還在加班調(diào)試,當(dāng)天上午還在和同事討論一些細(xì)節(jié),但就是這主動多做學(xué)會的技能成了我在第二份工作里出色開端的重要一環(huán)。
感謝大家閱讀由java職場分享的“成為合格的程序員需要做到三點(diǎn)”希望對大家有所幫助,想了解更多培訓(xùn)信息請關(guān)注java培訓(xùn)機(jī)構(gòu)官網(wǎng)
免責(zé)聲明:以上內(nèi)容僅作為信息傳播,文中部分信息來源于互聯(lián)網(wǎng),僅供閱讀參考。