本文轉載自【微信公眾號:小碼逆襲,ID:gh_7c5a039380a0】經微信公眾號授權轉載,如需轉載與原文作者聯繫
我先做一下自我介紹,我是19年畢業的本科應屆生,目前就職於豚廠,主要從事java開發的工作。
寫在前面
最近,不少的應屆生問我怎麼找工作,說現在找工作太難了,我也知道受疫情的影響,目前很多公司的招聘都延遲甚至取消了招聘計劃,對於應屆畢業生來說,這無疑是一個漫長的冬季,大廠本身不好進,疫情期間對於應試者的要求更加嚴格,小廠有過之而無不及,甚至直接把應屆生置之門外,這些情況在應試者的角度來說是不可改變的,但是我想說寒冬固然蕭瑟,讓你感覺到寒冷,但是越是寒冷,就要動起來跺跺腳,能量需要自己去創造,機會更需要自己去把握!
我的大學
相信我的大學生活跟絕大多數的大學生一樣,大一虛度了光陰,大二找不到方向和定位。我大一喜歡玩遊戲,上課時間都在想下課了回宿舍我要怎麼打裝備、怎麼強化。大一讀完,我跟我爸媽說:「爸,媽,我想去當兵,讀大學沒用,啥也學不到」。
大二上學期我想把成績提上去,期末基本每科成績都是80,90分以上,但是還是覺得自己學的東西很虛,可以說還是啥也不會,太概念化。大二下可以說是我思想發生轉變的一個時期,班主任的編程小組要招人,我就去嘗試了面試一下,面試內容很簡單,手寫一個冒泡排序,我當時愣住了,腦子裡飄過一行字「冒泡排序是啥東西?」。看到和我一起去的同學們和編程小組的學姐學哥們侃侃而談,我在旁邊插不上一句話,因為他們說的我不懂。那一天我受到了雷劈一樣的打擊,大學不是我沒學到東西,而是我在浪費時間,學到的東西沒有沉澱,我一直在虛度光陰。我要改變。我跟自己說,從那以後我在csdn開了自己的博客,激勵自己記錄自己的學習生活。我也是從那個時候,慢慢的變成了一個技術宅。
大三大四我開始了一邊學習一邊面試,學校的課程只有專業課成績可以,其他的都是考試前臨時抱佛腳,我把大部分的時間用在了看書、自學、找工作中,我的舍友也是如此,大學我最最懷念最最難忘的也是那段時光,有痛,有淚,有歡笑,我和舍友們朝九晚五的學習,大三我經歷了春招失利,面試了騰訊和蘑菇街兩家企業,騰訊是我面試的第一家企業,也是我第一次面試,那種羞澀,那種敬畏感和不知所措的感覺至今難忘,最終敗於二面,蘑菇街在hr面後失之交臂,春招結束。我相信,現在很多的同學跟我一樣,一次次碰壁,一次次失敗,你覺的自己已經走到了絕境,但是我想說的是,彆氣餒,別放棄,你的堅持你的努力會給你帶來應得的回報,只是時間未到,這個世界沒有絕境。經歷了三個月時間,迎來秋招,我志在必得,拿到了多家企業的offer,最終選擇了豚廠,從農村小夥,變成了程裡人,我來到了北京,來到了我小時候夢想的城市。
PS:面試首先要認真對待自己的簡歷,一份好的簡歷是你面試成功的敲門磚。面試運氣是一部分,但是也要注意面試技巧,面試官問到的問題就那麼幾個,面試的時候你要把主動權掌握到自己的手裡,把自己的知識整理起來,形成閉環,一發而動全身,我的經歷希望現在正在找工作的學弟學妹們看到,你堅持努力,好的工作機會會向你招手的。
初入職場
忘了說我在大學學習的是C/C++,來公司以後轉了JAVA,一直以來都聽別人說只要學會了C語言,學習其他的語言很簡單,但是我想說那是你沒有經歷轉語言的痛苦,語言只是處理問題的思維和代碼邏輯相通,但是語法、數據結構、語言特性上都是有區別的,舉個例子,最簡單的C語言的printf,JAVA是System.out.println(),我剛學java的時候就總是突然冒出一點C的寫法,那時候自己哭笑不得。
實習期間我看完了300多課時的《java從入門到精通》的課程,看完了《java編程思想這本書》,熟讀了《設計模式》,我覺的我已經精通java了,少年輕狂,在一次次項目的歷練中,我才發現,一個優秀的程式設計師並不是你語言功底有多厲害,更重要的是你對待工作的態度。一段好的代碼不是你使用的技術有多麼高級,更重要的是你所寫代碼可讀性、可用性。
我剛剛接需求的時候,我只是為了完成需求而去寫代碼,我只要完成了產品要求的功能我就心滿意足甚至還有點成就感。
心路
這天,我的需求要發布了,導師diff代碼,給我提出很多建議,「這裡加下注釋,這裡日誌沒必要,這裡為什麼要用for循環,是不是可以這樣...還有這裡....這裡」, 按照導師的要求匆匆改完代碼,很順利,我配合QA同學,把代碼上線了,上線觀察了幾分鐘,觀察了監控和伺服器日誌,功能沒問題,心裡想產品提的需求對於我來說太簡單的,lerder給我三天的時間,我只用了兩天,我心想自己有點厲害,估計現在來陣風,我能飄起來。心裡對自己更加佩服了。
年少輕狂,是還沒有接受社會的毒打,在功能上線以後順利運行了幾個小時之後,突然跳出幾個郵件,「空指針系統異常」的郵件,我心想,肯定不是我的代碼,仔細一看異常的系統是我剛剛發布的系統,心裡一驚,看了眼錯誤那行代碼,異常的那一行是我寫的代碼!,我慌了,完了完了,我的代碼出問題了,趕緊去定位問題,最終定位到問題是因為我們的系統調下遊系統的查詢服務掛了,寫代碼的時候只想著調下遊服務查詢數據,只覺得代碼走到這裡查詢是一定會查詢到數據的,沒有考慮到下遊服務如果出現異常,我們的系統是否可用的問題,因為少了一行判斷,造成了線上空指針的問題,NULL指針是一個常見但是很低級的問題。我心裡很慚愧。
上面就是我剛做需求時候內心的真實寫照,代碼只是為了實現需求寫的,我們都知道,實現功能很容易,但是如何寫出讓大家讚美的代碼很難。
下面總結一下我的開發經驗與個我一樣的職場新人共勉:
1、第一步當然是了解需求,了解一個需求不是你看了一邊需求文檔就行了,最重要的就是要溝通,重要的事情說三遍,溝通!溝通!溝通!一定要清楚的了解到需求背景, 需求要實現什麼,怎麼去實現,如果需求沒有弄明白,需求設計和開發都是白扯。在設計開發階段共同也是很重要的。在開發過程中遇到不清楚的也要及時提出來。避免隱患和錯誤的產生。
2、需求清楚了之後,就是需求設計的階段了,我的經驗是,功能迭代,我會把舊版流程或成流程圖,對比新的功能上差距,這樣做便於快速了解代碼,快速找到當前功能的缺陷和優化點,更有利於你對新功能的設計和實現,設計時,想好要怎麼實現,採用什麼框架,涉及到哪些風險點、哪裡會出現異常、接口的吞吐量和異常處理,在這裡我要提一點,迭代不能局限了開發者的思想,要敢於去改變老代碼,迭代只會讓代碼越來越多,越來越複雜。對於新手,我覺得我們一定要有敢於去重構的精神。
3、前期的設計完成之後就是寫代碼了,我說幾個我認為重要的點:
寫代碼一定要加注釋,加注釋,加注釋!舉個慄子:比如你用pair<A,B>這種這種數據結構很容易讓人對於其中的A,B的含義混淆,使用的時候一定要加注釋並且命名含義要明確,以免其他人使用的時候混淆。下面這段代碼一層調用勉強知道Pair的含義,如果調用層加深後面想真正知道這個Pair就要扣代碼,一定要注釋清楚。Pair換成UserInfo含義就很清楚了 。代碼不是自己能看懂就夠了!public class Pair<K, V> { private K k; private V v; public static <K, V> Pair of(K k, V v){ Pair<K, V> pair = new Pair<>(); pair.setK(k); pair.setV(v); return pair; } public K getK() { return k; public void setK(K k) { this.k = k; public V getV() { return v; public void setV(V v) { this.v = v; @Override public String toString() { return "Pair{" + "k=" + k + ", v=" + v + '}'; public static void main(String[] args) { String userMaek = "A"; String userStatus = "open"; Pair<String, String> statusPair = getUserInfo(userMaek, userStatus); /** * 獲取用戶狀態 * @param userMark 用戶打標 * @param userStatus 用戶狀態 * @return */ public static Pair<String, String> getUserInfo(String userMark, String userStatus){ return Pair.of(userMark, userStatus);}/*** 用戶信息*/class UserInfo{ String userMaek; String userStatusp;注意日誌的處理,好的日誌在定位問題的時候能發揮高效的作用。日誌並不是越多越好,過多無用的日誌會佔用伺服器資源,造成浪費。異常處理,異常處理是一種藝術,什麼樣的異常應該捕獲,什麼樣的異常可以拋出,這個需要開發者仔細衡量,千萬不要把異常棧打出來,這樣錯誤日誌過多,不僅耗費資源,而且不美觀,在線上報警收到郵件的時候會嚇到你!函數功能單一,實現功能解耦,一個方法的代碼不能過長,建議不要超過30行,方法冗長不易解讀和維護。希望別人在看到你的代碼不要跟你說這句話!
4、代碼寫完了,要再問問自己,看著代碼多思考,這裡還能優化嗎?這裡能嗎?這裡呢?努力讓自己的代碼精簡,易讀,易維護。
5、作為一個優秀的程式設計師,一定要會寫checklist,要會寫單測,單測是為了向別人證明你寫的代碼是正確的。這也是一個優秀程式設計師必備的素質。
6、需求上線後,注意觀察監控和數據,做好線上維護,遇到線上問題的時候,不要在心裡想"完了,完了",心慌解決不了問題,一定要淡定,解決不了要尋求幫助,及早定位和解決問題。
7、保持owner心態你會做得更好!
總結
說了這麼多,也是對自己現階段的工作和學習生活的一個總結,最後給自己和大家一句話:保持學習力,快樂學習,快樂工作!送大家一個神奇的護身符,貼在電腦上,親測有效!!!上線沒bug!!!