掐指一數(shù)畢業(yè)已12年(本科),當(dāng)年稚嫩的小鮮肉如今已為人父,成了微胖的中年大叔是掰,回想起來如果畢業(yè)時擬定的職業(yè)計劃一切順利,今天創(chuàng)業(yè)的公司應(yīng)該要快上市了辱匿,或者至少也應(yīng)該是年薪百萬冀惭,早已實(shí)現(xiàn)財務(wù)自由成為成功人士……
然而現(xiàn)實(shí)卻是寫了12年的代碼,僅僅是從當(dāng)年的小菜鳥成長為今天的老菜鳥掀鹅。
IT這個行當(dāng)里散休,天天都能看到各種新星閃耀,新技術(shù)乐尊、新語言戚丸、新框架、新的傳奇輪番上演扔嵌,今天你的成功可以復(fù)制限府,明天他的成功又不能復(fù)制,看起來似乎屌絲逆襲機(jī)會遍地都是痢缎,而現(xiàn)實(shí)中呢胁勺,絕大多數(shù)程序員終其職業(yè)生涯一身也只不過是混口飯吃,如果夠努力夠幸運(yùn)的話独旷,也許能在屌絲逆襲的劇情中扮演一個路人丙署穗,當(dāng)然了寥裂,路人甲和路人乙都不是那么好當(dāng)?shù)摹?/p>
回想自己的12年,應(yīng)該走了不少彎路案疲,雖說彎路上也有不一樣的風(fēng)景封恰,不過總結(jié)總結(jié)總不會錯滴。
要不要讀個研
本科畢業(yè)之后到底要不要先讀個研褐啡?我想這可能是在大學(xué)無憂無慮的生活4年之后面臨的第一個選擇題诺舔,我自己就多次考慮過這個問題。在我看來备畦,如果本科還算是牛逼低飒,而且對自己的學(xué)習(xí)能力有足夠的自信,但又不想讀到博士或者留校之類的話懂盐,建議不用念碩士了逸嘀。中國的大學(xué)屬于難進(jìn)易出,只要有一定的學(xué)習(xí)能力允粤,修滿學(xué)分再編個論文啥的非常簡單崭倘,副作用是在校期間的學(xué)習(xí)能力會斷崖式下降。既然高考的時候你已經(jīng)證明過自己了类垫,我覺得就沒有必要再多浪費(fèi)三年光陰了司光,不管你的導(dǎo)師有多么牛逼的項目,你自己在學(xué)校有多么的勤奮好學(xué)悉患,最終你獲得的經(jīng)驗(yàn)都比不上在外面公司里干幾個實(shí)際項目残家,更何況我們都知道碩士導(dǎo)師所謂的項目都是怎么回事。
如果本科念的學(xué)校一般的話售躁,建議還是考個研究生坞淮,因?yàn)樘貏e對于應(yīng)屆畢業(yè)的學(xué)生來說,文憑幾乎是能力的唯一證明陪捷,特別是本身學(xué)習(xí)能力還是很強(qiáng)回窘,只是高考沒有發(fā)揮好的同學(xué)來說,考個牛逼學(xué)校的研究生可以重新證明一下自己市袖。
如何挑選團(tuán)隊
特別對于新手程序員來說啡直,在不同的團(tuán)隊里成長速度是有很大差別的尔当,如果可以選擇的話不妨先了解下要參與的團(tuán)隊是否適合培養(yǎng)新人或者是否適合自己抢蚀。個人建議可以從下面幾個維度來考慮:
平均年齡
如果團(tuán)隊的平均年齡比較大丢胚,意味著團(tuán)隊成員多多少少已經(jīng)經(jīng)歷過好幾個團(tuán)隊聪建,甚至好幾個公司,稍微再大一點(diǎn)的可能已經(jīng)結(jié)婚生子疲酌,在這種團(tuán)隊的優(yōu)點(diǎn)是身邊的同事經(jīng)驗(yàn)比較豐富涮毫,如果學(xué)習(xí)能力夠強(qiáng)的話能夠快速學(xué)習(xí)到很多東西翘魄;缺點(diǎn)是一般這種團(tuán)隊的凝聚力和協(xié)同會存在問題蜓肆,各自為戰(zhàn)的情況比較多颜凯,另外谋币,有相當(dāng)多的老員工存在知識老化、主動性低装获、激情減退的問題瑞信,綜合考慮的話相對年輕的團(tuán)隊更適合培養(yǎng)新人厉颤。
開發(fā)階段
項目在不同的開發(fā)階段的開發(fā)強(qiáng)度不一樣穴豫,日常工作中關(guān)注的重點(diǎn)也不一樣,用一個表格來比較一下逼友。
開發(fā)階段 | 開發(fā)強(qiáng)度 | 關(guān)注點(diǎn) | 優(yōu)點(diǎn)(對新人) | 缺點(diǎn)(對新人) |
---|---|---|---|---|
初期 | 高 | 架構(gòu)搭建和新功能開發(fā) | 經(jīng)歷從無到有的過程精肃,代碼質(zhì)量較高,學(xué)習(xí)速度快 | 進(jìn)度壓力大 |
中期 | 一般 | 功能完善和質(zhì)量穩(wěn)定 | 開發(fā)節(jié)奏穩(wěn)定帜乞,壓力不大司抱,偶爾參與一些大規(guī)模的重構(gòu) | 框架基本定型,學(xué)習(xí)內(nèi)容較分散黎烈,學(xué)習(xí)速度一般 |
后期 | 低 | 零散小功能和bug修復(fù) | 進(jìn)度壓力較小 | 零散的修補(bǔ)习柠,代碼開始腐化,學(xué)習(xí)速度慢 |
如果你精力充沛照棋,愿意付出更多的時間和承擔(dān)更大的壓力资溃,就比較適合第一類團(tuán)隊,如果你對自己沒有太多信心烈炭,希望穩(wěn)扎穩(wěn)打慢慢來溶锭,就比較適合第二類和第三類團(tuán)隊。
高手有多高
學(xué)習(xí)的過程中身邊有沒有高手的指導(dǎo)是非常重要的符隙,就算是世界冠軍也同樣需要教練的反饋和意見趴捅。對于一個新手來說,身邊同事的最高水平基本決定了未來半年到一年的時間能達(dá)到的最高水平霹疫,所以拱绑,如果可能的話,選擇最NB的高手做自己的隊友丽蝎。
開發(fā)模式
這里要給敏捷團(tuán)隊做個廣告欺栗,敏捷團(tuán)隊采用的各種技術(shù)實(shí)踐對于新手程序員的提升是非常明顯的,比如:
- 結(jié)對編程
- TDD
- 自動化測試
- 持續(xù)集成
有的技術(shù)實(shí)踐能幫助你快速學(xué)習(xí)別人的經(jīng)驗(yàn)征峦,有的技術(shù)實(shí)踐能幫助你大幅提升工作效率迟几,具體就不展開說了,只有做了才知道栏笆。
如何定位bug
新手程序員剛進(jìn)入職場時經(jīng)常會分配到一些 bug 定位的任務(wù)來練手类腮,通常我們依賴程序運(yùn)行的 log 可以定位大多數(shù)的 bug ,但還是會碰到一些 bug 缺少足夠的 log 很難定位蛉加,甚至是很難復(fù)現(xiàn)蚜枢,這種時候該怎么做呢缸逃?很多新手程序員在這個問題上摸不著頭腦。
有的程序員看起來更善于解決這類問題厂抽,一個卡住你一兩天的問題對于他來說可能就是半個小時的事需频,如果在事后分析他定位問題的思路,你會發(fā)現(xiàn)非常清晰筷凤,感覺“就應(yīng)該這樣做”或者“哦昭殉,原來這么簡單”之類的,但下次換你來定位的時候藐守,可能一上來就找不到著手的方向挪丢。
以前我認(rèn)為這些人可能是有特別的“靈性”或者“天賦”,后來有一個同事(很早之前的)講了一個觀點(diǎn)讓我豁然開朗卢厂,他把定位 bug 的過程分成 3 步乾蓬,有點(diǎn)現(xiàn)在流行的機(jī)器學(xué)習(xí)的意思:
- 收集信息
- 根據(jù) bug 現(xiàn)象,做出假設(shè)
- 驗(yàn)證假設(shè)慎恒,如果假設(shè)被推翻任内,回到第 1 步
實(shí)例化一下大概是這樣:首先對相關(guān)的代碼足夠熟悉,然后看看復(fù)現(xiàn) bug 的條件融柬,log 中的可疑之處等等死嗦,然后結(jié)合 bug 的現(xiàn)象,假設(shè)是因?yàn)榇a的某個地方出現(xiàn)了問題丹鸿,比如可能是多線程訪問的互斥出了問題越走,那么根據(jù)這個假設(shè)反證,比如在代碼中增加不同線程訪問時的打印看是否的確存在線程沖突靠欢,如果驗(yàn)證結(jié)果符合假設(shè)那基本就定位了廊敌,如果假設(shè)被推翻,那說明之前收集的信息不夠全面门怪,再回過頭來看看還有哪里是自己沒有考慮到的骡澈。