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