技術(shù)人員如何提升自己的價值?
在說程序員提升自己前,先說些不好的提升方法。
1 漫無目的地看書和運行代碼,或者看網(wǎng)上的資料。這總比不學(xué)習(xí)要好,但漫無目的地學(xué),對實際工作中的幫忙很有限。2 到處找人幫忙,但不復(fù)盤,這樣以后遇到同樣的問題照樣不會。3 有了進步,但僅僅局限于在當前公司里干好。其實程序員通過跳槽后,漲工資的幅度會超出最初的想象。4 僅僅做技術(shù)方面的提升,不想著如何通過面試跳槽變現(xiàn),或者是僅提升技術(shù),而忽略變現(xiàn)技術(shù)的最要緊方面:面試。在下文里,就將圍繞短期中期長期提升這三個方面,說說程序員自我提升之道。比如在當前工作里,不會用技術(shù)開發(fā)業(yè)務(wù),或者出了問題不知道怎么解決,或者關(guān)鍵技術(shù)不會。1 首先是要應(yīng)急,即在規(guī)定的時間內(nèi)按質(zhì)量完成開發(fā)。遇到不會,問別人時注意技巧,別直接說xx模塊該怎么做,而可以問,我可以參考哪些模塊的代碼來開發(fā)這個模塊?一般代碼都抄來抄去,要找到類似的代碼不難,然后再根據(jù)業(yè)務(wù),稍做修改,如果在你開發(fā)的業(yè)務(wù)里有你不會的api,你可以問,要實現(xiàn)xx技術(shù),我可以用什么類什么方法?這個方法我可以從網(wǎng)上什么地方找到用法介紹?或從現(xiàn)有代碼的什么地方找到用法?總之在技術(shù)薄弱的情況下,可以問從哪里可以抄?抄到一半不會抄時再去問別人,這樣你總寫了點東西,有代碼的基礎(chǔ)上問別人,總比什么不寫問別人要好很多。但是通過問別人解決實際問題以后,你要注意,不僅需要維護人際關(guān)系,別人幫你了,你請人吃頓飯也應(yīng)該,但還要積累技術(shù),比如別人告訴你jpa的用法以及流程以后,你需要從頭到尾看一遍。同時,你更要掌握解決問題的能力,比如知道可以從哪里找資料,可以從哪里抄到代碼.當然你態(tài)度要好,比如早去公司晚走,別人解決問題時你在一邊看。這樣估計你開發(fā)了3,4個業(yè)務(wù)模塊后,就能知道本項目組里做開發(fā)的方式,而且還能自己解決一些基本的問題。2 然后是提升解決問題的能力,同時擴展技術(shù)面。對程序員來說,提升能力的最好方法是解決問題,而解決問題離不開看日志和debug。比如你的程序出了問題,你可以通過在本機debug,打斷點逐步分析找到問題。至于debug的方法和技巧,哪怕不會,問別人一兩次應(yīng)該也能掌握。再如測試系統(tǒng)或線上系統(tǒng)出了問題,你需要用linux相關(guān)命令去看日志(系統(tǒng)一般部署在linux上),你首先得掌握看日志的步驟,不過這也是能熟能生巧的事情。會debug和看日志以后,項目組有任何問題,你盡量參與,小到空指針,大到組件調(diào)試,當前哪怕你不熟悉,你或者問人,或者查資料,把這個問題所在的技術(shù)點全過一下,然后學(xué)會怎么從日志里分析問題,這樣不用1個月,你就直接能從中受益,而且還能熟悉項目的業(yè)務(wù)流程,這是一舉兩得的事情。3 當你不僅會開發(fā)業(yè)務(wù),而且能排查基本的問題后,你擴展看下其他技術(shù),比如可以看maven打包部署項目的流程,數(shù)據(jù)庫配置的技能,分布式組件的用法,以及項目運維的技能。這塊你如果不知道該繼續(xù)怎么看,就看你后面一份工作的面試要求,比如你要轉(zhuǎn)資深開發(fā)崗,你就看人家公司的招聘要求,從中一定能看到要求的技術(shù),以及要掌握到什么程度。在這種情況下,你一方面去網(wǎng)上看相關(guān)概念,另一方面在你項目里看看這個技術(shù)怎么用到。就拿dubbo舉例。一方面你可以到網(wǎng)上看dubbo的概念,組件以及底層源碼,另一方,你可以看你項目里怎么用的,最好再解決些相關(guān)問題。這樣日積月累,不用半年,也就3個月,估計技術(shù)上就能突飛猛進了。4 但是,在這個階段,你別停留,需要找個更好的平臺發(fā)展。相關(guān)地,你要掌握簡歷和面試相關(guān)技巧,這塊和主題無關(guān),但你可以參靠我的如下文章。當你進到一個能提供高級技能實踐機會的公司后,又可以重復(fù)上述流程,繼續(xù)提升自己的技能和薪資了。
下面就以我自己舉例,說下我是怎么適應(yīng)大廠技術(shù)開發(fā)崗的。1 我當時是從一家外企進入到一家互聯(lián)網(wǎng)大廠,在外企的時候,我的java技能僅限于單機版的增刪改查,連Spring boot也用不熟悉,spring boot里的aop,ioc,logback等組件,也僅僅是知道而已,一些分布式組件,比如redis,dubbo,Kafka等,只是聽說,linux上基本沒操作過,項目運維能力聊勝于無。2 進入互聯(lián)網(wǎng)大廠后,在平時開發(fā)中就直接要用分布式組件,而且需要直接面對高并發(fā)的需求。所以剛進大廠時,我只能是咬牙硬撐,不過幸好我遇到了一個很好的人,就我?guī)煾怠?/p>剛進大廠的時候,在接需求時,大多數(shù)時候我只能硬著頭皮接下來,因為里面的redis等技術(shù)我不熟悉,更別提限流集群等開發(fā)要點了。3 在哪個時候我只能到處找可參考的代碼,或者到處裝笑臉找人問。這樣過了2個月,我至少能保證能開發(fā)好交給的任務(wù)了,但分布式這塊,我依然不熟。這個時候,只要有線上問題,我都會去關(guān)心一下,人家解決后,我會看日志復(fù)盤下,這樣做了1,2個月,我好歹能知道排查基本的問題了。然后再看相關(guān)的代碼,我就知道分布式技術(shù)怎么實現(xiàn)高并發(fā)業(yè)務(wù)了。4 然后我就趁著做開發(fā)和業(yè)務(wù)上線時,多和運維組打交到,熟悉各種linux部署和排查問題的技能。當然中間也比較苦,各種加班就不說了,遇到不熟的技能還得到處查。這樣過了半年,我就感覺自己的能力有了顯著的提升,至少能從高級開發(fā)升級到資深開發(fā),后來我就憑借從大廠學(xué)到的分布式高并發(fā)等技能,成功地應(yīng)聘上外企的架構(gòu)師崗位。最后在做個總結(jié),如果感覺自己不知道怎么提升,可以直接從如下方面找到方向。1 明確可以從哪里找到可以抄的代碼,當然不能直接抄,但如果有可供參考的代碼,改寫起來或者再問人,總有一定基礎(chǔ)了,這樣也能提出明確問題,明確改怎么繼續(xù)做了。2 一定要在機器上搭建好環(huán)境,包括本地環(huán)境和連接到遠端數(shù)據(jù)庫服務(wù)器的環(huán)境,這樣就能通過運行知道問題,從而能根據(jù)問題的提示繼續(xù)開發(fā)下去,而不會一頭霧水不知道后面怎么做了。3 一定要熟悉本地debug,看產(chǎn)線日志等方法,這些方法本身不難,但熟悉了debug,知道怎么看日志,外加搭建好環(huán)境,這樣就能通過不斷嘗試來解決問題了。4 一定多參與各種問題的解決,參與后通過復(fù)盤提升。上述做法不難,都是體力活。方法得當,程序員就可以通過加班,多嘗試等笨辦法來提升了,這要比能力差而且不知道怎么做的程度,不知道要好多少了。